@vybestack/llxprt-code 0.8.0-nightly.260111.af7260fe6 → 0.8.0-nightly.260112.d9cf7fbc6

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 (64) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/generated/git-commit.d.ts +1 -1
  3. package/dist/src/generated/git-commit.js +1 -1
  4. package/dist/src/ui/AppContainer.js +24 -0
  5. package/dist/src/ui/AppContainer.js.map +1 -1
  6. package/dist/src/ui/commands/subagentCommand.js +58 -244
  7. package/dist/src/ui/commands/subagentCommand.js.map +1 -1
  8. package/dist/src/ui/commands/test/subagentCommand.schema.test.js +4 -3
  9. package/dist/src/ui/commands/test/subagentCommand.schema.test.js.map +1 -1
  10. package/dist/src/ui/commands/test/subagentCommand.test.js +44 -124
  11. package/dist/src/ui/commands/test/subagentCommand.test.js.map +1 -1
  12. package/dist/src/ui/commands/types.d.ts +33 -2
  13. package/dist/src/ui/commands/types.js.map +1 -1
  14. package/dist/src/ui/components/DialogManager.js +5 -0
  15. package/dist/src/ui/components/DialogManager.js.map +1 -1
  16. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.d.ts +24 -0
  17. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.js +102 -0
  18. package/dist/src/ui/components/SubagentManagement/ProfileAttachmentWizard.js.map +1 -0
  19. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.d.ts +14 -0
  20. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.js +179 -0
  21. package/dist/src/ui/components/SubagentManagement/SubagentCreationWizard.js.map +1 -0
  22. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.d.ts +15 -0
  23. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.js +47 -0
  24. package/dist/src/ui/components/SubagentManagement/SubagentDeleteDialog.js.map +1 -0
  25. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.d.ts +18 -0
  26. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.js +111 -0
  27. package/dist/src/ui/components/SubagentManagement/SubagentEditForm.js.map +1 -0
  28. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.d.ts +19 -0
  29. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.js +137 -0
  30. package/dist/src/ui/components/SubagentManagement/SubagentListMenu.js.map +1 -0
  31. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.d.ts +13 -0
  32. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.js +14 -0
  33. package/dist/src/ui/components/SubagentManagement/SubagentMainMenu.js.map +1 -0
  34. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.d.ts +8 -0
  35. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.js +293 -0
  36. package/dist/src/ui/components/SubagentManagement/SubagentManagerDialog.js.map +1 -0
  37. package/dist/src/ui/components/SubagentManagement/SubagentShowView.d.ts +15 -0
  38. package/dist/src/ui/components/SubagentManagement/SubagentShowView.js +35 -0
  39. package/dist/src/ui/components/SubagentManagement/SubagentShowView.js.map +1 -0
  40. package/dist/src/ui/components/SubagentManagement/index.d.ts +14 -0
  41. package/dist/src/ui/components/SubagentManagement/index.js +15 -0
  42. package/dist/src/ui/components/SubagentManagement/index.js.map +1 -0
  43. package/dist/src/ui/components/SubagentManagement/types.d.ts +109 -0
  44. package/dist/src/ui/components/SubagentManagement/types.js +77 -0
  45. package/dist/src/ui/components/SubagentManagement/types.js.map +1 -0
  46. package/dist/src/ui/contexts/KeypressContext.js +2 -1
  47. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  48. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  49. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  50. package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
  51. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  52. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -0
  53. package/dist/src/ui/hooks/slashCommandProcessor.js +6 -0
  54. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  55. package/dist/src/ui/layouts/DefaultAppLayout.js +2 -0
  56. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  57. package/dist/src/utils/sandbox.d.ts +1 -0
  58. package/dist/src/utils/sandbox.js +22 -20
  59. package/dist/src/utils/sandbox.js.map +1 -1
  60. package/dist/src/utils/sandbox.test.d.ts +6 -0
  61. package/dist/src/utils/sandbox.test.js +176 -0
  62. package/dist/src/utils/sandbox.test.js.map +1 -0
  63. package/dist/tsconfig.build.tsbuildinfo +1 -1
  64. package/package.json +3 -3
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach } from 'vitest';
7
+ import { buildSandboxEnvArgs, getPassthroughEnvVars } from './sandbox.js';
8
+ describe('getPassthroughEnvVars', () => {
9
+ let mockEnv;
10
+ beforeEach(() => {
11
+ mockEnv = {
12
+ PATH: '/usr/bin:/bin',
13
+ HOME: '/home/user',
14
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000',
15
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
16
+ LLXPRT_CODE_WELCOME_CONFIG_PATH: '/config.json',
17
+ TERM_PROGRAM: 'VSCode',
18
+ NODE_ENV: 'test',
19
+ };
20
+ });
21
+ it('should return empty object when no passthrough vars are set', () => {
22
+ const env = {
23
+ PATH: '/usr/bin',
24
+ HOME: '/home/user',
25
+ };
26
+ const result = getPassthroughEnvVars(env);
27
+ expect(result).toEqual({});
28
+ });
29
+ it('should return LLXPRT_CODE_IDE_SERVER_PORT when set', () => {
30
+ const result = getPassthroughEnvVars(mockEnv);
31
+ expect(result).toHaveProperty('LLXPRT_CODE_IDE_SERVER_PORT', '3000');
32
+ });
33
+ it('should return LLXPRT_CODE_IDE_WORKSPACE_PATH when set', () => {
34
+ const result = getPassthroughEnvVars(mockEnv);
35
+ expect(result).toHaveProperty('LLXPRT_CODE_IDE_WORKSPACE_PATH', '/workspace');
36
+ });
37
+ it('should return LLXPRT_CODE_WELCOME_CONFIG_PATH when set', () => {
38
+ const result = getPassthroughEnvVars(mockEnv);
39
+ expect(result).toHaveProperty('LLXPRT_CODE_WELCOME_CONFIG_PATH', '/config.json');
40
+ });
41
+ it('should return TERM_PROGRAM when set', () => {
42
+ const result = getPassthroughEnvVars(mockEnv);
43
+ expect(result).toHaveProperty('TERM_PROGRAM', 'VSCode');
44
+ });
45
+ it('should return all passthrough variables when all are set', () => {
46
+ const result = getPassthroughEnvVars(mockEnv);
47
+ expect(result).toEqual({
48
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000',
49
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
50
+ LLXPRT_CODE_WELCOME_CONFIG_PATH: '/config.json',
51
+ TERM_PROGRAM: 'VSCode',
52
+ });
53
+ });
54
+ it('should ignore passthrough vars with empty string values', () => {
55
+ const env = {
56
+ LLXPRT_CODE_IDE_SERVER_PORT: '',
57
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
58
+ TERM_PROGRAM: 'VSCode',
59
+ };
60
+ const result = getPassthroughEnvVars(env);
61
+ expect(result).toEqual({
62
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
63
+ TERM_PROGRAM: 'VSCode',
64
+ });
65
+ });
66
+ it('should ignore passthrough vars with undefined values', () => {
67
+ const env = {
68
+ LLXPRT_CODE_IDE_SERVER_PORT: undefined,
69
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
70
+ TERM_PROGRAM: 'VSCode',
71
+ };
72
+ const result = getPassthroughEnvVars(env);
73
+ expect(result).toEqual({
74
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
75
+ TERM_PROGRAM: 'VSCode',
76
+ });
77
+ });
78
+ it('should handle special characters in variable values', () => {
79
+ const env = {
80
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000:3001',
81
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/path/to/workspace with spaces',
82
+ TERM_PROGRAM: 'iTerm.app',
83
+ };
84
+ const result = getPassthroughEnvVars(env);
85
+ expect(result).toEqual({
86
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000:3001',
87
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/path/to/workspace with spaces',
88
+ TERM_PROGRAM: 'iTerm.app',
89
+ });
90
+ });
91
+ it('should not mutate the input object', () => {
92
+ const env = { ...mockEnv };
93
+ getPassthroughEnvVars(env);
94
+ expect(env).toEqual(mockEnv);
95
+ });
96
+ it('should return a new object', () => {
97
+ const env = { ...mockEnv };
98
+ const result = getPassthroughEnvVars(env);
99
+ expect(result).not.toBe(env);
100
+ });
101
+ });
102
+ describe('buildSandboxEnvArgs', () => {
103
+ let mockEnv;
104
+ beforeEach(() => {
105
+ mockEnv = {
106
+ PATH: '/usr/bin:/bin',
107
+ HOME: '/home/user',
108
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000',
109
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/workspace',
110
+ LLXPRT_CODE_WELCOME_CONFIG_PATH: '/config.json',
111
+ TERM_PROGRAM: 'VSCode',
112
+ NODE_ENV: 'test',
113
+ };
114
+ });
115
+ it('should return empty array when no passthrough vars are set', () => {
116
+ const env = {
117
+ PATH: '/usr/bin',
118
+ HOME: '/home/user',
119
+ };
120
+ const result = buildSandboxEnvArgs(env);
121
+ expect(result).toEqual([]);
122
+ });
123
+ it('should format passthrough vars as CLI args with --env prefix', () => {
124
+ const result = buildSandboxEnvArgs({
125
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000',
126
+ TERM_PROGRAM: 'VSCode',
127
+ });
128
+ expect(result).toEqual([
129
+ '--env',
130
+ 'LLXPRT_CODE_IDE_SERVER_PORT=3000',
131
+ '--env',
132
+ 'TERM_PROGRAM=VSCode',
133
+ ]);
134
+ });
135
+ it('should include all set passthrough variables', () => {
136
+ const result = buildSandboxEnvArgs(mockEnv);
137
+ expect(result).toEqual([
138
+ '--env',
139
+ 'LLXPRT_CODE_IDE_SERVER_PORT=3000',
140
+ '--env',
141
+ 'LLXPRT_CODE_IDE_WORKSPACE_PATH=/workspace',
142
+ '--env',
143
+ 'LLXPRT_CODE_WELCOME_CONFIG_PATH=/config.json',
144
+ '--env',
145
+ 'TERM_PROGRAM=VSCode',
146
+ ]);
147
+ });
148
+ it('should handle values containing equals signs', () => {
149
+ const result = buildSandboxEnvArgs({
150
+ LLXPRT_CODE_IDE_SERVER_PORT: '3000=3001',
151
+ });
152
+ expect(result).toEqual(['--env', 'LLXPRT_CODE_IDE_SERVER_PORT=3000=3001']);
153
+ });
154
+ it('should handle values with spaces', () => {
155
+ const result = buildSandboxEnvArgs({
156
+ LLXPRT_CODE_IDE_WORKSPACE_PATH: '/path/to/workspace with spaces',
157
+ });
158
+ expect(result).toEqual([
159
+ '--env',
160
+ 'LLXPRT_CODE_IDE_WORKSPACE_PATH=/path/to/workspace with spaces',
161
+ ]);
162
+ });
163
+ it('should not mutate the input object', () => {
164
+ const env = { ...mockEnv };
165
+ const originalEnv = { ...env };
166
+ buildSandboxEnvArgs(env);
167
+ expect(env).toEqual(originalEnv);
168
+ });
169
+ it('should return a new array', () => {
170
+ const env = { ...mockEnv };
171
+ const result1 = buildSandboxEnvArgs(env);
172
+ const result2 = buildSandboxEnvArgs(env);
173
+ expect(result2).not.toBe(result1);
174
+ });
175
+ });
176
+ //# sourceMappingURL=sandbox.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.test.js","sourceRoot":"","sources":["../../../src/utils/sandbox.test.ts"],"names":[],"mappings":"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"}