surfcode 0.0.0-stage → 0.1.1

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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -2
  3. package/assets/surfcode-logo.gif +0 -0
  4. package/dist/cli/auth.js +315 -0
  5. package/dist/cli/auth.js.map +1 -0
  6. package/dist/cli/config.js +228 -0
  7. package/dist/cli/config.js.map +1 -0
  8. package/dist/cli/headless.js +355 -0
  9. package/dist/cli/headless.js.map +1 -0
  10. package/dist/cli/inspect.js +462 -0
  11. package/dist/cli/inspect.js.map +1 -0
  12. package/dist/cli/interactive.js +130 -0
  13. package/dist/cli/interactive.js.map +1 -0
  14. package/dist/cli/sessions.js +170 -0
  15. package/dist/cli/sessions.js.map +1 -0
  16. package/dist/cli/sync.js +190 -0
  17. package/dist/cli/sync.js.map +1 -0
  18. package/dist/cli/util.js +345 -0
  19. package/dist/cli/util.js.map +1 -0
  20. package/dist/cli.js +485 -0
  21. package/dist/cli.js.map +1 -0
  22. package/dist/core/agent.js +298 -0
  23. package/dist/core/agent.js.map +1 -0
  24. package/dist/core/agents.js +55 -0
  25. package/dist/core/agents.js.map +1 -0
  26. package/dist/core/auth.js +107 -0
  27. package/dist/core/auth.js.map +1 -0
  28. package/dist/core/catalog.js +306 -0
  29. package/dist/core/catalog.js.map +1 -0
  30. package/dist/core/chat/anthropic.js +222 -0
  31. package/dist/core/chat/anthropic.js.map +1 -0
  32. package/dist/core/chat/common.js +367 -0
  33. package/dist/core/chat/common.js.map +1 -0
  34. package/dist/core/chat/google.js +180 -0
  35. package/dist/core/chat/google.js.map +1 -0
  36. package/dist/core/chat/index.js +80 -0
  37. package/dist/core/chat/index.js.map +1 -0
  38. package/dist/core/chat/openai.js +164 -0
  39. package/dist/core/chat/openai.js.map +1 -0
  40. package/dist/core/chat/types.js +2 -0
  41. package/dist/core/chat/types.js.map +1 -0
  42. package/dist/core/clipboard.js +34 -0
  43. package/dist/core/clipboard.js.map +1 -0
  44. package/dist/core/compact.js +39 -0
  45. package/dist/core/compact.js.map +1 -0
  46. package/dist/core/config.js +211 -0
  47. package/dist/core/config.js.map +1 -0
  48. package/dist/core/delegate.js +184 -0
  49. package/dist/core/delegate.js.map +1 -0
  50. package/dist/core/effort.js +80 -0
  51. package/dist/core/effort.js.map +1 -0
  52. package/dist/core/errors.js +32 -0
  53. package/dist/core/errors.js.map +1 -0
  54. package/dist/core/free.js +21 -0
  55. package/dist/core/free.js.map +1 -0
  56. package/dist/core/github.js +445 -0
  57. package/dist/core/github.js.map +1 -0
  58. package/dist/core/paths.js +51 -0
  59. package/dist/core/paths.js.map +1 -0
  60. package/dist/core/prompt.js +95 -0
  61. package/dist/core/prompt.js.map +1 -0
  62. package/dist/core/provider.js +298 -0
  63. package/dist/core/provider.js.map +1 -0
  64. package/dist/core/session.js +159 -0
  65. package/dist/core/session.js.map +1 -0
  66. package/dist/core/sync.js +126 -0
  67. package/dist/core/sync.js.map +1 -0
  68. package/dist/core/types.js +2 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/core/usage.js +127 -0
  71. package/dist/core/usage.js.map +1 -0
  72. package/dist/core/workspace.js +70 -0
  73. package/dist/core/workspace.js.map +1 -0
  74. package/dist/data/models.json +1 -0
  75. package/dist/sync/server.js +179 -0
  76. package/dist/sync/server.js.map +1 -0
  77. package/dist/tools/diff.js +21 -0
  78. package/dist/tools/diff.js.map +1 -0
  79. package/dist/tools/files.js +227 -0
  80. package/dist/tools/files.js.map +1 -0
  81. package/dist/tools/github.js +238 -0
  82. package/dist/tools/github.js.map +1 -0
  83. package/dist/tools/index.js +34 -0
  84. package/dist/tools/index.js.map +1 -0
  85. package/dist/tools/search.js +231 -0
  86. package/dist/tools/search.js.map +1 -0
  87. package/dist/tools/shell.js +118 -0
  88. package/dist/tools/shell.js.map +1 -0
  89. package/dist/tools/todos.js +50 -0
  90. package/dist/tools/todos.js.map +1 -0
  91. package/dist/tools/webfetch.js +108 -0
  92. package/dist/tools/webfetch.js.map +1 -0
  93. package/dist/tui/App.js +2984 -0
  94. package/dist/tui/App.js.map +1 -0
  95. package/dist/tui/ansi.js +151 -0
  96. package/dist/tui/ansi.js.map +1 -0
  97. package/dist/tui/commands.js +61 -0
  98. package/dist/tui/commands.js.map +1 -0
  99. package/dist/tui/explorer.js +152 -0
  100. package/dist/tui/explorer.js.map +1 -0
  101. package/dist/tui/icons.js +21 -0
  102. package/dist/tui/icons.js.map +1 -0
  103. package/dist/tui/layout.js +324 -0
  104. package/dist/tui/layout.js.map +1 -0
  105. package/dist/tui/markdown.js +355 -0
  106. package/dist/tui/markdown.js.map +1 -0
  107. package/dist/tui/overlays.js +316 -0
  108. package/dist/tui/overlays.js.map +1 -0
  109. package/dist/tui/render.js +234 -0
  110. package/dist/tui/render.js.map +1 -0
  111. package/dist/tui/theme.js +148 -0
  112. package/dist/tui/theme.js.map +1 -0
  113. package/dist/tui/types.js +73 -0
  114. package/dist/tui/types.js.map +1 -0
  115. package/dist/version.js +3 -0
  116. package/dist/version.js.map +1 -0
  117. package/package.json +75 -4
