@codeyam/codeyam-cli 0.1.0-staging.30dc541 → 0.1.0-staging.39719f5

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 (159) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +2 -2
  4. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
  5. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  6. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  7. package/analyzer-template/packages/analyze/index.ts +4 -1
  8. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  9. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  10. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  11. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  12. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  14. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  15. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  16. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  17. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +235 -58
  18. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +170 -26
  19. package/analyzer-template/packages/aws/package.json +1 -1
  20. package/analyzer-template/packages/database/package.json +1 -1
  21. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +19 -15
  22. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  23. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  24. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +1 -1
  25. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  26. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  27. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  28. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  29. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  30. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  31. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  32. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  33. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  34. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  35. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  36. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  37. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  38. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +63 -0
  39. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  40. package/codeyam-cli/src/commands/editor.js +775 -125
  41. package/codeyam-cli/src/commands/editor.js.map +1 -1
  42. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +1248 -16
  43. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  44. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +11 -3
  45. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  46. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +20 -0
  47. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  48. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +33 -1
  49. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  50. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  51. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  52. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  53. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  54. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  55. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  56. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +217 -0
  57. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  58. package/codeyam-cli/src/utils/analysisRunner.js +36 -7
  59. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  60. package/codeyam-cli/src/utils/analyzer.js +11 -1
  61. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  62. package/codeyam-cli/src/utils/editorAudit.js +280 -15
  63. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  64. package/codeyam-cli/src/utils/editorPreview.js +5 -3
  65. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  66. package/codeyam-cli/src/utils/editorScenarios.js +36 -4
  67. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  68. package/codeyam-cli/src/utils/entityChangeStatus.server.js +16 -0
  69. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  70. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  71. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  72. package/codeyam-cli/src/utils/queue/job.js +26 -5
  73. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  74. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  75. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  76. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  77. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  78. package/codeyam-cli/src/utils/testRunner.js +199 -1
  79. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  80. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +28 -1
  81. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
  82. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +57 -2
  83. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
  84. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +57 -1
  85. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -1
  86. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +15 -0
  87. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -1
  88. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  89. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  90. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  91. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  92. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  93. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-aIHKLB-m.js +96 -0
  94. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
  95. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Blfy9UlN.js → entity._sha._-ByHz6rAQ.js} +13 -12
  96. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-KTQuL0aj.js → entity._sha.scenarios._scenarioId.dev-CmLO432x.js} +1 -1
  97. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-C6eeL24i.js → entity._sha.scenarios._scenarioId.fullscreen-Bz9sCUF_.js} +1 -1
  98. package/codeyam-cli/src/webserver/build/client/assets/globals-oyPmV37k.css +1 -0
  99. package/codeyam-cli/src/webserver/build/client/assets/manifest-bcbb3d49.js +1 -0
  100. package/codeyam-cli/src/webserver/build/client/assets/{root-BxUQigda.js → root-D2_tktnk.js} +26 -13
  101. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-DjF-soOH.js +16 -0
  102. package/codeyam-cli/src/webserver/build/server/assets/{index-Cd-ufawF.js → index-nAvHGWbz.js} +1 -1
  103. package/codeyam-cli/src/webserver/build/server/assets/{init-CzeBGOto.js → init-XhpIt-OT.js} +1 -1
  104. package/codeyam-cli/src/webserver/build/server/assets/server-build-DVwiibFu.js +644 -0
  105. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  106. package/codeyam-cli/src/webserver/build-info.json +5 -5
  107. package/codeyam-cli/src/webserver/idleDetector.js +15 -0
  108. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
  109. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +17 -0
  110. package/codeyam-cli/src/webserver/server.js +52 -14
  111. package/codeyam-cli/src/webserver/server.js.map +1 -1
  112. package/codeyam-cli/src/webserver/terminalServer.js +69 -15
  113. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  114. package/codeyam-cli/templates/editor-step-hook.py +21 -0
  115. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +19 -1
  116. package/package.json +1 -1
  117. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  118. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  119. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  120. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  121. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  122. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  123. package/packages/analyze/index.js +1 -1
  124. package/packages/analyze/index.js.map +1 -1
  125. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  126. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  127. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  128. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  129. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  130. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  131. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  132. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  133. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  134. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  135. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  136. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  137. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  138. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  139. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  140. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  141. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  142. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  143. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +116 -28
  144. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  145. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +139 -24
  146. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  147. package/packages/database/src/lib/loadAnalysis.js +1 -1
  148. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  149. package/packages/database/src/lib/loadEntity.js +5 -5
  150. package/packages/database/src/lib/loadEntity.js.map +1 -1
  151. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  152. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  153. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  154. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CGzKlIHg.js +0 -58
  155. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-oepecPae.js +0 -41
  156. package/codeyam-cli/src/webserver/build/client/assets/globals-Yn9W3zp3.css +0 -1
  157. package/codeyam-cli/src/webserver/build/client/assets/manifest-2ef99f38.js +0 -1
  158. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-BPmOG9bE.js +0 -13
  159. package/codeyam-cli/src/webserver/build/server/assets/server-build-Dht7CKXY.js +0 -552
