@tienne/gestalt 0.19.2 → 0.20.0

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 (154) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/src/cli/commands/update.d.ts +2 -0
  3. package/dist/src/cli/commands/update.d.ts.map +1 -0
  4. package/dist/src/cli/commands/update.js +31 -0
  5. package/dist/src/cli/commands/update.js.map +1 -0
  6. package/dist/src/cli/index.d.ts.map +1 -1
  7. package/dist/src/cli/index.js +7 -0
  8. package/dist/src/cli/index.js.map +1 -1
  9. package/package.json +1 -1
  10. package/dist/skills/seed/SKILL.md +0 -92
  11. package/dist/src/cli/commands/monitor.d.ts +0 -2
  12. package/dist/src/cli/commands/monitor.d.ts.map +0 -1
  13. package/dist/src/cli/commands/monitor.js +0 -13
  14. package/dist/src/cli/commands/monitor.js.map +0 -1
  15. package/dist/src/cli/commands/seed.d.ts +0 -4
  16. package/dist/src/cli/commands/seed.d.ts.map +0 -1
  17. package/dist/src/cli/commands/seed.js +0 -34
  18. package/dist/src/cli/commands/seed.js.map +0 -1
  19. package/dist/src/interview/ambiguity.d.ts +0 -8
  20. package/dist/src/interview/ambiguity.d.ts.map +0 -1
  21. package/dist/src/interview/ambiguity.js +0 -69
  22. package/dist/src/interview/ambiguity.js.map +0 -1
  23. package/dist/src/mcp/tools/seed-passthrough.d.ts +0 -5
  24. package/dist/src/mcp/tools/seed-passthrough.d.ts.map +0 -1
  25. package/dist/src/mcp/tools/seed-passthrough.js +0 -29
  26. package/dist/src/mcp/tools/seed-passthrough.js.map +0 -1
  27. package/dist/src/mcp/tools/seed.d.ts +0 -5
  28. package/dist/src/mcp/tools/seed.d.ts.map +0 -1
  29. package/dist/src/mcp/tools/seed.js +0 -19
  30. package/dist/src/mcp/tools/seed.js.map +0 -1
  31. package/dist/src/recording/agg-converter.d.ts +0 -25
  32. package/dist/src/recording/agg-converter.d.ts.map +0 -1
  33. package/dist/src/recording/agg-converter.js +0 -80
  34. package/dist/src/recording/agg-converter.js.map +0 -1
  35. package/dist/src/recording/agg-installer.d.ts +0 -6
  36. package/dist/src/recording/agg-installer.d.ts.map +0 -1
  37. package/dist/src/recording/agg-installer.js +0 -50
  38. package/dist/src/recording/agg-installer.js.map +0 -1
  39. package/dist/src/recording/asciinema-installer.d.ts +0 -6
  40. package/dist/src/recording/asciinema-installer.d.ts.map +0 -1
  41. package/dist/src/recording/asciinema-installer.js +0 -50
  42. package/dist/src/recording/asciinema-installer.js.map +0 -1
  43. package/dist/src/recording/asciinema-recorder.d.ts +0 -26
  44. package/dist/src/recording/asciinema-recorder.d.ts.map +0 -1
  45. package/dist/src/recording/asciinema-recorder.js +0 -52
  46. package/dist/src/recording/asciinema-recorder.js.map +0 -1
  47. package/dist/src/recording/cast-generator.d.ts +0 -7
  48. package/dist/src/recording/cast-generator.d.ts.map +0 -1
  49. package/dist/src/recording/cast-generator.js +0 -97
  50. package/dist/src/recording/cast-generator.js.map +0 -1
  51. package/dist/src/recording/filename-generator.d.ts +0 -19
  52. package/dist/src/recording/filename-generator.d.ts.map +0 -1
  53. package/dist/src/recording/filename-generator.js +0 -67
  54. package/dist/src/recording/filename-generator.js.map +0 -1
  55. package/dist/src/recording/gif-generator.d.ts +0 -21
  56. package/dist/src/recording/gif-generator.d.ts.map +0 -1
  57. package/dist/src/recording/gif-generator.js +0 -121
  58. package/dist/src/recording/gif-generator.js.map +0 -1
  59. package/dist/src/recording/recording-dir.d.ts +0 -5
  60. package/dist/src/recording/recording-dir.d.ts.map +0 -1
  61. package/dist/src/recording/recording-dir.js +0 -13
  62. package/dist/src/recording/recording-dir.js.map +0 -1
  63. package/dist/src/recording/recording-orchestrator.d.ts +0 -50
  64. package/dist/src/recording/recording-orchestrator.d.ts.map +0 -1
  65. package/dist/src/recording/recording-orchestrator.js +0 -98
  66. package/dist/src/recording/recording-orchestrator.js.map +0 -1
  67. package/dist/src/recording/resume-detector.d.ts +0 -10
  68. package/dist/src/recording/resume-detector.d.ts.map +0 -1
  69. package/dist/src/recording/resume-detector.js +0 -14
  70. package/dist/src/recording/resume-detector.js.map +0 -1
  71. package/dist/src/recording/segment-merger.d.ts +0 -27
  72. package/dist/src/recording/segment-merger.d.ts.map +0 -1
  73. package/dist/src/recording/segment-merger.js +0 -65
  74. package/dist/src/recording/segment-merger.js.map +0 -1
  75. package/dist/src/recording/terminal-recorder.d.ts +0 -31
  76. package/dist/src/recording/terminal-recorder.d.ts.map +0 -1
  77. package/dist/src/recording/terminal-recorder.js +0 -111
  78. package/dist/src/recording/terminal-recorder.js.map +0 -1
  79. package/dist/src/scripts/postinstall.d.ts +0 -2
  80. package/dist/src/scripts/postinstall.d.ts.map +0 -1
  81. package/dist/src/scripts/postinstall.js +0 -29
  82. package/dist/src/scripts/postinstall.js.map +0 -1
  83. package/dist/src/seed/extractor.d.ts +0 -15
  84. package/dist/src/seed/extractor.d.ts.map +0 -1
  85. package/dist/src/seed/extractor.js +0 -88
  86. package/dist/src/seed/extractor.js.map +0 -1
  87. package/dist/src/seed/generator.d.ts +0 -12
  88. package/dist/src/seed/generator.d.ts.map +0 -1
  89. package/dist/src/seed/generator.js +0 -66
  90. package/dist/src/seed/generator.js.map +0 -1
  91. package/dist/src/seed/passthrough-generator.d.ts +0 -31
  92. package/dist/src/seed/passthrough-generator.d.ts.map +0 -1
  93. package/dist/src/seed/passthrough-generator.js +0 -80
  94. package/dist/src/seed/passthrough-generator.js.map +0 -1
  95. package/dist/src/seed/schema.d.ts +0 -145
  96. package/dist/src/seed/schema.d.ts.map +0 -1
  97. package/dist/src/seed/schema.js +0 -37
  98. package/dist/src/seed/schema.js.map +0 -1
  99. package/dist/src/tui/components/TUIApp.d.ts +0 -20
  100. package/dist/src/tui/components/TUIApp.d.ts.map +0 -1
  101. package/dist/src/tui/components/TUIApp.js +0 -84
  102. package/dist/src/tui/components/TUIApp.js.map +0 -1
  103. package/dist/src/tui/hooks/event-store-reader.d.ts +0 -28
  104. package/dist/src/tui/hooks/event-store-reader.d.ts.map +0 -1
  105. package/dist/src/tui/hooks/event-store-reader.js +0 -141
  106. package/dist/src/tui/hooks/event-store-reader.js.map +0 -1
  107. package/dist/src/tui/hooks/useEventStorePoller.d.ts +0 -12
  108. package/dist/src/tui/hooks/useEventStorePoller.d.ts.map +0 -1
  109. package/dist/src/tui/hooks/useEventStorePoller.js +0 -84
  110. package/dist/src/tui/hooks/useEventStorePoller.js.map +0 -1
  111. package/dist/src/tui/screens/DashboardScreen.d.ts +0 -4
  112. package/dist/src/tui/screens/DashboardScreen.d.ts.map +0 -1
  113. package/dist/src/tui/screens/DashboardScreen.js +0 -132
  114. package/dist/src/tui/screens/DashboardScreen.js.map +0 -1
  115. package/dist/src/tui/screens/DebugScreen.d.ts +0 -4
  116. package/dist/src/tui/screens/DebugScreen.d.ts.map +0 -1
  117. package/dist/src/tui/screens/DebugScreen.js +0 -40
  118. package/dist/src/tui/screens/DebugScreen.js.map +0 -1
  119. package/dist/src/tui/screens/EvolutionScreen.d.ts +0 -4
  120. package/dist/src/tui/screens/EvolutionScreen.d.ts.map +0 -1
  121. package/dist/src/tui/screens/EvolutionScreen.js +0 -136
  122. package/dist/src/tui/screens/EvolutionScreen.js.map +0 -1
  123. package/dist/src/tui/screens/HUDPanel.d.ts +0 -4
  124. package/dist/src/tui/screens/HUDPanel.d.ts.map +0 -1
  125. package/dist/src/tui/screens/HUDPanel.js +0 -13
  126. package/dist/src/tui/screens/HUDPanel.js.map +0 -1
  127. package/dist/src/tui/screens/InterviewScreen.d.ts +0 -4
  128. package/dist/src/tui/screens/InterviewScreen.d.ts.map +0 -1
  129. package/dist/src/tui/screens/InterviewScreen.js +0 -103
  130. package/dist/src/tui/screens/InterviewScreen.js.map +0 -1
  131. package/dist/src/tui/screens/LogScreen.d.ts +0 -4
  132. package/dist/src/tui/screens/LogScreen.d.ts.map +0 -1
  133. package/dist/src/tui/screens/LogScreen.js +0 -83
  134. package/dist/src/tui/screens/LogScreen.js.map +0 -1
  135. package/dist/src/tui/screens/SessionListScreen.d.ts +0 -4
  136. package/dist/src/tui/screens/SessionListScreen.d.ts.map +0 -1
  137. package/dist/src/tui/screens/SessionListScreen.js +0 -71
  138. package/dist/src/tui/screens/SessionListScreen.js.map +0 -1
  139. package/dist/src/tui/screens/SpecViewerScreen.d.ts +0 -4
  140. package/dist/src/tui/screens/SpecViewerScreen.d.ts.map +0 -1
  141. package/dist/src/tui/screens/SpecViewerScreen.js +0 -73
  142. package/dist/src/tui/screens/SpecViewerScreen.js.map +0 -1
  143. package/dist/src/tui/widgets/DriftMeter.d.ts +0 -15
  144. package/dist/src/tui/widgets/DriftMeter.d.ts.map +0 -1
  145. package/dist/src/tui/widgets/DriftMeter.js +0 -27
  146. package/dist/src/tui/widgets/DriftMeter.js.map +0 -1
  147. package/dist/src/tui/widgets/GestaltPrincipleBar.d.ts +0 -9
  148. package/dist/src/tui/widgets/GestaltPrincipleBar.d.ts.map +0 -1
  149. package/dist/src/tui/widgets/GestaltPrincipleBar.js +0 -35
  150. package/dist/src/tui/widgets/GestaltPrincipleBar.js.map +0 -1
  151. package/dist/src/tui/widgets/TaskDAGTree.d.ts +0 -15
  152. package/dist/src/tui/widgets/TaskDAGTree.d.ts.map +0 -1
  153. package/dist/src/tui/widgets/TaskDAGTree.js +0 -54
  154. package/dist/src/tui/widgets/TaskDAGTree.js.map +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tienne/gestalt",
