@qduc/term2 0.9.1 → 0.9.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.
Files changed (89) hide show
  1. package/dist/components/input/PopupManager.d.ts +1 -1
  2. package/dist/components/input/PopupManager.d.ts.map +1 -1
  3. package/dist/components/input/insertions.d.ts +1 -1
  4. package/dist/components/input/insertions.d.ts.map +1 -1
  5. package/dist/components/menu/SettingsValueSelectionMenu.d.ts +1 -1
  6. package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
  7. package/dist/components/menu/SettingsValueSelectionMenu.js +1 -1
  8. package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
  9. package/dist/components/message/CodeContextSearchRenderer.d.ts +8 -0
  10. package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -0
  11. package/dist/components/message/CodeContextSearchRenderer.js +49 -0
  12. package/dist/components/message/CodeContextSearchRenderer.js.map +1 -0
  13. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  14. package/dist/components/message/CommandMessage.js +27 -242
  15. package/dist/components/message/CommandMessage.js.map +1 -1
  16. package/dist/components/message/GrepRenderer.d.ts +8 -0
  17. package/dist/components/message/GrepRenderer.d.ts.map +1 -0
  18. package/dist/components/message/GrepRenderer.js +94 -0
  19. package/dist/components/message/GrepRenderer.js.map +1 -0
  20. package/dist/components/message/ReadFileRenderer.d.ts +8 -0
  21. package/dist/components/message/ReadFileRenderer.d.ts.map +1 -0
  22. package/dist/components/message/ReadFileRenderer.js +53 -0
  23. package/dist/components/message/ReadFileRenderer.js.map +1 -0
  24. package/dist/components/message/WebFetchRenderer.d.ts +8 -0
  25. package/dist/components/message/WebFetchRenderer.d.ts.map +1 -0
  26. package/dist/components/message/WebFetchRenderer.js +46 -0
  27. package/dist/components/message/WebFetchRenderer.js.map +1 -0
  28. package/dist/components/message/WebSearchRenderer.d.ts +8 -0
  29. package/dist/components/message/WebSearchRenderer.d.ts.map +1 -0
  30. package/dist/components/message/WebSearchRenderer.js +35 -0
  31. package/dist/components/message/WebSearchRenderer.js.map +1 -0
  32. package/dist/components/message/useCommandVisibility.d.ts +9 -0
  33. package/dist/components/message/useCommandVisibility.d.ts.map +1 -0
  34. package/dist/components/message/useCommandVisibility.js +25 -0
  35. package/dist/components/message/useCommandVisibility.js.map +1 -0
  36. package/dist/debug-test.d.ts +2 -0
  37. package/dist/debug-test.d.ts.map +1 -0
  38. package/dist/debug-test.js +18 -0
  39. package/dist/debug-test.js.map +1 -0
  40. package/dist/env-setup.js +1 -0
  41. package/dist/env-setup.js.map +1 -1
  42. package/dist/hooks/settings-completion-config.d.ts +26 -0
  43. package/dist/hooks/settings-completion-config.d.ts.map +1 -0
  44. package/dist/hooks/settings-completion-config.js +129 -0
  45. package/dist/hooks/settings-completion-config.js.map +1 -0
  46. package/dist/hooks/settings-completion-logic.d.ts +9 -0
  47. package/dist/hooks/settings-completion-logic.d.ts.map +1 -0
  48. package/dist/hooks/settings-completion-logic.js +82 -0
  49. package/dist/hooks/settings-completion-logic.js.map +1 -0
  50. package/dist/hooks/use-selection.js +1 -1
  51. package/dist/hooks/use-selection.js.map +1 -1
  52. package/dist/hooks/use-settings-completion.d.ts +3 -17
  53. package/dist/hooks/use-settings-completion.d.ts.map +1 -1
  54. package/dist/hooks/use-settings-completion.js +4 -199
  55. package/dist/hooks/use-settings-completion.js.map +1 -1
  56. package/dist/hooks/use-settings-value-completion.d.ts +2 -10
  57. package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
  58. package/dist/hooks/use-settings-value-completion.js +18 -235
  59. package/dist/hooks/use-settings-value-completion.js.map +1 -1
  60. package/dist/lib/tool-invoke.d.ts.map +1 -1
  61. package/dist/lib/tool-invoke.js +2 -29
  62. package/dist/lib/tool-invoke.js.map +1 -1
  63. package/dist/services/settings/setting-schema-utils.d.ts +19 -0
  64. package/dist/services/settings/setting-schema-utils.d.ts.map +1 -0
  65. package/dist/services/settings/setting-schema-utils.js +91 -0
  66. package/dist/services/settings/setting-schema-utils.js.map +1 -0
  67. package/dist/services/settings/settings-schema.d.ts +9 -6
  68. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  69. package/dist/services/settings/settings-schema.js +4 -0
  70. package/dist/services/settings/settings-schema.js.map +1 -1
  71. package/dist/tools/system/shell.d.ts.map +1 -1
  72. package/dist/tools/system/shell.js +1 -0
  73. package/dist/tools/system/shell.js.map +1 -1
  74. package/dist/types/message.d.ts +1 -1
  75. package/dist/types/message.d.ts.map +1 -1
  76. package/dist/utils/conversation/conversation-event-handler.js +4 -4
  77. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  78. package/dist/utils/shell/sandbox/sandbox-policy.d.ts +1 -0
  79. package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
  80. package/dist/utils/shell/sandbox/sandbox-policy.js +4 -3
  81. package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
  82. package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
  83. package/dist/utils/streaming/streaming-session-factory.js +1 -0
  84. package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
  85. package/dist/utils/value-suggestions.d.ts +15 -0
  86. package/dist/utils/value-suggestions.d.ts.map +1 -0
  87. package/dist/utils/value-suggestions.js +266 -0
  88. package/dist/utils/value-suggestions.js.map +1 -0
  89. package/package.json +6 -2