@@ -28,7 +28,7 @@ function detectTestRunner(projectRoot) {
28
28
  * Both produce a compatible shape:
29
29
  * { testResults: [{ assertionResults: [{ title, status, ancestorTitles, failureMessages }] }] }
30
30
  */
31
- function parseTestOutput(testFilePath, jsonOutput) {
31
+ export function parseTestOutput(testFilePath, jsonOutput) {
32
32
  const data = JSON.parse(jsonOutput);
33
33
  const testResults = data.testResults || [];
34
34
  const testCases = [];
@@ -59,6 +59,204 @@ function parseTestOutput(testFilePath, jsonOutput) {
59
59
  testCases,
60
60
  };
61
61
  }
62
+ /**
63
+ * Parse JSON output from vitest/jest that contains results for multiple test files.
64
+ * Maps each suite back to the relative test file path that was requested.
65
+ * Returns a record keyed by relative test file path.
66
+ */
67
+ export function parseMultiTestOutput(projectRoot, testFilePaths, jsonOutput) {
68
+ const data = JSON.parse(jsonOutput);
69
+ const testResults = data.testResults || [];
70
+ // Build a map from absolute path → suite result(s)
71
+ const suitesByAbsPath = new Map();
72
+ for (const suite of testResults) {
73
+ const abs = suite.name || '';
74
+ const existing = suitesByAbsPath.get(abs);
75
+ if (existing) {
76
+ existing.push(suite);
77
+ }
78
+ else {
79
+ suitesByAbsPath.set(abs, [suite]);
80
+ }
81
+ }
82
+ const results = {};
83
+ const normalizedRoot = projectRoot.endsWith('/')
84
+ ? projectRoot
85
+ : projectRoot + '/';
86
+ for (const relPath of testFilePaths) {
87
+ const absPath = path.isAbsolute(relPath)
88
+ ? relPath
89
+ : path.join(projectRoot, relPath);
90
+ const suites = suitesByAbsPath.get(absPath);
91
+ if (!suites || suites.length === 0) {
92
+ results[relPath] = {
93
+ testFilePath: relPath,
94
+ status: 'error',
95
+ testCases: [],
96
+ errorMessage: `File not found in test output: ${relPath}`,
97
+ };
98
+ continue;
99
+ }
100
+ const testCases = [];
101
+ for (const suite of suites) {
102
+ for (const assertion of suite.assertionResults || []) {
103
+ const ancestors = assertion.ancestorTitles || [];
104
+ const title = assertion.title || assertion.fullName || 'unknown';
105
+ const fullName = ancestors.length > 0 ? `${ancestors.join(' > ')} > ${title}` : title;
106
+ testCases.push({
107
+ title,
108
+ fullName,
109
+ status: assertion.status === 'passed'
110
+ ? 'passed'
111
+ : assertion.status === 'failed'
112
+ ? 'failed'
113
+ : 'skipped',
114
+ duration: assertion.duration,
115
+ failureMessages: assertion.failureMessages?.length
116
+ ? assertion.failureMessages
117
+ : undefined,
118
+ });
119
+ }
120
+ }
121
+ const hasFailures = testCases.some((t) => t.status === 'failed');
122
+ results[relPath] = {
123
+ testFilePath: relPath,
124
+ status: hasFailures ? 'failed' : 'passed',
125
+ testCases,
126
+ };
127
+ }
128
+ return results;
129
+ }
130
+ /**
131
+ * Build the command and args array for running test files.
132
+ * Extracted for testability — no I/O or subprocess spawning.
133
+ */
134
+ export function buildTestCommand(runner, outputFile, testFilePaths) {
135
+ if (runner === 'vitest') {
136
+ return {
137
+ cmd: 'node',
138
+ args: [
139
+ './node_modules/.bin/vitest',
140
+ 'run',
141
+ '--reporter=json',
142
+ '--outputFile',
143
+ outputFile,
144
+ ...testFilePaths,
145
+ ],
146
+ };
147
+ }
148
+ else {
149
+ return {
150
+ cmd: './node_modules/.bin/jest',
151
+ args: [
152
+ '--json',
153
+ '--outputFile',
154
+ outputFile,
155
+ '--testPathPatterns',
156
+ ...testFilePaths,
157
+ ],
158
+ };
159
+ }
160
+ }
161
+ /**
162
+ * Run multiple test files in a single subprocess and return per-file results.
163
+ * Much faster than calling runTestFile() in a loop because it avoids
164
+ * cold-starting the test runner for each file.
165
+ */
166
+ export async function runTestFiles(projectRoot, testFilePaths) {
167
+ if (testFilePaths.length === 0)
168
+ return {};
169
+ const runner = detectTestRunner(projectRoot);
170
+ if (!runner) {
171
+ const results = {};
172
+ for (const fp of testFilePaths) {
173
+ results[fp] = {
174
+ testFilePath: fp,
175
+ status: 'error',
176
+ testCases: [],
177
+ errorMessage: 'No test runner found (install vitest or jest)',
178
+ };
179
+ }
180
+ return results;
181
+ }
182
+ // Filter to files that actually exist
183
+ const existing = [];
184
+ const results = {};
185
+ for (const fp of testFilePaths) {
186
+ const abs = path.isAbsolute(fp) ? fp : path.join(projectRoot, fp);
187
+ if (fs.existsSync(abs)) {
188
+ existing.push(fp);
189
+ }
190
+ else {
191
+ results[fp] = {
192
+ testFilePath: fp,
193
+ status: 'error',
194
+ testCases: [],
195
+ errorMessage: 'Test file not found',
196
+ };
197
+ }
198
+ }
199
+ if (existing.length === 0)
200
+ return results;
201
+ const tmpPath = path.join(os.tmpdir(), `codeyam-test-result-${Date.now()}.json`);
202
+ const { cmd, args } = buildTestCommand(runner, tmpPath, existing);
203
+ return new Promise((resolve) => {
204
+ const child = spawn(cmd, args, {
205
+ cwd: projectRoot,
206
+ stdio: 'pipe',
207
+ env: { ...process.env, NODE_ENV: 'test' },
208
+ });
209
+ let stderr = '';
210
+ child.stderr?.on('data', (chunk) => {
211
+ stderr += chunk.toString();
212
+ });
213
+ const timeout = setTimeout(() => {
214
+ child.kill('SIGTERM');
215
+ for (const fp of existing) {
216
+ results[fp] = {
217
+ testFilePath: fp,
218
+ status: 'error',
219
+ testCases: [],
220
+ errorMessage: 'Test timed out after 60 seconds',
221
+ };
222
+ }
223
+ resolve(results);
224
+ }, 60000);
225
+ child.on('close', () => {
226
+ clearTimeout(timeout);
227
+ try {
228
+ const jsonOutput = fs.readFileSync(tmpPath, 'utf8');
229
+ fs.unlinkSync(tmpPath);
230
+ const parsed = parseMultiTestOutput(projectRoot, existing, jsonOutput);
231
+ Object.assign(results, parsed);
232
+ }
233
+ catch {
234
+ for (const fp of existing) {
235
+ results[fp] = {
236
+ testFilePath: fp,
237
+ status: 'error',
238
+ testCases: [],
239
+ errorMessage: stderr.trim().slice(0, 500) ||
240
+ 'Test runner failed to produce output',
241
+ };
242
+ }
243
+ }
244
+ resolve(results);
245
+ });
246
+ child.on('error', (err) => {
247
+ clearTimeout(timeout);
248
+ for (const fp of existing) {
249
+ results[fp] = {
250
+ testFilePath: fp,
251
+ status: 'error',
252
+ testCases: [],
253
+ errorMessage: `Failed to spawn test runner: ${err.message}`,
254
+ };
255
+ }
256
+ resolve(results);
257
+ });
258
+ });
259
+ }
62
260
  /**
63
261
  * Run a single test file and return structured results.
64
262
  */
@@ -1 +1 @@
1
- {"version":3,"file":"testRunner.js","sourceRoot":"","sources":["../../../../src/utils/testRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAiBzB;;GAEG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG;YACd,GAAG,GAAG,CAAC,YAAY;YACnB,GAAG,GAAG,CAAC,eAAe;SACvB,CAAC;QACF,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;QACpC,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CACtB,YAAoB,EACpB,UAAkB;IAElB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC;YACjE,MAAM,QAAQ,GACZ,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAEvE,SAAS,CAAC,IAAI,CAAC;gBACb,KAAK;gBACL,QAAQ;gBACR,MAAM,EACJ,SAAS,CAAC,MAAM,KAAK,QAAQ;oBAC3B,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ;wBAC7B,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,SAAS;gBACjB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,eAAe,EAAE,SAAS,CAAC,eAAe,EAAE,MAAM;oBAChD,CAAC,CAAC,SAAS,CAAC,eAAe;oBAC3B,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAEjE,OAAO;QACL,YAAY;QACZ,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;QACzC,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,YAAoB;IAEpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,YAAY;YACZ,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,+CAA+C;SAC9D,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QACpD,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,YAAY;YACZ,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,EAAE;YACb,YAAY,EAAE,qBAAqB;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,EAAE,CAAC,MAAM,EAAE,EACX,uBAAuB,IAAI,CAAC,GAAG,EAAE,OAAO,CACzC,CAAC;IAEF,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,EAAE;QAC7C,IAAI,IAAc,CAAC;QACnB,IAAI,GAAW,CAAC;QAEhB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,GAAG,GAAG,MAAM,CAAC;YACb,IAAI,GAAG;gBACL,4BAA4B;gBAC5B,KAAK;gBACL,iBAAiB;gBACjB,cAAc;gBACd,OAAO;gBACP,YAAY;aACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,0BAA0B,CAAC;YACjC,IAAI,GAAG;gBACL,QAAQ;gBACR,cAAc;gBACd,OAAO;gBACP,oBAAoB;gBACpB,YAAY;aACb,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,MAAM;YACb,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC1C,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,OAAO,CAAC;gBACN,YAAY;gBACZ,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,iCAAiC;aAChD,CAAC,CAAC;QACL,CAAC,EAAE,KAAM,CAAC,CAAC;QAEX,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,YAAY,CAAC,OAAO,CAAC,CAAC;YAEtB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACpD,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO,CAAC,eAAe,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;gBACnD,OAAO,CAAC;oBACN,YAAY;oBACZ,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,EAAE;oBACb,YAAY,EACV,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;wBAC3B,sCAAsC;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC;gBACN,YAAY;gBACZ,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,gCAAgC,GAAG,CAAC,OAAO,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"testRunner.js","sourceRoot":"","sources":["../../../../src/utils/testRunner.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { parseClientErrors } from "../app/lib/clientErrors.js";
1
+ import { parseClientErrors, parseVisibleText } from "../app/lib/clientErrors.js";
2
2
  describe('parseClientErrors', () => {
3
3
  it('extracts console.error lines', () => {
4
4
  const output = `[JournalCapture] Page console.error: Uncaught TypeError: x is not a function`;
@@ -77,4 +77,31 @@ describe('parseClientErrors', () => {
77
77
  ]);
78
78
  });
79
79
  });
80
+ describe('parseVisibleText', () => {
81
+ it('extracts visible text from capture output', () => {
82
+ const output = '[JournalCapture] Visible text: Save to Library | Tech Chronicle';
83
+ expect(parseVisibleText(output)).toBe('Save to Library | Tech Chronicle');
84
+ });
85
+ it('returns null when no visible text line exists', () => {
86
+ const output = '[JournalCapture] Page loaded: status=200';
87
+ expect(parseVisibleText(output)).toBeNull();
88
+ });
89
+ it('extracts empty page marker', () => {
90
+ const output = '[JournalCapture] Visible text: (empty page)';
91
+ expect(parseVisibleText(output)).toBe('(empty page)');
92
+ });
93
+ it('extracts from multi-line output with other log lines', () => {
94
+ const output = [
95
+ '[JournalCapture] Page loaded: status=200, url=http://localhost:3113/',
96
+ '[JournalCapture] Page title: Margo',
97
+ '[JournalCapture] Visible text: Save to Library | Tech Chronicle | The Future of Web Dev',
98
+ '[JournalCapture] RESULT:{"success":true,"path":"/tmp/screenshot.png"}',
99
+ ].join('\n');
100
+ expect(parseVisibleText(output)).toBe('Save to Library | Tech Chronicle | The Future of Web Dev');
101
+ });
102
+ it('extracts extraction failure marker', () => {
103
+ const output = '[JournalCapture] Visible text: (extraction failed)';
104
+ expect(parseVisibleText(output)).toBe('(extraction failed)');
105
+ });
106
+ });
80
107
  //# sourceMappingURL=clientErrors.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientErrors.test.js","sourceRoot":"","sources":["../../../../../src/webserver/__tests__/clientErrors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientErrors.test.js","sourceRoot":"","sources":["../../../../../src/webserver/__tests__/clientErrors.test.ts"],"names":[],"mappings":"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"}
@@ -167,11 +167,31 @@ describe('IdleDetector activeOutputPattern', () => {
167
167
  expect(onIdle).not.toHaveBeenCalled();
168
168
  detector.dispose();
169
169
  });
170
+ it('suppresses idle during task progress with · indicator', () => {
171
+ const { detector, onIdle } = createDetector({
172
+ activeOutputPattern: /[✶✢·◼]/,
173
+ });
174
+ // Task progress line — Claude is working on a task
175
+ detector.onPtyOutput('\r\x1b[K· Building CUJ 0: Extension Install & Welcome… (12m 44s · ↓ 19.1k tokens)');
176
+ jest.advanceTimersByTime(3000);
177
+ expect(onIdle).not.toHaveBeenCalled();
178
+ detector.dispose();
179
+ });
180
+ it('suppresses idle during running task with ◼ indicator', () => {
181
+ const { detector, onIdle } = createDetector({
182
+ activeOutputPattern: /[✶✢·◼]/,
183
+ });
184
+ // Running task line
185
+ detector.onPtyOutput(' ⎿ ◼ Use `codeyam editor` to work on CUJ 0');
186
+ jest.advanceTimersByTime(3000);
187
+ expect(onIdle).not.toHaveBeenCalled();
188
+ detector.dispose();
189
+ });
170
190
  it('signals idle normally when last output does not match pattern', () => {
171
191
  const { detector, onIdle } = createDetector({
172
- activeOutputPattern: /[✶✢]/,
192
+ activeOutputPattern: /[✶✢·◼]/,
173
193
  });
174
- // Normal prompt output (no )
194
+ // Normal prompt output (no active indicators)
175
195
  detector.onPtyOutput('$ ');
176
196
  jest.advanceTimersByTime(3000);
177
197
  expect(onIdle).toHaveBeenCalledTimes(1);
@@ -225,4 +245,39 @@ describe('IdleDetector activeOutputPattern', () => {
225
245
  detector.dispose();
226
246
  });
227
247
  });
248
+ describe('IdleDetector disposeAndFlush', () => {
249
+ it('calls onIdle when not yet idle-signaled (Claude was active)', () => {
250
+ const { detector, onIdle } = createDetector();
251
+ // Feed output so the detector is in active state (timer running, not yet idle)
252
+ detector.onPtyOutput('x'.repeat(500));
253
+ expect(onIdle).not.toHaveBeenCalled();
254
+ detector.disposeAndFlush();
255
+ expect(onIdle).toHaveBeenCalledTimes(1);
256
+ });
257
+ it('does NOT call onIdle when already idle-signaled', () => {
258
+ const { detector, onIdle } = createDetector();
259
+ // Let it go idle normally
260
+ detector.onPtyOutput('x'.repeat(500));
261
+ jest.advanceTimersByTime(3000);
262
+ expect(onIdle).toHaveBeenCalledTimes(1);
263
+ // disposeAndFlush should NOT call onIdle again
264
+ detector.disposeAndFlush();
265
+ expect(onIdle).toHaveBeenCalledTimes(1);
266
+ });
267
+ it('clears all timers so no callbacks fire after flush', () => {
268
+ const { detector, onIdle } = createDetector();
269
+ detector.onPtyOutput('x'.repeat(500));
270
+ detector.disposeAndFlush();
271
+ expect(onIdle).toHaveBeenCalledTimes(1);
272
+ // Advance time — no additional callbacks should fire
273
+ jest.advanceTimersByTime(10000);
274
+ expect(onIdle).toHaveBeenCalledTimes(1);
275
+ });
276
+ it('calls onIdle even when no output was ever sent (fresh detector)', () => {
277
+ const { detector, onIdle } = createDetector();
278
+ // No output at all — idleSignaled is false, so disposeAndFlush should call onIdle
279
+ detector.disposeAndFlush();
280
+ expect(onIdle).toHaveBeenCalledTimes(1);
281
+ });
282
+ });
228
283
  //# sourceMappingURL=idleDetector.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"idleDetector.test.js","sourceRoot":"","sources":["../../../../../src/webserver/__tests__/idleDetector.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idleDetector.test.js","sourceRoot":"","sources":["../../../../../src/webserver/__tests__/idleDetector.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { stripClaudeCommand, StartupOutputFilter } from "../terminalServer.js";
1
+ import { stripClaudeCommand, StartupOutputFilter, shouldFilterStartup, isBannerChunk, } from "../terminalServer.js";
2
2
  describe('stripClaudeCommand', () => {
3
3
  test('strips claude --session-id command with prompt prefix', () => {
4
4
  const input = "$ claude --session-id 'abc-123' '/codeyam-editor'\r\nsome output\r\n";
@@ -51,6 +51,20 @@ describe('StartupOutputFilter', () => {
51
51
  // The command line must be stripped — only the banner should remain
52
52
  expect(result.data).toBe('╭─── Claude Code ───╮\r\n');
53
53
  });
54
+ test('clears and sends when new block-art banner arrives (no ╭)', () => {
55
+ const filter = new StartupOutputFilter();
56
+ filter.processChunk('$ claude --session-id ...\r\n');
57
+ const result = filter.processChunk(' ▐▛███▜▌ Claude Code v2.1.80\r\n');
58
+ expect(result.type).toBe('clear-and-send');
59
+ expect(result.data).toBe(' ▐▛███▜▌ Claude Code v2.1.80\r\n');
60
+ });
61
+ test('strips command when command and new block-art banner arrive in the same chunk', () => {
62
+ const filter = new StartupOutputFilter();
63
+ const combined = "user@host % claude --session-id 'abc-123' '/codeyam-editor'\r\n ▐▛███▜▌ Claude Code v2.1.80\r\n";
64
+ const result = filter.processChunk(combined);
65
+ expect(result.type).toBe('clear-and-send');
66
+ expect(result.data).toBe(' ▐▛███▜▌ Claude Code v2.1.80\r\n');
67
+ });
54
68
  test('passes through output after screen has been cleared', () => {
55
69
  const filter = new StartupOutputFilter();
56
70
  filter.processChunk('╭─── Claude Code ───╮\r\n');
@@ -74,6 +88,48 @@ describe('StartupOutputFilter', () => {
74
88
  const filter = new StartupOutputFilter();
75
89
  expect(filter.getTimeoutOutput()).toBeNull();
76
90
  });
91
+ test('timeout strips shell prompt + command arriving as separate chunks', () => {
92
+ const filter = new StartupOutputFilter();
93
+ // zsh outputs prompt first, then command echo as a separate chunk
94
+ filter.processChunk('user@host myproject % ');
95
+ filter.processChunk("claude --session-id 'abc-123' '/codeyam-editor'\r\n");
96
+ // Only the command and prompt — nothing real to show
97
+ expect(filter.getTimeoutOutput()).toBeNull();
98
+ });
99
+ test('timeout strips ANSI-laden zsh prompt + command but preserves trailing output', () => {
100
+ const filter = new StartupOutputFilter();
101
+ filter.processChunk('\x1b[?2004h\x1b[1m\x1b[36muser@host\x1b[0m testapp \x1b[33m%\x1b[0m ');
102
+ filter.processChunk("claude --session-id 'abc' '/codeyam-editor'\r\n\x1b[?2004l");
103
+ filter.processChunk('real output after command\r\n');
104
+ const output = filter.getTimeoutOutput();
105
+ expect(output).toBe('real output after command\r\n');
106
+ });
107
+ test('timeout strips everything before and including the claude command line', () => {
108
+ const filter = new StartupOutputFilter();
109
+ filter.processChunk("user@host % \r\x1b[Kclaude --session-id 'x' '/codeyam-editor'\r\n" +
110
+ '\x1b[?2004l\x1b[?1h' +
111
+ 'some real output\r\n');
112
+ const output = filter.getTimeoutOutput();
113
+ expect(output).toBe('some real output\r\n');
114
+ });
115
+ });
116
+ });
117
+ describe('shouldFilterStartup', () => {
118
+ test('filters when hasContext is true', () => {
119
+ expect(shouldFilterStartup({ hasContext: true, editorMode: false })).toBe(true);
120
+ });
121
+ test('filters in editor mode even when hasContext is false', () => {
122
+ expect(shouldFilterStartup({ hasContext: false, editorMode: true })).toBe(true);
123
+ });
124
+ test('does not filter when neither hasContext nor editorMode', () => {
125
+ expect(shouldFilterStartup({ hasContext: false, editorMode: false })).toBe(false);
126
+ });
127
+ });
128
+ describe('isBannerChunk', () => {
129
+ test('detects banner when ANSI color codes separate ▐ and ▛', () => {
130
+ // Real Claude Code output: ▐ and ▛ are separated by ANSI SGR sequences
131
+ const chunk = '\x1b[38;5;174m ▐\x1b[48;5;16m▛███▜\x1b[49m▌\x1b[3C\x1b[39m\x1b[1mClaude Code';
132
+ expect(isBannerChunk(chunk)).toBe(true);
77
133
  });
78
134
  });
79
135
  //# sourceMappingURL=stripClaudeCommand.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stripClaudeCommand.test.js","sourceRoot":"","sources":["../../../../../src/webserver/__tests__/stripClaudeCommand.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stripClaudeCommand.test.js","sourceRoot":"","sources":["../../../../../src/webserver/__tests__/stripClaudeCommand.test.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,9 @@ import * as path from 'path';
3
3
  /**
4
4
  * Parse client-side errors from journalCapture.ts stdout.
5
5
  * Extracts console.error and network failure lines.
6
+ *
7
+ * SYNC: The `[JournalCapture]` prefixes parsed here are hard-coded in
8
+ * journalCapture.ts — changes to either file must be mirrored in the other.
6
9
  */
7
10
  /** Network failure URLs that are internal infrastructure, not real client errors */
8
11
  const IGNORED_NETWORK_URLS = ['/api/health', '/__codeyam__/preview-health'];
@@ -26,6 +29,18 @@ export function parseClientErrors(captureOutput) {
26
29
  }
27
30
  return errors;
28
31
  }
32
+ /**
33
+ * Parse visible text from journalCapture.ts stdout.
34
+ * Extracts the page's innerText captured after stabilization.
35
+ */
36
+ export function parseVisibleText(captureOutput) {
37
+ for (const line of captureOutput.split('\n')) {
38
+ if (line.includes('[JournalCapture] Visible text: ')) {
39
+ return line.replace(/.*\[JournalCapture\] Visible text: /, '');
40
+ }
41
+ }
42
+ return null;
43
+ }
29
44
  /**
30
45
  * Save client errors for a scenario to .codeyam/editor-scenarios/client-errors.json.
31
46
  * Accumulates errors per scenario (overwrites previous errors for the same scenario).
@@ -1 +1 @@
1
- {"version":3,"file":"clientErrors.js","sourceRoot":"","sources":["../../../../../../src/webserver/app/lib/clientErrors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientErrors.js","sourceRoot":"","sources":["../../../../../../src/webserver/app/lib/clientErrors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import{_ as k}from"./preload-helper-ckwbz45p.js";import{j as s}from"./jsx-runtime-D_zvdyIk.js";import{r as o}from"./chunk-JZWAC4HX-BAdwhyCx.js";function C({prompt:R,height:f=300,onClose:h,hideHeader:y}){const w=o.useRef(null),l=o.useRef(null),b=o.useRef(null),g=o.useRef(!1),N=o.useRef(R);o.useEffect(()=>{const m=w.current;if(!m)return;let u=!1,n=null;async function _(){const[a,c]=await Promise.all([k(()=>import("./xterm-BqvuqXEL.js"),[]),k(()=>import("./addon-fit-YJmn1quW.js"),[])]);if(u)return;{let e=document.getElementById("xterm-css");e||(e=document.createElement("style"),e.id="xterm-css",document.head.appendChild(e)),e.textContent=`
2
+ .xterm { cursor: text; position: relative; user-select: none; -ms-user-select: none; -webkit-user-select: none; }
3
+ .xterm.focus, .xterm:focus { outline: none; }
4
+ .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
5
+ .xterm .xterm-helper-textarea { padding: 0; border: 0; margin: 0; position: absolute; opacity: 0; left: -9999em; top: 0; width: 0; height: 0; z-index: -5; white-space: nowrap; overflow: hidden; resize: none; caret-color: transparent !important; clip-path: inset(100%) !important; }
6
+ .xterm .composition-view { background: #000; color: #FFF; display: none; position: absolute; white-space: nowrap; z-index: 1; }
7
+ .xterm .composition-view.active { display: block; }
8
+ .xterm .xterm-viewport { background-color: #000; overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; }
9
+ .xterm .xterm-screen { position: relative; }
10
+ .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
11
+ .xterm .xterm-scroll-area { visibility: hidden; }
12
+ .xterm-char-measure-element { display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em; line-height: normal; }
13
+ .xterm.enable-mouse-events { cursor: default; }
14
+ .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
15
+ .xterm.column-select.focus { cursor: crosshair; }
16
+ .xterm .xterm-accessibility:not(.debug), .xterm .xterm-message { position: absolute; left: 0; top: 0; bottom: 0; right: 0; z-index: 10; color: transparent; pointer-events: none; }
17
+ .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
18
+ .xterm .xterm-accessibility-tree { user-select: text; white-space: pre; }
19
+ .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
20
+ .xterm-dim { opacity: 1 !important; }
21
+ .xterm-underline-1 { text-decoration: underline; }
22
+ .xterm-underline-2 { text-decoration: double underline; }
23
+ .xterm-underline-3 { text-decoration: wavy underline; }
24
+ .xterm-underline-4 { text-decoration: dotted underline; }
25
+ .xterm-underline-5 { text-decoration: dashed underline; }
26
+ .xterm-overline { text-decoration: overline; }
27
+ .xterm-strikethrough { text-decoration: line-through; }
28
+ .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
29
+ .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
30
+ .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
31
+ .xterm-decoration-top { z-index: 2; position: relative; }
32
+ `}const t=new a.Terminal({theme:{background:"#1a1a1a",foreground:"#d4d4d4",cursor:"#d4d4d4",selectionBackground:"#264f78"},fontSize:12,fontFamily:"'IBM Plex Mono', 'Menlo', 'Monaco', monospace",cursorBlink:!0,scrollback:5e3,allowProposedApi:!0}),p=new c.FitAddon;t.loadAddon(p),t.open(m),requestAnimationFrame(()=>{try{p.fit()}catch{}}),b.current=t;let x=null;try{const e=await fetch("/api/editor-scenario-prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:N.current})});e.ok&&(x=(await e.json()).promptFile)}catch{}if(u)return;const z=window.location.protocol==="https:"?"wss:":"ws:",E=window.location.host,v=new URLSearchParams;v.set("entityName","inline-claude");const O=`${z}//${E}/ws/terminal?${v.toString()}`,r=new WebSocket(O);l.current=r,r.onopen=()=>{r.send(JSON.stringify({type:"resize",cols:t.cols,rows:t.rows}))};let S=!1;r.onmessage=e=>{try{const i=JSON.parse(e.data);if(i.type==="session-id"&&!S){S=!0,setTimeout(()=>{const P=x?`claude "Read the file at '${x.replace(/'/g,"'\\''")}' for your instructions."`:"claude";r.send(JSON.stringify({type:"input",data:P+"\r"}))},300);return}if(i.type==="output"&&i.data){t.write(i.data);return}}catch{t.write(e.data)}},r.onclose=()=>{g.current||t.write(`\r
33
+ \x1B[90m--- Session ended ---\x1B[0m\r
34
+ `)},r.onerror=()=>{t.write(`\r
35
+ \x1B[31mConnection error\x1B[0m\r
36
+ `)},t.onData(e=>{r.readyState===WebSocket.OPEN&&r.send(JSON.stringify({type:"input",data:e}))}),n=new ResizeObserver(()=>{try{p.fit(),r.readyState===WebSocket.OPEN&&r.send(JSON.stringify({type:"resize",cols:t.cols,rows:t.rows}))}catch{}}),n.observe(m)}return _(),()=>{var a,c;u=!0,g.current=!0,n==null||n.disconnect(),((a=l.current)==null?void 0:a.readyState)===WebSocket.OPEN&&l.current.close(),(c=b.current)==null||c.dispose()}},[]);const d=f==="100%";return s.jsxs("div",{className:y?"":"border-t border-[#2d2d2d]",style:d?{height:"100%",display:"flex",flexDirection:"column"}:void 0,children:[!y&&s.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-[#1e1e1e]",children:[s.jsx("span",{className:"text-[10px] font-medium text-[#00a0c4]",children:"Claude"}),h&&s.jsx("button",{onClick:h,className:"text-gray-500 hover:text-gray-300 text-[10px] bg-transparent border-none cursor-pointer",children:"Close"})]}),s.jsx("div",{ref:w,style:{height:d?void 0:f,flex:d?1:void 0,background:"#1a1a1a",padding:"4px 0",position:"relative",overflow:"hidden"}})]})}export{C as M};
@@ -0,0 +1 @@
1
+ const o="/assets/cy-logo-cli-DoA97ML3.svg";export{o as c};