3
- "version": "0.19.2",
3
+ "version": "0.20.0",
4
4
  "description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -0,0 +1,2 @@
1
+ export declare function updateCommand(): Promise<void>;
2
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCnD"}
@@ -0,0 +1,31 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { checkForUpdates } from '../../core/version.js';
3
+ export async function updateCommand() {
4
+ console.log('업데이트 확인 중...');
5
+ const result = await checkForUpdates();
6
+ if (!result) {
7
+ console.log('업데이트 확인에 실패했습니다. 네트워크 연결을 확인해주세요.');
8
+ return;
9
+ }
10
+ console.log(`현재 버전: v${result.currentVersion}`);
11
+ console.log(`최신 버전: v${result.latestVersion}`);
12
+ if (!result.updateAvailable) {
13
+ console.log('✅ 최신 버전입니다.');
14
+ return;
15
+ }
16
+ console.log(`\n새 버전이 있습니다: v${result.currentVersion} → v${result.latestVersion}`);
17
+ console.log('업데이트 중...');
18
+ try {
19
+ execSync(`npm install -g @tienne/gestalt@${result.latestVersion}`, { stdio: 'inherit' });
20
+ console.log(`\n✅ v${result.latestVersion} 업데이트 완료!`);
21
+ console.log('\nClaude Code 플러그인도 업데이트하려면:');
22
+ console.log(' /plugin install gestalt@gestalt');
23
+ }
24
+ catch {
25
+ console.error('\n자동 업데이트에 실패했습니다. 수동으로 업데이트해주세요:');
26
+ console.error(` npm install -g @tienne/gestalt@latest`);
27
+ console.error('또는 Claude Code 플러그인:');
28
+ console.error(' /plugin install gestalt@gestalt');
29
+ }
30
+ }
31
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IAEvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,QAAQ,CAAC,kCAAkC,MAAM,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,aAAa,WAAW,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,SAAS,IAAI,OAAO,CAwEnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,SAAS,IAAI,OAAO,CA+EnC"}
@@ -6,6 +6,7 @@ import { statusCommand } from './commands/status.js';
6
6
  import { setupCommand } from './commands/setup.js';