@@ -0,0 +1,94 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { parseGrepOutput } from './command-message-helpers.js';
4
+ import { COLOR_TOOL_OUTPUT } from '../theme.js';
5
+ const COLOR_INFO = 'cyan';
6
+ const COLOR_MUTED = 'gray';
7
+ const COLOR_WARNING = 'yellow';
8
+ const GrepRenderer = ({ output, renderStandardHeader }) => {
9
+ const parsed = parseGrepOutput(output);
10
+ if (!parsed)
11
+ return null;
12
+ const { matchesByFile, note } = parsed;
13
+ const filePaths = Object.keys(matchesByFile);
14
+ const MAX_DISPLAY_MATCHES = 10;
15
+ let displayedMatchesCount = 0;
16
+ let truncatedMatchesCount = 0;
17
+ let truncatedFilesCount = 0;
18
+ const filesToRender = [];
19
+ for (const filePath of filePaths) {
20
+ const matches = matchesByFile[filePath] ?? [];
21
+ if (displayedMatchesCount >= MAX_DISPLAY_MATCHES) {
22
+ truncatedMatchesCount += matches.length;
23
+ truncatedFilesCount++;
24
+ }
25
+ else {
26
+ const remainingSlots = MAX_DISPLAY_MATCHES - displayedMatchesCount;
27
+ if (matches.length <= remainingSlots) {
28
+ filesToRender.push({
29
+ filePath,
30
+ matches,
31
+ truncatedCount: 0,
32
+ });
33
+ displayedMatchesCount += matches.length;
34
+ }
35
+ else {
36
+ filesToRender.push({
37
+ filePath,
38
+ matches: matches.slice(0, remainingSlots),
39
+ truncatedCount: matches.length - remainingSlots,
40
+ });
41
+ displayedMatchesCount += remainingSlots;
42
+ truncatedMatchesCount += matches.length - remainingSlots;
43
+ }
44
+ }
45
+ }
46
+ return (React.createElement(Box, { flexDirection: "column" },
47
+ React.createElement(Box, { marginBottom: 1 }, renderStandardHeader()),
48
+ filesToRender.map((file, fileIdx) => {
49
+ if (file.matches.length === 0)
50
+ return null;
51
+ return (React.createElement(Box, { key: fileIdx, flexDirection: "column", marginBottom: 1 },
52
+ React.createElement(Box, null,
53
+ React.createElement(Text, { color: COLOR_INFO, bold: true }, file.filePath),
54
+ React.createElement(Text, { color: COLOR_MUTED },
55
+ ' ',
56
+ "(",
57
+ file.matches.length,
58
+ " match",
59
+ file.matches.length !== 1 ? 'es' : '',
60
+ file.truncatedCount > 0 ? `, ${file.truncatedCount} truncated` : '',
61
+ ")")),
62
+ React.createElement(Box, { flexDirection: "column", paddingLeft: 2 },
63
+ file.matches.map((match, matchIdx) => {
64
+ const lineNumStr = String(match.lineNum).padStart(4, ' ');
65
+ return (React.createElement(Text, { key: matchIdx },
66
+ React.createElement(Text, { color: COLOR_MUTED, dimColor: true },
67
+ lineNumStr,
68
+ ":",
69
+ ' '),
70
+ React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, match.content)));
71
+ }),
72
+ file.truncatedCount > 0 && (React.createElement(Text, { color: COLOR_MUTED, dimColor: true },
73
+ "... (",
74
+ file.truncatedCount,
75
+ " more match",
76
+ file.truncatedCount !== 1 ? 'es' : '',
77
+ " truncated in this file) ...")))));
78
+ }),
79
+ truncatedMatchesCount > 0 && (React.createElement(Box, { marginTop: 1 },
80
+ React.createElement(Text, { color: COLOR_WARNING },
81
+ "... (",
82
+ truncatedMatchesCount,
83
+ " match",
84
+ truncatedMatchesCount !== 1 ? 'es' : '',
85
+ truncatedFilesCount > 0
86
+ ? ` in ${truncatedFilesCount} more file${truncatedFilesCount !== 1 ? 's' : ''}`
87
+ : '',
88
+ ' ',
89
+ "truncated) ..."))),
90
+ note && (React.createElement(Box, { marginTop: 1 },
91
+ React.createElement(Text, { color: COLOR_WARNING }, note)))));
92
+ };
93
+ export default GrepRenderer;
94
+ //# sourceMappingURL=GrepRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GrepRenderer.js","sourceRoot":"","sources":["../../../source/components/message/GrepRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React, { FC } from 'react';
2
+ type Props = {
3
+ output: string;
4
+ renderStandardHeader: () => React.ReactElement;
5
+ };
6
+ declare const ReadFileRenderer: FC<Props>;
7
+ export default ReadFileRenderer;
8
+ //# sourceMappingURL=ReadFileRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadFileRenderer.d.ts","sourceRoot":"","sources":["../../../source/components/message/ReadFileRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOlC,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;CAChD,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAgE/B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { parseReadFileOutput } from './command-message-helpers.js';
4
+ import { COLOR_TOOL_OUTPUT } from '../theme.js';
5
+ const COLOR_MUTED = 'gray';
6
+ const ReadFileRenderer = ({ output, renderStandardHeader }) => {
7
+ const parsed = parseReadFileOutput(output);
8
+ if (!parsed)
9
+ return null;
10
+ const { filePath: _filePath, totalLines: _totalLines, startLine, endLine: _endLine, contentLines } = parsed;
11
+ const maxContentLines = 10;
12
+ const displayLines = [];
13
+ let truncatedCount = 0;
14
+ if (contentLines.length > maxContentLines + 1) {
15
+ const topCount = maxContentLines - 1;
16
+ for (let i = 0; i < topCount; i++) {
17
+ displayLines.push({ lineNum: startLine + i, content: contentLines[i] ?? '' });
18
+ }
19
+ truncatedCount = contentLines.length - topCount - 1;
20
+ displayLines.push({ lineNum: -1, content: `... (${truncatedCount} lines truncated) ...` });
21
+ displayLines.push({
22
+ lineNum: startLine + contentLines.length - 1,
23
+ content: contentLines[contentLines.length - 1] ?? '',
24
+ });
25
+ }
26
+ else {
27
+ contentLines.forEach((content, i) => {
28
+ displayLines.push({ lineNum: startLine + i, content });
29
+ });
30
+ }
31
+ return (React.createElement(Box, { flexDirection: "column" },
32
+ renderStandardHeader(),
33
+ React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: COLOR_MUTED, paddingX: 1, marginTop: 1 }, displayLines.map((line, idx) => {
34
+ if (line.lineNum === -1) {
35
+ return (React.createElement(Box, { key: idx, flexDirection: "row" },
36
+ React.createElement(Box, { width: 8, flexShrink: 0 },
37
+ React.createElement(Text, { color: COLOR_MUTED, dimColor: true }, ' │ ')),
38
+ React.createElement(Box, { flexGrow: 1 },
39
+ React.createElement(Text, { color: COLOR_MUTED, dimColor: true }, line.content))));
40
+ }
41
+ const lineNumStr = String(line.lineNum).padStart(5, ' ');
42
+ return (React.createElement(Box, { key: idx, flexDirection: "row" },
43
+ React.createElement(Box, { width: 8, flexShrink: 0 },
44
+ React.createElement(Text, { color: COLOR_MUTED, dimColor: true },
45
+ lineNumStr,
46
+ " \u2502",
47
+ ' ')),
48
+ React.createElement(Box, { flexGrow: 1 },
49
+ React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, line.content))));
50
+ }))));
51
+ };
52
+ export default ReadFileRenderer;
53
+ //# sourceMappingURL=ReadFileRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadFileRenderer.js","sourceRoot":"","sources":["../../../source/components/message/ReadFileRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React, { FC } from 'react';
2
+ type Props = {
3
+ output: string;
4
+ renderStandardHeader: () => React.ReactElement;
5
+ };
6
+ declare const WebFetchRenderer: FC<Props>;
7
+ export default WebFetchRenderer;
8
+ //# sourceMappingURL=WebFetchRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebFetchRenderer.d.ts","sourceRoot":"","sources":["../../../source/components/message/WebFetchRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAUlC,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;CAChD,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,KAAK,CA4D/B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { parseWebFetchOutput } from './command-message-helpers.js';
4
+ import { COLOR_TOOL_OUTPUT } from '../theme.js';
5
+ const COLOR_CONTENT = 'white';
6
+ const COLOR_LINK = 'blue';
7
+ const COLOR_MUTED = 'gray';
8
+ const COLOR_WARNING = 'yellow';
9
+ const WebFetchRenderer = ({ output, renderStandardHeader }) => {
10
+ const parsed = parseWebFetchOutput(output);
11
+ if (!parsed)
12
+ return null;
13
+ const { title, url, toc, tempFile, notes, content } = parsed;
14
+ const maxLines = 15;
15
+ const contentLines = content.split('\n');
16
+ let displayContent = content;
17
+ let truncatedCount = 0;
18
+ if (contentLines.length > maxLines + 1) {
19
+ const firstPart = contentLines.slice(0, maxLines).join('\n');
20
+ const lastLine = contentLines[contentLines.length - 1];
21
+ truncatedCount = contentLines.length - maxLines - 1;
22
+ displayContent = `${firstPart}\n\n... (${truncatedCount} lines of content truncated for preview) ...\n\n${lastLine}`;
23
+ }
24
+ return (React.createElement(Box, { flexDirection: "column" },
25
+ renderStandardHeader(),
26
+ title && (React.createElement(Box, { paddingLeft: 2 },
27
+ React.createElement(Text, { color: COLOR_CONTENT, bold: true }, title))),
28
+ React.createElement(Box, { paddingLeft: 2 },
29
+ React.createElement(Text, { color: COLOR_LINK, underline: true }, url)),
30
+ toc && (React.createElement(Box, { flexDirection: "column", borderStyle: "classic", borderColor: COLOR_MUTED, paddingX: 1, marginY: 1, width: 50 },
31
+ React.createElement(Text, { color: COLOR_WARNING, bold: true }, "Table of Contents"),
32
+ React.createElement(Text, { color: COLOR_MUTED }, toc))),
33
+ content && (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: COLOR_MUTED, paddingX: 1, marginTop: 1 },
34
+ React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, displayContent))),
35
+ tempFile && (React.createElement(Box, { marginTop: 1 },
36
+ React.createElement(Text, { color: COLOR_WARNING },
37
+ "Full content saved to:",
38
+ ' ',
39
+ React.createElement(Text, { bold: true, color: COLOR_CONTENT }, tempFile)))),
40
+ notes && (React.createElement(Box, { marginTop: 0.5 },
41
+ React.createElement(Text, { color: COLOR_WARNING },
42
+ "Warning: ",
43
+ notes)))));
44
+ };
45
+ export default WebFetchRenderer;
46
+ //# sourceMappingURL=WebFetchRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebFetchRenderer.js","sourceRoot":"","sources":["../../../source/components/message/WebFetchRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React, { FC } from 'react';
2
+ type Props = {
3
+ output: string;
4
+ renderStandardHeader: () => React.ReactElement;
5
+ };
6
+ declare const WebSearchRenderer: FC<Props>;
7
+ export default WebSearchRenderer;
8
+ //# sourceMappingURL=WebSearchRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSearchRenderer.d.ts","sourceRoot":"","sources":["../../../source/components/message/WebSearchRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAWlC,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,KAAK,CAAC,YAAY,CAAC;CAChD,CAAC;AAEF,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CA2ChC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { parseWebSearchOutput } from './command-message-helpers.js';
4
+ import { COLOR_TOOL_OUTPUT } from '../theme.js';
5
+ const COLOR_WARNING = 'yellow';
6
+ const COLOR_INFO = 'cyan';
7
+ const COLOR_CONTENT = 'white';
8
+ const COLOR_LINK = 'blue';
9
+ const COLOR_MUTED = 'gray';
10
+ const WebSearchRenderer = ({ output, renderStandardHeader }) => {
11
+ const parsed = parseWebSearchOutput(output);
12
+ if (!parsed)
13
+ return null;
14
+ const { answer, results } = parsed;
15
+ return (React.createElement(Box, { flexDirection: "column" },
16
+ React.createElement(Box, { marginBottom: 1 }, renderStandardHeader()),
17
+ answer && (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: COLOR_WARNING, paddingX: 1, marginBottom: 1 },
18
+ React.createElement(Text, { color: COLOR_WARNING, bold: true }, "Answer Summary"),
19
+ React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, answer))),
20
+ results && results.length > 0 && (React.createElement(Box, { flexDirection: "column" },
21
+ React.createElement(Text, { color: COLOR_INFO, bold: true }, "Search Results:"),
22
+ results.map((res, idx) => (React.createElement(Box, { key: idx, flexDirection: "column", marginTop: 1, paddingLeft: 2 },
23
+ React.createElement(Text, { bold: true, color: COLOR_CONTENT },
24
+ idx + 1,
25
+ ". ",
26
+ res.title),
27
+ React.createElement(Text, { color: COLOR_LINK, underline: true }, res.url),
28
+ res.published && (React.createElement(Text, { color: COLOR_MUTED, dimColor: true },
29
+ "Published: ",
30
+ res.published)),
31
+ React.createElement(Box, { marginTop: 1 },
32
+ React.createElement(Text, { color: COLOR_TOOL_OUTPUT }, res.content)))))))));
33
+ };
34
+ export default WebSearchRenderer;
35
+ //# sourceMappingURL=WebSearchRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSearchRenderer.js","sourceRoot":"","sources":["../../../source/components/message/WebSearchRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,aAAa,GAAG,OAAO,CAAC;AAC9B,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,WAAW,GAAG,MAAM,CAAC;AAO3B,MAAM,iBAAiB,GAAc,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE;IACxE,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAQ,CAAC;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACnC,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,IAAG,oBAAoB,EAAE,CAAO;QACnD,MAAM,IAAI,CACT,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;YACtG,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa,EAAE,IAAI,2BAEzB;YACP,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,IAAG,MAAM,CAAQ,CAC3C,CACP;QACA,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;YACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,EAAE,IAAI,4BAEtB;YACN,OAAO,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE,CAAC,CACtC,oBAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;gBAChE,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,aAAa;oBAC5B,GAAG,GAAG,CAAC;;oBAAI,GAAG,CAAC,KAAK,CAChB;gBACP,oBAAC,IAAI,IAAC,KAAK,EAAE,UAAU,EAAE,SAAS,UAC/B,GAAG,CAAC,GAAG,CACH;gBACN,GAAG,CAAC,SAAS,IAAI,CAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,WAAW,EAAE,QAAQ;;oBACpB,GAAG,CAAC,SAAS,CACpB,CACR;gBACD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;oBACf,oBAAC,IAAI,IAAC,KAAK,EAAE,iBAAiB,IAAG,GAAG,CAAC,OAAO,CAAQ,CAChD,CACF,CACP,CAAC,CACE,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Delays visibility of a running command message by 1 second to avoid flicker
3
+ * for fast-completing operations. Completed/failed messages are shown immediately.
4
+ */
5
+ export declare function useCommandVisibility(status: string | undefined): {
6
+ isVisible: boolean;
7
+ isRunning: boolean;
8
+ };
9
+ //# sourceMappingURL=useCommandVisibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommandVisibility.d.ts","sourceRoot":"","sources":["../../../source/components/message/useCommandVisibility.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAsB3G"}
@@ -0,0 +1,25 @@
1
+ import { useState, useEffect } from 'react';
2
+ /**
3
+ * Delays visibility of a running command message by 1 second to avoid flicker
4
+ * for fast-completing operations. Completed/failed messages are shown immediately.
5
+ */
6
+ export function useCommandVisibility(status) {
7
+ const isRunning = status === 'pending' || status === 'running';
8
+ const [isVisible, setIsVisible] = useState(!isRunning);
9
+ useEffect(() => {
10
+ if (!isRunning) {
11
+ if (!isVisible) {
12
+ // eslint-disable-next-line react-hooks/set-state-in-effect -- show-after-delay is an inherent side effect
13
+ setIsVisible(true);
14
+ }
15
+ return;
16
+ }
17
+ const timer = setTimeout(() => {
18
+ setIsVisible(true);
19
+ }, 1000);
20
+ return () => clearTimeout(timer);
21
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- isVisible drives show-after-delay which is inherently side-effect; adding isVisible would cause a re-render loop
22
+ }, [isRunning]);
23
+ return { isVisible, isRunning };
24
+ }
25
+ //# sourceMappingURL=useCommandVisibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommandVisibility.js","sourceRoot":"","sources":["../../../source/components/message/useCommandVisibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA0B;IAC7D,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;IAC/D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,0GAA0G;gBAC1G,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,2KAA2K;IAC7K,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=debug-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-test.d.ts","sourceRoot":"","sources":["../source/debug-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { SENSITIVE_SETTINGS, SETTING_KEYS } from './services/settings/settings-service.js';
2
+ console.log('SENSITIVE_SETTINGS:', Object.values(SENSITIVE_SETTINGS));
3
+ console.log('SETTING_KEYS.AGENT_OPENAI_API_KEY:', SETTING_KEYS.AGENT_OPENAI_API_KEY);
4
+ console.log('Match?', Object.values(SENSITIVE_SETTINGS).includes(SETTING_KEYS.AGENT_OPENAI_API_KEY));
5
+ // Check what the mock keys look like
6
+ const MOCK_SETTING_KEYS = {
7
+ AGENT_MODEL: 'agent.model',
8
+ AGENT_OPENROUTER_API_KEY: 'agent.openrouter.apiKey',
9
+ };
10
+ console.log('\nMOCK keys:', Object.values(MOCK_SETTING_KEYS));
11
+ console.log('Sensitive values:', Object.values(SENSITIVE_SETTINGS));
12
+ // Does any mock key match a sensitive key?
13
+ for (const mockVal of Object.values(MOCK_SETTING_KEYS)) {
14
+ if (Object.values(SENSITIVE_SETTINGS).includes(mockVal)) {
15
+ console.log(`MATCH: ${mockVal}`);
16
+ }
17
+ }
18
+ //# sourceMappingURL=debug-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-test.js","sourceRoot":"","sources":["../source/debug-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE3F,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtE,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;AACrF,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAErG,qCAAqC;AACrC,MAAM,iBAAiB,GAAG;IACxB,WAAW,EAAE,aAAa;IAC1B,wBAAwB,EAAE,yBAAyB;CACpD,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC9D,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEpE,2CAA2C;AAC3C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
package/dist/env-setup.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * Sets up global environment variables before any other modules (especially @openai/agents)
3
3
  * are evaluated. This ensures background tracing/telemetry loops are disabled by default.