@@ -0,0 +1,148 @@
1
+ const AURORA = {
2
+ name: 'aurora',
3
+ label: 'Aurora',
4
+ description: 'deep blue, ice, and electric cyan',
5
+ accent: '#60A5FA',
6
+ accent2: '#38BDF8',
7
+ accent3: '#22D3EE',
8
+ text: '#E2E8F0',
9
+ muted: '#94A3B8',
10
+ dim: '#64748B',
11
+ faint: '#475569',
12
+ border: '#24344D',
13
+ borderBright: '#3B82F6',
14
+ user: '#93C5FD',
15
+ assistant: '#BFDBFE',
16
+ success: '#4ADE80',
17
+ warning: '#FBBF24',
18
+ error: '#FB7185',
19
+ code: '#93C5FD',
20
+ codeBorder: '#1E3A5F',
21
+ thinking: '#7C8AA5',
22
+ gradient: ['#1D4ED8', '#2563EB', '#0EA5E9', '#7DD3FC']
23
+ };
24
+ const DARK = {
25
+ name: 'dark',
26
+ label: 'Dark',
27
+ description: 'pure black canvas with electric blue and vivid accents',
28
+ background: '#000000',
29
+ accent: '#60A5FA',
30
+ accent2: '#A78BFA',
31
+ accent3: '#22D3EE',
32
+ text: '#F8FAFC',
33
+ muted: '#CBD5E1',
34
+ dim: '#94A3B8',
35
+ faint: '#64748B',
36
+ border: '#334155',
37
+ borderBright: '#60A5FA',
38
+ user: '#5EEAD4',
39
+ assistant: '#C4B5FD',
40
+ success: '#4ADE80',
41
+ warning: '#FBBF24',
42
+ error: '#FB7185',
43
+ code: '#F9A8D4',
44
+ codeBorder: '#831843',
45
+ thinking: '#A5B4FC',
46
+ gradient: ['#2563EB', '#3B82F6', '#22D3EE', '#A78BFA']
47
+ };
48
+ const EMBER = {
49
+ name: 'ember',
50
+ label: 'Ember',
51
+ description: 'warm orange sunsets over dark water',
52
+ accent: '#FB923C',
53
+ accent2: '#F43F5E',
54
+ accent3: '#FDE047',
55
+ text: '#F5E9E2',
56
+ muted: '#C4A99A',
57
+ dim: '#8F7466',
58
+ faint: '#634F44',
59
+ border: '#4A342A',
60
+ borderBright: '#6B4A3A',
61
+ user: '#FDBA74',
62
+ assistant: '#FDA4AF',
63
+ success: '#86EFAC',
64
+ warning: '#FDE047',
65
+ error: '#FB7185',
66
+ code: '#FDBA74',
67
+ codeBorder: '#5C3326',
68
+ thinking: '#B08C7A',
69
+ gradient: ['#F97316', '#F43F5E', '#FDE047']
70
+ };
71
+ const FOREST = {
72
+ name: 'forest',
73
+ label: 'Forest',
74
+ description: 'moss, mint, and quiet terminal energy',
75
+ accent: '#6EE7B7',
76
+ accent2: '#34D399',
77
+ accent3: '#A3E635',
78
+ text: '#E4EFE8',
79
+ muted: '#9CB8A8',
80
+ dim: '#6B8577',
81
+ faint: '#4B6156',
82
+ border: '#29453A',
83
+ borderBright: '#3C5F50',
84
+ user: '#5EEAD4',
85
+ assistant: '#86EFAC',
86
+ success: '#4ADE80',
87
+ warning: '#FACC15',
88
+ error: '#FB7185',
89
+ code: '#A7F3D0',
90
+ codeBorder: '#1F4A3A',
91
+ thinking: '#82A895',
92
+ gradient: ['#34D399', '#22D3EE', '#A3E635']
93
+ };
94
+ const VIOLET = {
95
+ name: 'violet',
96
+ label: 'Violet',
97
+ description: 'electric lilac with synthwave edges',
98
+ accent: '#C084FC',
99
+ accent2: '#818CF8',
100
+ accent3: '#F472B6',
101
+ text: '#ECE9FF',
102
+ muted: '#A99BC7',
103
+ dim: '#7C6F99',
104
+ faint: '#594F70',
105
+ border: '#3B2D56',
106
+ borderBright: '#58437A',
107
+ user: '#D8B4FE',
108
+ assistant: '#A5B4FC',
109
+ success: '#5EEAD4',
110
+ warning: '#FDE047',
111
+ error: '#FB7185',
112
+ code: '#E9D5FF',
113
+ codeBorder: '#4A2D6A',
114
+ thinking: '#A898C7',
115
+ gradient: ['#C084FC', '#818CF8', '#F472B6']
116
+ };
117
+ const MONO = {
118
+ name: 'mono',
119
+ label: 'Mono',
120
+ description: 'ink, graphite, and clean lines',
121
+ accent: '#F1F5F9',
122
+ accent2: '#CBD5E1',
123
+ accent3: '#94A3B8',
124
+ text: '#E2E8F0',
125
+ muted: '#A1AAB8',
126
+ dim: '#78828F',
127
+ faint: '#53606D',
128
+ border: '#39434F',
129
+ borderBright: '#56616E',
130
+ user: '#E2E8F0',
131
+ assistant: '#CBD5E1',
132
+ success: '#A3E635',
133
+ warning: '#FDE047',
134
+ error: '#FB7185',
135
+ code: '#F1F5F9',
136
+ codeBorder: '#3D4652',
137
+ thinking: '#8B96A3',
138
+ gradient: ['#F8FAFC', '#CBD5E1', '#64748B']
139
+ };
140
+ export const THEMES = [AURORA, DARK, EMBER, FOREST, VIOLET, MONO];
141
+ export function getTheme(name) {
142
+ return THEMES.find((theme) => theme.name === name || theme.label.toLowerCase() === name.toLowerCase()) ?? AURORA;
143
+ }
144
+ export function nextTheme(name, direction = 1) {
145
+ const index = Math.max(0, THEMES.findIndex((theme) => theme.name === getTheme(name).name));
146
+ return THEMES[(index + direction + THEMES.length) % THEMES.length] ?? AURORA;
147
+ }
148
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ export function timelineFromMessages(messages) {
2
+ const timeline = [];
3
+ let counter = 0;
4
+ for (const message of messages) {
5
+ if (message.role === 'user') {
6
+ timeline.push({
7
+ id: `item_${counter++}`,
8
+ type: 'user',
9
+ content: message.content
10
+ });
11
+ continue;
12
+ }
13
+ if (message.role === 'assistant') {
14
+ const previous = timeline[timeline.length - 1];
15
+ const target = previous?.type === 'assistant'
16
+ ? previous
17
+ : (() => {
18
+ const item = {
19
+ id: `item_${counter++}`,
20
+ type: 'assistant',
21
+ content: '',
22
+ toolViews: []
23
+ };
24
+ timeline.push(item);
25
+ return item;
26
+ })();
27
+ if (message.content) {
28
+ const hasTools = (message.toolCalls?.length ?? 0) > 0;
29
+ if (hasTools) {
30
+ target.preamble = target.preamble
31
+ ? `${target.preamble}\n\n${message.content}`
32
+ : message.content;
33
+ }
34
+ else {
35
+ target.content = target.content ? `${target.content}\n\n${message.content}` : message.content;
36
+ }
37
+ }
38
+ if (message.reasoning) {
39
+ target.reasoning = target.reasoning ? `${target.reasoning}\n\n${message.reasoning}` : message.reasoning;
40
+ }
41
+ for (const call of message.toolCalls ?? []) {
42
+ target.toolViews ??= [];
43
+ if (!target.toolViews.some((view) => view.call.id === call.id)) {
44
+ target.toolViews.push({ call });
45
+ }
46
+ }
47
+ continue;
48
+ }
49
+ const previous = timeline[timeline.length - 1];
50
+ if (previous?.type === 'assistant') {
51
+ const view = previous.toolViews?.find((entry) => entry.call.id === message.toolCallId);
52
+ if (view) {
53
+ view.result = {
54
+ output: message.content,
55
+ isError: message.isError,
56
+ display: { summary: message.isError ? 'error' : undefined }
57
+ };
58
+ view.pending = false;
59
+ }
60
+ }
61
+ }
62
+ return timeline;
63
+ }
64
+ export function appendAgentTimeline(timeline, newMessages, startedAt, modelName) {
65
+ const grouped = timelineFromMessages(newMessages).filter((item) => item.type !== 'user');
66
+ if (grouped.length === 0)
67
+ return timeline;
68
+ const assistant = grouped[0];
69
+ assistant.durationMs = Date.now() - startedAt;
70
+ assistant.modelName = modelName;
71
+ return [...timeline, assistant];
72
+ }
73
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAoCA,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE,EAAE,QAAQ,OAAO,EAAE,EAAE;gBACvB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,MAAM,GACV,QAAQ,EAAE,IAAI,KAAK,WAAW;gBAC5B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,IAAI,GAAiB;wBACzB,EAAE,EAAE,QAAQ,OAAO,EAAE,EAAE;wBACvB,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,EAAE;wBACX,SAAS,EAAE,EAAE;qBACd,CAAC;oBACF,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,EAAE,CAAC;YACX,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;wBAC/B,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE;wBAC5C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBAChG,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,OAAO,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;YAC1G,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;gBAC3C,MAAM,CAAC,SAAS,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC/D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,QAAQ,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;YACvF,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG;oBACZ,MAAM,EAAE,OAAO,CAAC,OAAO;oBACvB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE;iBAC5D,CAAC;gBACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAwB,EACxB,WAA0B,EAC1B,SAAiB,EACjB,SAAkB;IAElB,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC9B,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const VERSION = '0.1.0';
2
+ export const APP_NAME = 'SurfCode';
3
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,77 @@
1
1
  {
2
2
  "name": "surfcode",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.1",
4
+ "description": "SurfCode — a beautiful, provider-agnostic AI coding agent for your terminal.",
5
+ "type": "module",
6
+ "bin": {
7
+ "surf": "dist/cli.js",
8
+ "surfcode": "dist/cli.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "assets",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "engines": {
17
+ "node": ">=22.0.0"
18
+ },
19
+ "scripts": {
20
+ "dev": "tsx src/cli.tsx",
21
+ "build": "tsc -p tsconfig.build.json && node scripts/copy-assets.mjs",
22
+ "typecheck": "tsc -p tsconfig.json --noEmit",
23
+ "test": "tsx --test test/*.test.ts",
24
+ "models:update": "node scripts/update-models.mjs",
25
+ "logo:render": "bash scripts/render-logo.sh",
26
+ "prepare": "npm run build",
27
+ "prepublishOnly": "npm run typecheck && npm test && npm run build"
28
+ },
29
+ "keywords": [
30
+ "ai",
31
+ "cli",
32
+ "coding-agent",
33
+ "terminal",
34
+ "tui",
35
+ "llm",
36
+ "openai",
37
+ "anthropic",
38
+ "gemini",
39
+ "provider-agnostic"
40
+ ],
41
+ "author": "Geetank",
42
+ "license": "MIT",
43
+ "homepage": "https://github.com/Official-SurfCode/surfcode#readme",
44
+ "bugs": {
45
+ "url": "https://github.com/Official-SurfCode/surfcode/issues"
46
+ },
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "https://github.com/Official-SurfCode/surfcode.git"
50
+ },
51
+ "dependencies": {
52
+ "chalk": "^6.0.1",
53
+ "cli-highlight": "^2.1.11",
54
+ "cli-truncate": "^6.1.1",
55
+ "commander": "^15.0.0",
56
+ "diff": "^9.0.0",
57
+ "env-paths": "^4.0.0",
58
+ "html-to-text": "^10.0.1",
59
+ "ignore": "^7.0.13",
60
+ "ink": "^8.0.0",
61
+ "jsonc-parser": "^3.3.1",
62
+ "marked": "^18.1.1",
63
+ "react": "^19.3.1",
64
+ "string-width": "^8.3.0",
65
+ "strip-ansi": "^7.2.0",
66
+ "tinyglobby": "^0.2.17",
67
+ "wrap-ansi": "^10.0.2",
68
+ "zod": "^4.6.7"
69
+ },
70
+ "devDependencies": {
71
+ "@types/node": "^24.19.2",
72
+ "@types/react": "^19.3.0",
73
+ "ink-testing-library": "^4.0.0",
74
+ "tsx": "^4.23.15",
75
+ "typescript": "^5.9.3"
76
+ }
77
+ }