7
7
  import { initCommand } from './commands/init.js';
8
8
  import { graphVisualizeCommand } from './commands/graph-visualize.js';
9
+ import { updateCommand } from './commands/update.js';
9
10
  import { getVersion } from '../core/version.js';
10
11
  export function createCli() {
11
12
  const program = new Command();
@@ -52,6 +53,12 @@ export function createCli() {
52
53
  .action(() => {
53
54
  setupCommand();
54
55
  });
56
+ program
57
+ .command('update')
58
+ .description('Check for updates and install the latest version')
59
+ .action(async () => {
60
+ await updateCommand();
61
+ });
55
62
  program
56
63
  .command('graph-visualize')
57
64
  .description('Visualize the code knowledge graph in the browser')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CACV,2FAA2F,CAC5F;SACA,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACrC,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,EAAE;QAC1C,MAAM,gBAAgB,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,aAAa,EAAE,0DAA0D,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,OAA4B,EAAE,EAAE;QAChE,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,gCAAgC,CAAC;SAC7C,MAAM,CAAC,CAAC,SAAkB,EAAE,EAAE;QAC7B,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,yFAAyF,CAC1F;SACA,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAAC;SAC/C,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,OAAoD,EAAE,EAAE;QACrE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,GAAG,EAAE;QACX,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;SACjE,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,QAAQ,CAAC;SAC5E,MAAM,CAAC,cAAc,EAAE,uCAAuC,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,OAAgE,EAAE,EAAE;QACjF,MAAM,qBAAqB,CAAC;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,OAAO,KAAK,KAAK;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tienne/gestalt",
3
- "version": "0.19.2",
3
+ "version": "0.20.0",
4
4
  "description": "TypeScript AI Development Harness - Gestalt psychology-driven requirement clarification",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -1,92 +0,0 @@
1
- ---
2
- name: seed
3
- version: "1.0.0"
4
- description: "Generate a Seed specification from a completed interview"
5
- triggers:
6
- - "generate seed"
7
- - "create spec"
8
- - "build seed"
9
- inputs:
10
- sessionId:
11
- type: string
12
- required: true
13
- description: "The interview session ID to generate a seed from"
14
- force:
15
- type: boolean
16
- required: false
17
- description: "Force generation even if ambiguity threshold is not met"
18
- outputs:
19
- - seed
20
- ---
21
-
22
- # Seed Generation Skill
23
-
24
- This skill transforms completed interview data into a structured project specification (Seed).
25
-
26
- ## Output Structure
27
-
28
- - **Goal**: Clear project objective
29
- - **Constraints**: Technical and business constraints
30
- - **Acceptance Criteria**: Measurable success conditions
31
- - **Ontology Schema**: Entity-relationship model
32
- - **Gestalt Analysis**: Findings from each principle applied
33
-
34
- ## Requirements
35
-
36
- - Interview session must be in `completed` status
37
- - Ambiguity score must be ≤ 0.2 (unless `force` is true)
38
-
39
- ## Passthrough Mode
40
-
41
- API 키 없이 MCP 서버 실행 시 자동 활성화. Seed 생성을 caller가 직접 수행한다.
42
-
43
- ### 추가 Input 파라미터
44
-
45
- | 파라미터 | 타입 | 필수 | 설명 |
46
- |---------|------|------|------|
47
- | `seed` | object | 2단계에서 필수 | caller가 생성한 Seed JSON |
48
- | `seed.goal` | string | 필수 | 프로젝트 목표 |
49
- | `seed.constraints` | string[] | 필수 | 기술/비즈니스 제약조건 |
50
- | `seed.acceptanceCriteria` | string[] | 필수 | 수용 기준 |
51
- | `seed.ontologySchema` | object | 필수 | 엔티티-관계 모델 |
52
- | `seed.gestaltAnalysis` | array | 필수 | 게슈탈트 분석 결과 |
53
-
54
- ### 2단계 플로우
55
-
56
- **1단계: SeedContext 요청**
57
- ```
58
- ges_generate_seed({ sessionId: "<id>" })
59
- ```
60
- → `{ status: "prompt", seedContext, message }` 반환
61
-
62
- SeedContext 필드:
63
- - `systemPrompt`: Seed 생성용 시스템 프롬프트
64
- - `seedPrompt`: 인터뷰 내용 기반 Seed 생성 프롬프트
65
- - `allRounds[]`: `{ roundNumber, question, response, gestaltFocus }`
66
-
67
- **2단계: Seed 제출 및 검증**
68
- ```
69
- ges_generate_seed({
70
- sessionId: "<id>",
71
- seed: {
72
- goal: "명확한 프로젝트 목표",
73
- constraints: ["TypeScript 사용", "REST API"],
74
- acceptanceCriteria: ["응답 시간 200ms 이하"],
75
- ontologySchema: {
76
- entities: [{ name: "User", description: "...", attributes: ["id", "email"] }],
77
- relations: [{ from: "User", to: "Order", type: "has_many" }]
78
- },
79
- gestaltAnalysis: [
80
- { principle: "closure", finding: "인증 요구사항 완전히 파악됨", confidence: 0.9 }
81
- ]
82
- }
83
- })
84
- ```
85
- → `{ status: "generated", seed }` (metadata 자동 생성 포함) 또는 `{ error }` 반환
86
-
87
- ### Seed 검증 스키마 (Zod)
88
-
89
- - `gestaltAnalysis[].principle`: `closure | proximity | similarity | figure_ground | continuity`
90
- - `gestaltAnalysis[].confidence`: 0.0 ~ 1.0
91
- - `ontologySchema.entities[]`: `{ name: string(min 1), description: string, attributes: string[] }`
92
- - `ontologySchema.relations[]`: `{ from: string(min 1), to: string(min 1), type: string(min 1) }`
@@ -1,2 +0,0 @@
1
- export declare function monitorCommand(sessionId?: string): Promise<void>;
2
- //# sourceMappingURL=monitor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/monitor.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE"}
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { render } from 'ink';
3
- import { loadConfig } from '../../core/config.js';
4
- import { TUIApp } from '../../tui/components/TUIApp.js';
5
- export async function monitorCommand(sessionId) {
6
- const config = loadConfig();
7
- const { waitUntilExit } = render(React.createElement(TUIApp, {
8
- dbPath: config.dbPath,
9
- initialSessionId: sessionId,
10
- }));
11
- await waitUntilExit();
12
- }
13
- //# sourceMappingURL=monitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../../src/cli/commands/monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAkB;IACrD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,gBAAgB,EAAE,SAAS;KAC5B,CAAC,CACH,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare function seedCommand(sessionId: string, options: {
2
- force?: boolean;
3
- }): Promise<void>;
4
- //# sourceMappingURL=seed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhG"}
@@ -1,34 +0,0 @@
1
- import { loadConfig } from '../../core/config.js';
2
- import { EventStore } from '../../events/store.js';
3
- import { AnthropicAdapter } from '../../llm/adapter.js';
4
- import { InterviewEngine } from '../../interview/engine.js';
5
- import { SeedGenerator } from '../../seed/generator.js';
6
- export async function seedCommand(sessionId, options) {
7
- const config = loadConfig();
8
- if (!config.anthropicApiKey) {
9
- console.error('Error: ANTHROPIC_API_KEY is required for CLI mode. Set it in .env or as environment variable.');
10
- process.exit(1);
11
- }
12
- const eventStore = new EventStore(config.dbPath);
13
- const llm = new AnthropicAdapter(config.anthropicApiKey, config.model);
14
- const engine = new InterviewEngine(llm, eventStore);
15
- const generator = new SeedGenerator(llm, eventStore);
16
- try {
17
- const session = engine.getSession(sessionId);
18
- console.log(`\n🌱 Generating seed for session: ${session.topic}\n`);
19
- const result = await generator.generate(session, options.force ?? false);
20
- if (!result.ok) {
21
- console.error(`Error: ${result.error.message}`);
22
- return;
23
- }
24
- console.log(JSON.stringify(result.value, null, 2));
25
- console.log('\n✅ Seed generated successfully.\n');
26
- }
27
- catch (e) {
28
- console.error(`Error: ${e instanceof Error ? e.message : String(e)}`);
29
- }
30
- finally {
31
- eventStore.close();
32
- }
33
- }
34
- //# sourceMappingURL=seed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,OAA4B;IAC/E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;QAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { AmbiguityScore, InterviewRound, ProjectType } from '../core/types.js';
2
- import type { LLMAdapter } from '../llm/types.js';
3
- export declare class AmbiguityScorer {
4
- private llm;
5
- constructor(llm: LLMAdapter);
6
- score(topic: string, rounds: InterviewRound[], projectType: ProjectType): Promise<AmbiguityScore>;
7
- }
8
- //# sourceMappingURL=ambiguity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ambiguity.d.ts","sourceRoot":"","sources":["../../../src/interview/ambiguity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,eAAe;IACd,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,UAAU;IAE7B,KAAK,CACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,cAAc,EAAE,EACxB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,cAAc,CAAC;CA4B3B"}
@@ -1,69 +0,0 @@
1
- import { computeAmbiguityScore } from '../gestalt/analyzer.js';
2
- import { buildAmbiguityPrompt, INTERVIEW_SYSTEM_PROMPT } from '../llm/prompts.js';
3
- export class AmbiguityScorer {
4
- llm;
5
- constructor(llm) {
6
- this.llm = llm;
7
- }
8
- async score(topic, rounds, projectType) {
9
- const answeredRounds = rounds.filter((r) => r.userResponse);
10
- if (answeredRounds.length === 0) {
11
- return {
12
- overall: 1.0,
13
- dimensions: [],
14
- isReady: false,
15
- };
16
- }
17
- const prompt = buildAmbiguityPrompt(topic, answeredRounds.map((r) => ({
18
- question: r.question,
19
- response: r.userResponse,
20
- })), projectType);
21
- const response = await this.llm.chat({
22
- system: INTERVIEW_SYSTEM_PROMPT,
23
- messages: [{ role: 'user', content: prompt }],
24
- temperature: 0.3,
25
- });
26
- const raw = parseAmbiguityResponse(response.content, projectType);
27
- return computeAmbiguityScore(raw, projectType);
28
- }
29
- }
30
- function parseAmbiguityResponse(content, projectType) {
31
- const jsonMatch = content.match(/\{[\s\S]*\}/);
32
- if (!jsonMatch) {
33
- return defaultScores(projectType);
34
- }
35
- try {
36
- const parsed = JSON.parse(jsonMatch[0]);
37
- return {
38
- goalClarity: toNumber(parsed['goalClarity'], 0),
39
- constraintClarity: toNumber(parsed['constraintClarity'], 0),
40
- successCriteria: toNumber(parsed['successCriteria'], 0),
41
- priorityClarity: toNumber(parsed['priorityClarity'], 0),
42
- contextClarity: projectType === 'brownfield'
43
- ? toNumber(parsed['contextClarity'], 0)
44
- : undefined,
45
- contradictions: Array.isArray(parsed['contradictions'])
46
- ? parsed['contradictions']
47
- : [],
48
- };
49
- }
50
- catch {
51
- return defaultScores(projectType);
52
- }
53
- }
54
- function defaultScores(projectType) {
55
- return {
56
- goalClarity: 0,
57
- constraintClarity: 0,
58
- successCriteria: 0,
59
- priorityClarity: 0,
60
- contextClarity: projectType === 'brownfield' ? 0 : undefined,
61
- contradictions: [],
62
- };
63
- }
64
- function toNumber(value, fallback) {
65
- if (typeof value === 'number' && !isNaN(value))
66
- return value;
67
- return fallback;
68
- }
69
- //# sourceMappingURL=ambiguity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ambiguity.js","sourceRoot":"","sources":["../../../src/interview/ambiguity.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { PassthroughEngine } from '../../interview/passthrough-engine.js';
2
- import type { PassthroughSeedGenerator } from '../../seed/passthrough-generator.js';
3
- import type { SeedInput } from '../schemas.js';
4
- export declare function handleSeedPassthrough(engine: PassthroughEngine, generator: PassthroughSeedGenerator, input: SeedInput): string;
5
- //# sourceMappingURL=seed-passthrough.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed-passthrough.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/seed-passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,wBAAwB,EACnC,KAAK,EAAE,SAAS,GACf,MAAM,CA8BR"}
@@ -1,29 +0,0 @@
1
- export function handleSeedPassthrough(engine, generator, input) {
2
- try {
3
- const session = engine.getSession(input.sessionId);
4
- // If external seed is provided, validate and store it
5
- if (input.seed) {
6
- const result = generator.validateAndStore(session, input.seed, input.force);
7
- if (!result.ok) {
8
- return JSON.stringify({ error: result.error.message }, null, 2);
9
- }
10
- return JSON.stringify({
11
- status: 'generated',
12
- seed: result.value,
13
- }, null, 2);
14
- }
15
- // No seed provided — return the prompt for generation
16
- const context = generator.buildSeedContext(session);
17
- return JSON.stringify({
18
- status: 'prompt',
19
- seedContext: context,
20
- message: 'Use seedContext.seedPrompt with seedContext.systemPrompt to generate the seed JSON, then call this tool again with the seed parameter.',
21
- }, null, 2);
22
- }
23
- catch (e) {
24
- return JSON.stringify({
25
- error: e instanceof Error ? e.message : String(e),
26
- }, null, 2);
27
- }
28
- }
29
- //# sourceMappingURL=seed-passthrough.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed-passthrough.js","sourceRoot":"","sources":["../../../../src/mcp/tools/seed-passthrough.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,qBAAqB,CACnC,MAAyB,EACzB,SAAmC,EACnC,KAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEnD,sDAAsD;QACtD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,MAAM,EAAE,WAAW;gBACnB,IAAI,EAAE,MAAM,CAAC,KAAK;aACnB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACd,CAAC;QAED,sDAAsD;QACtD,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,OAAO;YACpB,OAAO,EAAE,wIAAwI;SAClJ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { InterviewEngine } from '../../interview/engine.js';
2
- import type { SeedGenerator } from '../../seed/generator.js';
3
- import type { SeedInput } from '../schemas.js';
4
- export declare function handleSeed(engine: InterviewEngine, generator: SeedGenerator, input: SeedInput): Promise<string>;
5
- //# sourceMappingURL=seed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,wBAAsB,UAAU,CAC9B,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
@@ -1,19 +0,0 @@
1
- export async function handleSeed(engine, generator, input) {
2
- try {
3
- const session = engine.getSession(input.sessionId);
4
- const result = await generator.generate(session, input.force);
5
- if (!result.ok) {
6
- return JSON.stringify({ error: result.error.message }, null, 2);
7
- }
8
- return JSON.stringify({
9
- status: 'generated',
10
- seed: result.value,
11
- }, null, 2);
12
- }
13
- catch (e) {
14
- return JSON.stringify({
15
- error: e instanceof Error ? e.message : String(e),
16
- }, null, 2);
17
- }
18
- }
19
- //# sourceMappingURL=seed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../../src/mcp/tools/seed.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAuB,EACvB,SAAwB,EACxB,KAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,MAAM,CAAC,KAAK;SACnB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,25 +0,0 @@
1
- export interface ConvertOptions {
2
- /** 변환 완료 후 .cast 파일을 삭제할지 여부 (기본값: true) */
3
- deleteCastAfter?: boolean;
4
- /** 변환 완료 콜백 (파일 경로 출력 등) */
5
- onComplete?: (outputPath: string) => void;
6
- /** 변환 실패 콜백 */
7
- onError?: (err: Error) => void;
8
- }
9
- /**
10
- * AggConverter: agg 바이너리를 사용해 .cast → GIF 변환을 비동기 백그라운드로 수행한다.
11
- * convert()는 즉시 return하며, 변환은 백그라운드에서 진행된다.
12
- */
13
- export declare class AggConverter {
14
- /**
15
- * .cast 파일을 GIF로 변환한다 (백그라운드 비동기).
16
- * 반환값은 변환 완료를 기다리는 Promise이지만, 호출 측에서 await하지 않아도 된다.
17
- */
18
- convertAsync(castPath: string, outputPath: string, options?: ConvertOptions): Promise<string>;
19
- /**
20
- * GIF → MP4 변환 (ffmpeg 사용).
21
- * agg는 gif만 지원하므로 gifPath → mp4Path 변환은 ffmpeg에 위임한다.
22
- */
23
- convertGifToMp4Async(gifPath: string, mp4Path: string, options?: ConvertOptions): Promise<string>;
24
- }
25
- //# sourceMappingURL=agg-converter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agg-converter.d.ts","sourceRoot":"","sources":["../../../src/recording/agg-converter.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4BAA4B;IAC5B,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe;IACf,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC;IA6ClB;;;OAGG;IACH,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC;CAiCnB"}
@@ -1,80 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { unlink } from 'node:fs/promises';
3
- import { dirname } from 'node:path';
4
- import { mkdirSync } from 'node:fs';
5
- /**
6
- * AggConverter: agg 바이너리를 사용해 .cast → GIF 변환을 비동기 백그라운드로 수행한다.
7
- * convert()는 즉시 return하며, 변환은 백그라운드에서 진행된다.
8
- */
9
- export class AggConverter {
10
- /**
11
- * .cast 파일을 GIF로 변환한다 (백그라운드 비동기).
12
- * 반환값은 변환 완료를 기다리는 Promise이지만, 호출 측에서 await하지 않아도 된다.
13
- */
14
- convertAsync(castPath, outputPath, options = {}) {
15
- const { deleteCastAfter = true, onComplete, onError } = options;
16
- mkdirSync(dirname(outputPath), { recursive: true });
17
- return new Promise((resolve, reject) => {
18
- const child = spawn('agg', [castPath, outputPath], {
19
- stdio: ['ignore', 'pipe', 'pipe'],
20
- detached: false,
21
- });
22
- child.stderr?.on('data', (data) => {
23
- const msg = data.toString().trim();
24
- if (msg)
25
- process.stderr.write(`[agg] ${msg}\n`);
26
- });
27
- child.on('close', async (code) => {
28
- if (code !== 0) {
29
- const err = new Error(`agg exited with code ${code}. GIF conversion failed for: ${castPath}`);
30
- onError?.(err);
31
- reject(err);
32
- return;
33
- }
34
- if (deleteCastAfter) {
35
- try {
36
- await unlink(castPath);
37
- }
38
- catch {
39
- // 삭제 실패는 무시
40
- }
41
- }
42
- onComplete?.(outputPath);
43
- resolve(outputPath);
44
- });
45
- child.on('error', (err) => {
46
- onError?.(err);
47
- reject(err);
48
- });
49
- });
50
- }
51
- /**
52
- * GIF → MP4 변환 (ffmpeg 사용).
53
- * agg는 gif만 지원하므로 gifPath → mp4Path 변환은 ffmpeg에 위임한다.
54
- */
55
- convertGifToMp4Async(gifPath, mp4Path, options = {}) {
56
- const { onComplete, onError } = options;
57
- mkdirSync(dirname(mp4Path), { recursive: true });
58
- return new Promise((resolve, reject) => {
59
- const child = spawn('ffmpeg', ['-y', '-i', gifPath, '-movflags', 'faststart', '-pix_fmt', 'yuv420p', mp4Path], { stdio: ['ignore', 'pipe', 'pipe'], detached: false });
60
- child.stderr?.on('data', () => {
61
- // ffmpeg는 stderr에 진행상황 출력 — 무시
62
- });
63
- child.on('close', (code) => {
64
- if (code !== 0) {
65
- const err = new Error(`ffmpeg exited with code ${code}. MP4 conversion failed.`);
66
- onError?.(err);
67
- reject(err);
68
- return;
69
- }
70
- onComplete?.(mp4Path);
71
- resolve(mp4Path);
72
- });
73
- child.on('error', (err) => {
74
- onError?.(err);
75
- reject(err);
76
- });
77
- });
78
- }
79
- }
80
- //# sourceMappingURL=agg-converter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agg-converter.js","sourceRoot":"","sources":["../../../src/recording/agg-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAWpC;;;GAGG;AACH,MAAM,OAAO,YAAY;IACvB;;;OAGG;IACH,YAAY,CACV,QAAgB,EAChB,UAAkB,EAClB,UAA0B,EAAE;QAE5B,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAEhE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;gBACjD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,GAAG;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,wBAAwB,IAAI,gCAAgC,QAAQ,EAAE,CACvE,CAAC;oBACF,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;gBACT,CAAC;gBAED,IAAI,eAAe,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACzB,CAAC;oBAAC,MAAM,CAAC;wBACP,YAAY;oBACd,CAAC;gBACH,CAAC;gBAED,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC;gBACzB,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAClB,OAAe,EACf,OAAe,EACf,UAA0B,EAAE;QAE5B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAExC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,KAAK,CACjB,QAAQ,EACR,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAC/E,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CACvD,CAAC;YAEF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC5B,+BAA+B;YACjC,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,2BAA2B,IAAI,0BAA0B,CAAC,CAAC;oBACjF,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;gBACT,CAAC;gBACD,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,6 +0,0 @@
1
- export declare class AggInstaller {
2
- isInstalled(): boolean;
3
- ensureInstalled(): Promise<void>;
4
- private hasCommand;
5
- }
6
- //# sourceMappingURL=agg-installer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agg-installer.d.ts","sourceRoot":"","sources":["../../../src/recording/agg-installer.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IACvB,WAAW,IAAI,OAAO;IAShB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCtC,OAAO,CAAC,UAAU;CAQnB"}
@@ -1,50 +0,0 @@
1
- import { execSync, spawnSync } from 'node:child_process';
2
- export class AggInstaller {
3
- isInstalled() {
4
- try {
5
- execSync('which agg', { stdio: 'pipe' });
6
- return true;
7
- }
8
- catch {
9
- return false;
10
- }
11
- }
12
- async ensureInstalled() {
13
- if (this.isInstalled())
14
- return;
15
- console.log('📦 agg is not installed. Installing...');
16
- const hasCargo = this.hasCommand('cargo');
17
- const hasNpm = this.hasCommand('npm');
18
- if (hasCargo) {
19
- console.log(' → cargo install agg');
20
- const result = spawnSync('cargo', ['install', 'agg'], { stdio: 'inherit' });
21
- if (result.status !== 0) {
22
- throw new Error('Failed to install agg via cargo. Please install manually: https://github.com/asciinema/agg');
23
- }
24
- }
25
- else if (hasNpm) {
26
- console.log(' → npm install -g @asciinema/agg');
27
- const result = spawnSync('npm', ['install', '-g', '@asciinema/agg'], { stdio: 'inherit' });
28
- if (result.status !== 0) {
29
- throw new Error('Failed to install agg via npm. Please install manually: https://github.com/asciinema/agg');
30
- }
31
- }
32
- else {
33
- throw new Error('Neither cargo nor npm is available. Please install agg manually: https://github.com/asciinema/agg');
34
- }
35
- if (!this.isInstalled()) {
36
- throw new Error('agg installation failed. Please install it manually: https://github.com/asciinema/agg');
37
- }
38
- console.log('✅ agg installed successfully.\n');
39
- }
40
- hasCommand(cmd) {
41
- try {
42
- execSync(`which ${cmd}`, { stdio: 'pipe' });
43
- return true;
44
- }
45
- catch {
46
- return false;
47
- }
48
- }
49
- }
50
- //# sourceMappingURL=agg-installer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agg-installer.js","sourceRoot":"","sources":["../../../src/recording/agg-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,YAAY;IACvB,WAAW;QACT,IAAI,CAAC;YACH,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAE/B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAEO,UAAU,CAAC,GAAW;QAC5B,IAAI,CAAC;YACH,QAAQ,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}