4
4
  */
5
+ process.env.NODE_ENV ||= 'production';
5
6
  process.env.OPENAI_AGENTS_DISABLE_TRACING = 'true';
6
7
  process.env.AI_SDK_LOG_WARNINGS = 'false';
7
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"env-setup.js","sourceRoot":"","sources":["../source/env-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,MAAM,CAAC;AACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"env-setup.js","sourceRoot":"","sources":["../source/env-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AACtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,MAAM,CAAC;AACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,26 @@
1
+ export type SettingCompletionItem = {
2
+ key: string;
3
+ description?: string;
4
+ currentValue?: string | number | boolean;
5
+ };
6
+ export type SettingsCategory = {
7
+ id: string;
8
+ label: string;
9
+ };
10
+ export declare const SETTINGS_CATEGORIES: SettingsCategory[];
11
+ export declare const SETTING_DESCRIPTIONS: Record<string, string>;
12
+ /**
13
+ * Settings that should be hidden from the UI (not for security, but for UX/workflow)
14
+ * - agent.provider: Can only be changed at the start of a new conversation via model menu
15
+ * - agent.autoApproveProvider: Controlled via model/provider selection workflows, hide from the general settings list
16
+ */
17
+ export declare const HIDDEN_SETTINGS: Set<string>;
18
+ export declare const COMMON_SETTINGS: string[];
19
+ export declare const CATEGORY_KEYS: {
20
+ readonly models: Set<string>;
21
+ readonly safety: Set<string>;
22
+ readonly tools: Set<string>;
23
+ readonly ui: Set<string>;
24
+ };
25
+ export declare const CATEGORY_ORDER: Array<keyof typeof CATEGORY_KEYS>;
26
+ //# sourceMappingURL=settings-completion-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-completion-config.d.ts","sourceRoot":"","sources":["../../source/hooks/settings-completion-config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,EAMjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwCvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAwB1B,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,MAAM,EAInC,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CA6ChB,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,MAAM,OAAO,aAAa,CAAuC,CAAC"}
@@ -0,0 +1,129 @@
1
+ import { SETTING_KEYS } from '../services/settings/settings-service.js';
2
+ export const SETTINGS_CATEGORIES = [
3
+ { id: 'models', label: 'Models' },
4
+ { id: 'safety', label: 'Safety' },
5
+ { id: 'tools', label: 'Tools' },
6
+ { id: 'ui', label: 'UI' },
7
+ { id: 'misc', label: 'Misc' },
8
+ ];
9
+ export const SETTING_DESCRIPTIONS = {
10
+ [SETTING_KEYS.AGENT_MODEL]: 'The AI model to use (e.g. gpt-4, claude-3-opus)',
11
+ [SETTING_KEYS.AGENT_REASONING_EFFORT]: 'Reasoning effort (none|minimal|low|medium|high|xhigh|default)',
12
+ [SETTING_KEYS.AGENT_TEMPERATURE]: 'Model temperature (0-2, controls randomness)',
13
+ [SETTING_KEYS.AGENT_USE_FLEX_SERVICE_TIER]: 'Use OpenAI Flex Service Tier to reduce costs (true|false, OpenAI only)',
14
+ [SETTING_KEYS.AGENT_MENTOR_MODEL]: 'Mentor model to use (optional, enables ask_mentor tool)',
15
+ [SETTING_KEYS.AGENT_MENTOR_PROVIDER]: 'Provider to use for mentor model (openai, openrouter, etc.)',
16
+ [SETTING_KEYS.AGENT_MENTOR_REASONING_EFFORT]: 'Reasoning effort for the mentor model (none|minimal|low|medium|high|xhigh|default)',
17
+ // agent.provider is hidden from UI - it can only be changed via model menu
18
+ [SETTING_KEYS.AGENT_MAX_TURNS]: 'Maximum conversation turns',
19
+ [SETTING_KEYS.AGENT_RETRY_ATTEMPTS]: 'Number of retry attempts for failed requests',
20
+ [SETTING_KEYS.AGENT_MAX_PARALLEL_TOOL_CALLS]: 'Maximum number of tool calls allowed to run at the same time',
21
+ [SETTING_KEYS.SHELL_TIMEOUT]: 'Shell command timeout in milliseconds',
22
+ [SETTING_KEYS.SHELL_MAX_OUTPUT_LINES]: 'Maximum lines of shell output to capture',
23
+ [SETTING_KEYS.SHELL_MAX_OUTPUT_CHARS]: 'Maximum characters of shell output to capture',
24
+ [SETTING_KEYS.UI_HISTORY_SIZE]: 'Number of history items to keep',
25
+ [SETTING_KEYS.UI_DISPLAY_MODE]: 'Display mode for rendering output (standard|concise)',
26
+ [SETTING_KEYS.LOGGING_LOG_LEVEL]: 'Logging level (debug, info, warn, error)',
27
+ [SETTING_KEYS.LOGGING_SUPPRESS_CONSOLE]: 'Suppress console output (true|false) to avoid interfering with Ink UI',
28
+ [SETTING_KEYS.TOOLS_ENABLE_EDIT_HEALING]: 'Use AI to automatically correct failed search_replace operations',
29
+ [SETTING_KEYS.TOOLS_EDIT_HEALING_MODEL]: 'Model to use for edit healing (fast/cheap)',
30
+ [SETTING_KEYS.TOOLS_EDIT_HEALING_PROVIDER]: 'Provider for the edit-healing model (optional)',
31
+ [SETTING_KEYS.SHELL_AUTO_APPROVE_MODE]: 'Shell command auto-approval mode (off|advisory|auto)',
32
+ [SETTING_KEYS.AGENT_AUTO_APPROVE_MODEL]: 'Model to use for auto-approval evaluation (fast/cheap)',
33
+ [SETTING_KEYS.AGENT_AUTO_APPROVE_PROVIDER]: 'Provider for the auto-approval model (optional)',
34
+ [SETTING_KEYS.APP_PLAN_MODE]: 'Plan mode: read-only research and implementation planning (true|false)',
35
+ [SETTING_KEYS.APP_ORCHESTRATOR_MODE]: 'Delegate tool-backed work through subagents (true|false)',
36
+ [SETTING_KEYS.APP_NOTIFICATIONS]: 'Enable desktop notifications when the terminal is unfocused (true|false)',
37
+ [SETTING_KEYS.APP_NOTIFICATIONS_ON_APPROVAL]: 'Notify when the agent needs tool-call approval (true|false)',
38
+ [SETTING_KEYS.APP_NOTIFICATIONS_ON_COMPLETE]: 'Notify when the agent finishes responding (true|false)',
39
+ [SETTING_KEYS.WEB_SEARCH_PROVIDER]: 'Web search provider (tavily, exa)',
40
+ [SETTING_KEYS.APP_SEARCH_VIA_SHELL]: 'Use shell commands (ripgrep/find) for codebase search instead of built-in tools (true|false)',
41
+ [SETTING_KEYS.SHELL_USE_RTK_COMPRESSION]: 'Use RTK (third-party) to compress shell command output; term2 downloads it automatically (true|false)',
42
+ [SETTING_KEYS.SANDBOX_ENABLED]: 'Enable sandbox mode for safer command execution (true|false)',
43
+ [SETTING_KEYS.SANDBOX_READ_POLICY]: 'File read policy for sandbox (standard|strict)',
44
+ [SETTING_KEYS.SANDBOX_ALLOW_READ_EXTRA]: 'Additional paths allowed for sandbox file reads (comma-separated)',
45
+ [SETTING_KEYS.SANDBOX_ALLOW_NETWORKING]: 'Allow sandboxed commands to access the network (true|false)',
46
+ };
47
+ /**
48
+ * Settings that should be hidden from the UI (not for security, but for UX/workflow)
49
+ * - agent.provider: Can only be changed at the start of a new conversation via model menu
50
+ * - agent.autoApproveProvider: Controlled via model/provider selection workflows, hide from the general settings list
51
+ */
52
+ export const HIDDEN_SETTINGS = new Set([
53
+ SETTING_KEYS.AGENT_PROVIDER,
54
+ SETTING_KEYS.AGENT_AUTO_APPROVE_PROVIDER,
55
+ SETTING_KEYS.AGENT_MENTOR_PROVIDER,
56
+ SETTING_KEYS.TOOLS_EDIT_HEALING_PROVIDER,
57
+ SETTING_KEYS.PROVIDER_ORDER,
58
+ SETTING_KEYS.LOGGING_DEBUG,
59
+ SETTING_KEYS.LOGGING_SUPPRESS_CONSOLE,
60
+ SETTING_KEYS.ENV_NODE_ENV,
61
+ SETTING_KEYS.APP_SHELL_PATH,
62
+ SETTING_KEYS.APP_MENTOR_MODE,
63
+ SETTING_KEYS.APP_LITE_MODE,
64
+ SETTING_KEYS.APP_PLAN_MODE,
65
+ SETTING_KEYS.APP_ORCHESTRATOR_MODE,
66
+ SETTING_KEYS.TOOLS_LOG_FILE_OPS,
67
+ SETTING_KEYS.DEBUG_BASH_TOOL,
68
+ SETTING_KEYS.SSH_ENABLED,
69
+ SETTING_KEYS.SSH_HOST,
70
+ SETTING_KEYS.SSH_PORT,
71
+ SETTING_KEYS.SSH_USERNAME,
72
+ SETTING_KEYS.SSH_REMOTE_DIR,
73
+ SETTING_KEYS.AGENT_SUBAGENT_EXPLORER_PROVIDER,
74
+ SETTING_KEYS.AGENT_SUBAGENT_WORKER_PROVIDER,
75
+ SETTING_KEYS.AGENT_SUBAGENT_RESEARCHER_PROVIDER,
76
+ ]);
77
+ export const COMMON_SETTINGS = [
78
+ SETTING_KEYS.AGENT_MODEL,
79
+ SETTING_KEYS.AGENT_REASONING_EFFORT,
80
+ SETTING_KEYS.AGENT_TEMPERATURE,
81
+ ];
82
+ export const CATEGORY_KEYS = {
83
+ models: new Set([
84
+ SETTING_KEYS.AGENT_MODEL,
85
+ SETTING_KEYS.AGENT_REASONING_EFFORT,
86
+ SETTING_KEYS.AGENT_TEMPERATURE,
87
+ SETTING_KEYS.AGENT_MENTOR_MODEL,
88
+ SETTING_KEYS.AGENT_MENTOR_REASONING_EFFORT,
89
+ SETTING_KEYS.AGENT_USE_FLEX_SERVICE_TIER,
90
+ SETTING_KEYS.AGENT_SUBAGENT_EXPLORER_MODEL,
91
+ SETTING_KEYS.AGENT_SUBAGENT_EXPLORER_REASONING_EFFORT,
92
+ SETTING_KEYS.AGENT_SUBAGENT_WORKER_MODEL,
93
+ SETTING_KEYS.AGENT_SUBAGENT_WORKER_REASONING_EFFORT,
94
+ SETTING_KEYS.AGENT_SUBAGENT_RESEARCHER_MODEL,
95
+ SETTING_KEYS.AGENT_SUBAGENT_RESEARCHER_REASONING_EFFORT,
96
+ ]),
97
+ safety: new Set([
98
+ SETTING_KEYS.SHELL_AUTO_APPROVE_MODE,
99
+ SETTING_KEYS.AGENT_AUTO_APPROVE_MODEL,
100
+ SETTING_KEYS.SANDBOX_ENABLED,
101
+ SETTING_KEYS.SANDBOX_READ_POLICY,
102
+ SETTING_KEYS.SANDBOX_ALLOW_READ_EXTRA,
103
+ SETTING_KEYS.SANDBOX_ALLOW_NETWORKING,
104
+ ]),
105
+ tools: new Set([
106
+ SETTING_KEYS.SHELL_TIMEOUT,
107
+ SETTING_KEYS.SHELL_MAX_OUTPUT_LINES,
108
+ SETTING_KEYS.SHELL_MAX_OUTPUT_CHARS,
109
+ SETTING_KEYS.SHELL_USE_RTK_COMPRESSION,
110
+ SETTING_KEYS.WEB_SEARCH_PROVIDER,
111
+ SETTING_KEYS.WEB_SEARCH_TAVILY_API_KEY,
112
+ SETTING_KEYS.WEB_SEARCH_EXA_API_KEY,
113
+ SETTING_KEYS.APP_SEARCH_VIA_SHELL,
114
+ SETTING_KEYS.TOOLS_ENABLE_EDIT_HEALING,
115
+ SETTING_KEYS.TOOLS_EDIT_HEALING_MODEL,
116
+ ]),
117
+ ui: new Set([
118
+ SETTING_KEYS.UI_HISTORY_SIZE,
119
+ SETTING_KEYS.UI_PASTE_THRESHOLD,
120
+ SETTING_KEYS.UI_DISPLAY_MODE,
121
+ SETTING_KEYS.LOGGING_LOG_LEVEL,
122
+ SETTING_KEYS.LOGGING_DISABLE,
123
+ SETTING_KEYS.APP_NOTIFICATIONS,
124
+ SETTING_KEYS.APP_NOTIFICATIONS_ON_APPROVAL,
125
+ SETTING_KEYS.APP_NOTIFICATIONS_ON_COMPLETE,
126
+ ]),
127
+ };
128
+ export const CATEGORY_ORDER = ['models', 'safety', 'tools', 'ui'];
129
+ //# sourceMappingURL=settings-completion-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-completion-config.js","sourceRoot":"","sources":["../../source/hooks/settings-completion-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type SettingCompletionItem, type SettingsCategory } from './settings-completion-config.js';
2
+ export declare function getSettingCategory(key: string): SettingsCategory;
3
+ export declare function buildSettingsList(settingKeys: Record<string, string>, descriptions: Record<string, string>, excludeSensitive?: boolean, getCurrentValue?: (key: string) => string | number | boolean | undefined): SettingCompletionItem[];
4
+ export declare function filterSettingsByQuery(settings: SettingCompletionItem[], query: string, maxResults?: number): SettingCompletionItem[];
5
+ export declare function filterSettingsByCategory<T extends {
6
+ key: string;
7
+ }>(settings: T[], categoryId: string): T[];
8
+ export declare function clampIndex(currentIndex: number, arrayLength: number): number;
9
+ //# sourceMappingURL=settings-completion-logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-completion-logic.d.ts","sourceRoot":"","sources":["../../source/hooks/settings-completion-logic.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,iCAAiC,CAAC;AAQzC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAQhE;AA4BD,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,gBAAgB,GAAE,OAAc,EAChC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GACvE,qBAAqB,EAAE,CAWzB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAAE,EACjC,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAW,GACtB,qBAAqB,EAAE,CAyBzB;AAED,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE,CAE1G;AAED,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAK5E"}