@leanspec/ui 0.2.27 → 0.2.28

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 (140) hide show
  1. package/dist/{_baseUniq-DeCRnh20.js → _baseUniq-BtJuknnJ.js} +1 -1
  2. package/dist/{arc-C7Ja-5dr.js → arc-O-rE7YCB.js} +1 -1
  3. package/dist/{architecture-U656AL7Q-KasuNmTK.js → architecture-U656AL7Q-BeYqAAo7.js} +1 -1
  4. package/dist/{architectureDiagram-VXUJARFQ-CzHvPXJk.js → architectureDiagram-VXUJARFQ-DlDB9-tN.js} +3 -3
  5. package/dist/assets/{ChatSettingsPage-Dg4b6Mdg.js → ChatSettingsPage-DftRMMtU.js} +1 -1
  6. package/dist/assets/{ContextPage-DLKsvbaY.js → ContextPage-CbK7ew6E.js} +1 -1
  7. package/dist/assets/{DashboardPage-D5roDkxO.js → DashboardPage-DQH28Es5.js} +1 -1
  8. package/dist/assets/{DependenciesPage-BlTgal-s.js → DependenciesPage-E93gHx4A.js} +1 -1
  9. package/dist/assets/{FilesPage-u613OfDX.js → FilesPage-BBVU37eW.js} +1 -1
  10. package/dist/assets/{SessionDetailPage-CmisG8OY.js → SessionDetailPage-7Nyk2Vvu.js} +1 -1
  11. package/dist/assets/{SessionsPage-Ov5FSlG0.js → SessionsPage-aHydkWMy.js} +1 -1
  12. package/dist/assets/{SpecDetailPage-BSMc3nst.js → SpecDetailPage-C2P-OlXI.js} +1 -1
  13. package/dist/assets/{SpecsPage-Cj6pRfOw.js → SpecsPage-CYIBmjhJ.js} +1 -1
  14. package/dist/assets/{StatsPage-fmGNHIOe.js → StatsPage-BE2SnGB_.js} +1 -1
  15. package/dist/assets/{_baseUniq-B_33F2hD.js → _baseUniq-Dacov6Rp.js} +1 -1
  16. package/dist/assets/{arc-eeGjCukK.js → arc-C1vHYpyW.js} +1 -1
  17. package/dist/assets/{architectureDiagram-VXUJARFQ-Byc0dVxO.js → architectureDiagram-VXUJARFQ-CJuppwvY.js} +1 -1
  18. package/dist/assets/{blockDiagram-VD42YOAC-B8mIUKCH.js → blockDiagram-VD42YOAC-JKuFC2tB.js} +1 -1
  19. package/dist/assets/{c4Diagram-YG6GDRKO-DddzPdre.js → c4Diagram-YG6GDRKO-BGNHTjgV.js} +1 -1
  20. package/dist/assets/channel-BBhsr-rR.js +1 -0
  21. package/dist/assets/{chunk-4BX2VUAB-4RrLP-cY.js → chunk-4BX2VUAB-Dn9K_Ir6.js} +1 -1
  22. package/dist/assets/{chunk-55IACEB6-C8ucnnQR.js → chunk-55IACEB6-CEO6q7uK.js} +1 -1
  23. package/dist/assets/{chunk-B4BG7PRW-DwNhZZ7r.js → chunk-B4BG7PRW-DeXdKUh1.js} +1 -1
  24. package/dist/assets/{chunk-DI55MBZ5-orfhja3l.js → chunk-DI55MBZ5-CoaAvDwo.js} +1 -1
  25. package/dist/assets/{chunk-FMBD7UC4-BuW1I-fC.js → chunk-FMBD7UC4-D6UFHN61.js} +1 -1
  26. package/dist/assets/{chunk-QN33PNHL-BaA5PO8k.js → chunk-QN33PNHL-BhFNOvzX.js} +1 -1
  27. package/dist/assets/{chunk-QZHKN3VN-Dqa4tmK4.js → chunk-QZHKN3VN-XfElTSSy.js} +1 -1
  28. package/dist/assets/{chunk-TZMSLE5B-djzRrJuy.js → chunk-TZMSLE5B-DAIUJ9YL.js} +1 -1
  29. package/dist/assets/classDiagram-2ON5EDUG-DWsZgeAJ.js +1 -0
  30. package/dist/assets/classDiagram-v2-WZHVMYZB-DWsZgeAJ.js +1 -0
  31. package/dist/assets/clone-C2afIJUs.js +1 -0
  32. package/dist/assets/{code-block-37QAKDTI-AYxzHYF3.js → code-block-37QAKDTI-B3a0lz6t.js} +1 -1
  33. package/dist/assets/{cose-bilkent-S5V4N54A-Cnp1eSFl.js → cose-bilkent-S5V4N54A-BMI_fEV7.js} +1 -1
  34. package/dist/assets/{dagre-6UL2VRFP-CIAWAhQL.js → dagre-6UL2VRFP-Llr-yTYV.js} +1 -1
  35. package/dist/assets/{diagram-PSM6KHXK-CPeehxEt.js → diagram-PSM6KHXK-DwgNF44T.js} +1 -1
  36. package/dist/assets/{diagram-QEK2KX5R-4rkmVp8d.js → diagram-QEK2KX5R-ITZ8Vmt3.js} +1 -1
  37. package/dist/assets/{diagram-S2PKOQOG-CHZnsBbD.js → diagram-S2PKOQOG-BIRpYLio.js} +1 -1
  38. package/dist/assets/{erDiagram-Q2GNP2WA-C4TTAGaG.js → erDiagram-Q2GNP2WA-BqqB9yVU.js} +1 -1
  39. package/dist/assets/{flowDiagram-NV44I4VS-C9c1GVlY.js → flowDiagram-NV44I4VS-BNAcE_z4.js} +1 -1
  40. package/dist/assets/{funnel-x-BvY4n8AU.js → funnel-x-DD5BpUpW.js} +1 -1
  41. package/dist/assets/{ganttDiagram-JELNMOA3-DPd-3uLN.js → ganttDiagram-JELNMOA3-DXHyY80Y.js} +1 -1
  42. package/dist/assets/{gitGraphDiagram-NY62KEGX-Drq0KNG5.js → gitGraphDiagram-NY62KEGX-BgdesX0s.js} +1 -1
  43. package/dist/assets/{graph-9MjkFnGf.js → graph-0GUv5NSb.js} +1 -1
  44. package/dist/assets/index-C5tD8lpO.css +1 -0
  45. package/dist/assets/{index-DoWWshr8.js → index-DSWQaVP_.js} +280 -280
  46. package/dist/assets/{info-RxIWhHbS.js → info-BoE52mzX.js} +1 -1
  47. package/dist/assets/{infoDiagram-WHAUD3N6-BEa020kA.js → infoDiagram-WHAUD3N6-C_TEtQdE.js} +1 -1
  48. package/dist/assets/{journeyDiagram-XKPGCS4Q-mAbpJFG8.js → journeyDiagram-XKPGCS4Q-JFcsNaoS.js} +1 -1
  49. package/dist/assets/{kanban-definition-3W4ZIXB7-BbUqw1vO.js → kanban-definition-3W4ZIXB7-D74EewjL.js} +1 -1
  50. package/dist/assets/{layout-BOFaVoue.js → layout-DlGkdPxn.js} +1 -1
  51. package/dist/assets/{linear-xUbiORsA.js → linear-DMzKEHWt.js} +1 -1
  52. package/dist/assets/{min-eHwPCINR.js → min-D9GrKucE.js} +1 -1
  53. package/dist/assets/{mindmap-definition-VGOIOE7T-DoP6Td_B.js → mindmap-definition-VGOIOE7T-bEmI6QdX.js} +1 -1
  54. package/dist/assets/{page-transition-dCsDSjnv.js → page-transition-BMYHE1EG.js} +1 -1
  55. package/dist/assets/{pieDiagram-ADFJNKIX-Dp_SBNAy.js → pieDiagram-ADFJNKIX-LrgsuoFm.js} +1 -1
  56. package/dist/assets/{quadrantDiagram-AYHSOK5B-D6Jp00F5.js → quadrantDiagram-AYHSOK5B-XAEnrTcF.js} +1 -1
  57. package/dist/assets/{refresh-ccw-DGe62KT5.js → refresh-ccw-CqpLwlfM.js} +1 -1
  58. package/dist/assets/{requirementDiagram-UZGBJVZJ-DOBz3Rdv.js → requirementDiagram-UZGBJVZJ-DQ1RBDeF.js} +1 -1
  59. package/dist/assets/{sankeyDiagram-TZEHDZUN-Bz7vjGqd.js → sankeyDiagram-TZEHDZUN-4LprtsUC.js} +1 -1
  60. package/dist/assets/{sequenceDiagram-WL72ISMW-ByPYmOvZ.js → sequenceDiagram-WL72ISMW-ClnYRNdC.js} +1 -1
  61. package/dist/assets/{session-mode-badge-DCssJwfh.js → session-mode-badge-auIgZbxq.js} +1 -1
  62. package/dist/assets/{stat-card-ic_H-ddZ.js → stat-card-BdyKZs20.js} +1 -1
  63. package/dist/assets/{stateDiagram-FKZM4ZOC-W833g5qw.js → stateDiagram-FKZM4ZOC-xdSWJeM-.js} +1 -1
  64. package/dist/assets/stateDiagram-v2-4FDKWEC3-DyupCcgD.js +1 -0
  65. package/dist/assets/{table-of-contents-B4pUXfVp.js → table-of-contents-B56zI3O0.js} +1 -1
  66. package/dist/assets/{time-s4hpWI0y.js → time-BvMRJTpu.js} +1 -1
  67. package/dist/assets/{timeline-definition-IT6M3QCI-B3f6ZKjd.js → timeline-definition-IT6M3QCI-BMCplyxv.js} +1 -1
  68. package/dist/assets/{treemap-KMMF4GRG-CkWhJIwZ.js → treemap-KMMF4GRG-DXswoz8b.js} +1 -1
  69. package/dist/assets/{trending-up-Bp_uZ6i5.js → trending-up-qrMVjIzR.js} +1 -1
  70. package/dist/assets/{validation-badge-B9E1wcwj.js → validation-badge-DKLDRlSe.js} +1 -1
  71. package/dist/assets/{xychartDiagram-PRI3JC2R-Cj3LJwsf.js → xychartDiagram-PRI3JC2R-LmjJ6LwN.js} +1 -1
  72. package/dist/{blockDiagram-VD42YOAC-DRN0jNqr.js → blockDiagram-VD42YOAC-Cvqa8noV.js} +5 -5
  73. package/dist/{c4Diagram-YG6GDRKO-CBxJIsoM.js → c4Diagram-YG6GDRKO-D4hwame5.js} +2 -2
  74. package/dist/{channel-C2ap0mKj.js → channel-C59vLj3i.js} +1 -1
  75. package/dist/{chunk-4BX2VUAB-CZFPLiei.js → chunk-4BX2VUAB-BwnJRlDR.js} +1 -1
  76. package/dist/{chunk-55IACEB6-CF8NKj4_.js → chunk-55IACEB6-CUvZDifa.js} +1 -1
  77. package/dist/{chunk-B4BG7PRW-C3jkgdyU.js → chunk-B4BG7PRW-0lyBGfGe.js} +4 -4
  78. package/dist/{chunk-DI55MBZ5-D0hqaHNM.js → chunk-DI55MBZ5-DzuHPqVn.js} +3 -3
  79. package/dist/{chunk-FMBD7UC4-BMvRco5D.js → chunk-FMBD7UC4-CXI1mAvv.js} +1 -1
  80. package/dist/{chunk-QN33PNHL-D8WFPrQ5.js → chunk-QN33PNHL-BX4buhkI.js} +1 -1
  81. package/dist/{chunk-QZHKN3VN-BBkUib8s.js → chunk-QZHKN3VN-p7skz8XQ.js} +1 -1
  82. package/dist/{chunk-TZMSLE5B-CArYpbwP.js → chunk-TZMSLE5B-BaJuPr6J.js} +1 -1
  83. package/dist/{classDiagram-v2-WZHVMYZB-BCig139j.js → classDiagram-2ON5EDUG-Be0dkyy-.js} +2 -2
  84. package/dist/{classDiagram-2ON5EDUG-BCig139j.js → classDiagram-v2-WZHVMYZB-Be0dkyy-.js} +2 -2
  85. package/dist/{clone-DPyGLWtv.js → clone-DDo6Ol2x.js} +1 -1
  86. package/dist/{cose-bilkent-S5V4N54A-C5SYwGsk.js → cose-bilkent-S5V4N54A-Bt2GyPMu.js} +1 -1
  87. package/dist/{dagre-6UL2VRFP-C8I3plmM.js → dagre-6UL2VRFP-B4GNvmUo.js} +5 -5
  88. package/dist/{diagram-PSM6KHXK-cXC7AIdZ.js → diagram-PSM6KHXK-CXpX_sN2.js} +4 -4
  89. package/dist/{diagram-QEK2KX5R-CXNiTV6f.js → diagram-QEK2KX5R-BTpahbEj.js} +3 -3
  90. package/dist/{diagram-S2PKOQOG-CxGzqgZF.js → diagram-S2PKOQOG-BAp1IJGB.js} +3 -3
  91. package/dist/{erDiagram-Q2GNP2WA-CcY6lgTn.js → erDiagram-Q2GNP2WA-RpXtWNOz.js} +4 -4
  92. package/dist/{flowDiagram-NV44I4VS-12EmxlpA.js → flowDiagram-NV44I4VS-DVAeihFU.js} +5 -5
  93. package/dist/{ganttDiagram-JELNMOA3-pNkGSHoM.js → ganttDiagram-JELNMOA3-NnFNN967.js} +2 -2
  94. package/dist/{gitGraph-F6HP7TQM-DUrKWg_A.js → gitGraph-F6HP7TQM-BA0p69BL.js} +1 -1
  95. package/dist/{gitGraphDiagram-NY62KEGX-BXO3EwIS.js → gitGraphDiagram-NY62KEGX-STAanBwe.js} +4 -4
  96. package/dist/{graph-D813u3VC.js → graph-Cl7g8mJo.js} +2 -2
  97. package/dist/{index-ChBmztZR.js → index-OMQgmcXQ.js} +4104 -4091
  98. package/dist/index.html +2 -2
  99. package/dist/info-NVLQJR56-iVvUDnHs.js +5 -0
  100. package/dist/{infoDiagram-WHAUD3N6-DLh94vHX.js → infoDiagram-WHAUD3N6-Ch5c_x3A.js} +2 -2
  101. package/dist/{journeyDiagram-XKPGCS4Q-CXPtgCeQ.js → journeyDiagram-XKPGCS4Q-BT3WQmRa.js} +4 -4
  102. package/dist/{kanban-definition-3W4ZIXB7-CdIz6-22.js → kanban-definition-3W4ZIXB7-CiJoVHr_.js} +2 -2
  103. package/dist/{layout-cIjTHX6V.js → layout-BsDPuqRL.js} +4 -4
  104. package/dist/lib/components/library/ui/index.d.ts +1 -0
  105. package/dist/lib/components/library/ui/label.d.ts +3 -0
  106. package/dist/lib/components/projects/github-import-dialog.d.ts +6 -0
  107. package/dist/lib/index.js +350 -349
  108. package/dist/lib/lib/api.d.ts +12 -0
  109. package/dist/lib/lib/backend-adapter/core.d.ts +14 -2
  110. package/dist/lib/lib/backend-adapter/http.d.ts +13 -1
  111. package/dist/lib/lib/backend-adapter/tauri.d.ts +13 -1
  112. package/dist/lib/types/api.d.ts +35 -0
  113. package/dist/{linear-2z6avE3r.js → linear-mOFrDt-p.js} +1 -1
  114. package/dist/{mermaid-parser.core-WMnVe1c0.js → mermaid-parser.core-BKozsbnK.js} +10 -10
  115. package/dist/{min-DUysNg_V.js → min-BiKl7Djw.js} +2 -2
  116. package/dist/{mindmap-definition-VGOIOE7T-DEm273Z9.js → mindmap-definition-VGOIOE7T-BD-DdVQV.js} +3 -3
  117. package/dist/{packet-BFZMPI3H-CmSJj4N0.js → packet-BFZMPI3H-BCwLzQdp.js} +1 -1
  118. package/dist/pie-7BOR55EZ-0JoXf6-u.js +5 -0
  119. package/dist/{pieDiagram-ADFJNKIX-Ke8r-mM4.js → pieDiagram-ADFJNKIX-Bu8RN200.js} +4 -4
  120. package/dist/{quadrantDiagram-AYHSOK5B-DLLlZTBr.js → quadrantDiagram-AYHSOK5B-DI1Je7Nn.js} +2 -2
  121. package/dist/radar-NHE76QYJ-FdQK6UPP.js +5 -0
  122. package/dist/{requirementDiagram-UZGBJVZJ-BR4B8eTH.js → requirementDiagram-UZGBJVZJ-Ddx_vMRb.js} +3 -3
  123. package/dist/{sankeyDiagram-TZEHDZUN-pDGOsl6Q.js → sankeyDiagram-TZEHDZUN-iAFyjtkY.js} +1 -1
  124. package/dist/{sequenceDiagram-WL72ISMW-yt5mqXYT.js → sequenceDiagram-WL72ISMW-NRQcqxnw.js} +3 -3
  125. package/dist/{stateDiagram-FKZM4ZOC-C-huUZaG.js → stateDiagram-FKZM4ZOC-3S1hbbmf.js} +4 -4
  126. package/dist/{stateDiagram-v2-4FDKWEC3-CSzbVv4p.js → stateDiagram-v2-4FDKWEC3-E5a40kZz.js} +2 -2
  127. package/dist/{timeline-definition-IT6M3QCI-DOzsM3OK.js → timeline-definition-IT6M3QCI-BCFa3ZrF.js} +2 -2
  128. package/dist/{treemap-KMMF4GRG-DGnMOcp3.js → treemap-KMMF4GRG-BGlzeb2l.js} +1 -1
  129. package/dist/ui.css +1 -1
  130. package/dist/{xychartDiagram-PRI3JC2R-C-4j16qj.js → xychartDiagram-PRI3JC2R-CopvajdE.js} +2 -2
  131. package/package.json +2 -2
  132. package/dist/assets/channel-DlZlZmTt.js +0 -1
  133. package/dist/assets/classDiagram-2ON5EDUG-C2Yf3yFU.js +0 -1
  134. package/dist/assets/classDiagram-v2-WZHVMYZB-C2Yf3yFU.js +0 -1
  135. package/dist/assets/clone-D-4UeXFh.js +0 -1
  136. package/dist/assets/index-DX91j_KV.css +0 -1
  137. package/dist/assets/stateDiagram-v2-4FDKWEC3-CwLThngZ.js +0 -1
  138. package/dist/info-NVLQJR56-DBBp-UIi.js +0 -5
  139. package/dist/pie-7BOR55EZ-x5AF7tG5.js +0 -5
  140. package/dist/radar-NHE76QYJ-CIhcw_Rm.js +0 -5
@@ -29,6 +29,18 @@ declare class ProjectAPI {
29
29
  deleteProject: (projectId: string) => Promise<void>;
30
30
  validateProject: (projectId: string) => Promise<import('./backend-adapter').ProjectValidationResponse>;
31
31
  listDirectory: (path?: string) => Promise<import('./backend-adapter').DirectoryListResponse>;
32
+ listGithubRepos: () => Promise<import('./backend-adapter').GitHubRepo[]>;
33
+ detectGithubSpecs: (repo: string, branch?: string, token?: string) => Promise<import('./backend-adapter').GitHubDetectResult | null>;
34
+ importGithubRepo: (repo: string, opts?: {
35
+ branch?: string;
36
+ specsPath?: string;
37
+ name?: string;
38
+ token?: string;
39
+ }) => Promise<import('./backend-adapter').GitHubImportResult>;
40
+ syncGithubProject: (projectId: string) => Promise<{
41
+ projectId: string;
42
+ syncedSpecs: number;
43
+ }>;
32
44
  getContextFiles: () => Promise<import('./backend-adapter').ContextFileListItem[]>;
33
45
  getContextFile: (path: string) => Promise<import('./backend-adapter').ContextFileContent>;
34
46
  getProjectContext(): Promise<import('../types/api').ProjectContext>;
@@ -1,4 +1,4 @@
1
- import { BatchMetadataResponse, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, FileContentResponse, FileListResponse, FileSearchResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectStatsResponse, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, SpecTokenResponse, SpecValidationResponse, SpecSearchFilters, SpecSearchResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse } from '../../types/api';
1
+ import { BatchMetadataResponse, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, FileContentResponse, FileListResponse, FileSearchResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectStatsResponse, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, SpecTokenResponse, SpecValidationResponse, SpecSearchFilters, SpecSearchResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse, GitHubRepo, GitHubDetectResult, GitHubImportResult } from '../../types/api';
2
2
  import { ChatConfig } from '../../types/chat-config';
3
3
  import { ModelsRegistryResponse } from '../../types/models-registry';
4
4
  export interface ChatStorageInfo {
@@ -160,5 +160,17 @@ export interface BackendAdapter {
160
160
  getProjectFiles(projectId: string, path?: string): Promise<FileListResponse>;
161
161
  getProjectFile(projectId: string, path: string): Promise<FileContentResponse>;
162
162
  searchProjectFiles(projectId: string, query: string, limit?: number): Promise<FileSearchResponse>;
163
+ listGithubRepos(): Promise<GitHubRepo[]>;
164
+ detectGithubSpecs(repo: string, branch?: string, token?: string): Promise<GitHubDetectResult | null>;
165
+ importGithubRepo(repo: string, opts?: {
166
+ branch?: string;
167
+ specsPath?: string;
168
+ name?: string;
169
+ token?: string;
170
+ }): Promise<GitHubImportResult>;
171
+ syncGithubProject(projectId: string): Promise<{
172
+ projectId: string;
173
+ syncedSpecs: number;
174
+ }>;
163
175
  }
164
- export type { BatchMetadataResponse, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectStatsResponse, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, SpecTokenResponse, SpecValidationResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse, ChatConfig, ModelsRegistryResponse, FileListResponse, FileContentResponse, FileSearchResponse, SpecSearchFilters, SpecSearchResponse, };
176
+ export type { BatchMetadataResponse, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectStatsResponse, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, SpecTokenResponse, SpecValidationResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse, ChatConfig, ModelsRegistryResponse, FileListResponse, FileContentResponse, FileSearchResponse, SpecSearchFilters, SpecSearchResponse, GitHubRepo, GitHubDetectResult, GitHubImportResult, };
@@ -1,4 +1,4 @@
1
- import { BackendAdapter, BatchMetadataResponse, ChatStorageInfo, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, FileContentResponse, FileListResponse, FileSearchResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, SpecTokenResponse, SpecValidationResponse, SpecSearchFilters, SpecSearchResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse, ChatConfig, ModelsRegistryResponse } from './core';
1
+ import { BackendAdapter, BatchMetadataResponse, ChatStorageInfo, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, FileContentResponse, FileListResponse, FileSearchResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, SpecTokenResponse, SpecValidationResponse, SpecSearchFilters, SpecSearchResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse, ChatConfig, ModelsRegistryResponse, GitHubRepo, GitHubDetectResult, GitHubImportResult } from './core';
2
2
  /**
3
3
  * HTTP adapter for web browser - connects to Rust HTTP server
4
4
  */
@@ -140,4 +140,16 @@ export declare class HttpBackendAdapter implements BackendAdapter {
140
140
  getProjectFiles(projectId: string, path?: string): Promise<FileListResponse>;
141
141
  getProjectFile(projectId: string, path: string): Promise<FileContentResponse>;
142
142
  searchProjectFiles(projectId: string, query: string, limit?: number): Promise<FileSearchResponse>;
143
+ listGithubRepos(): Promise<GitHubRepo[]>;
144
+ detectGithubSpecs(repo: string, branch?: string, token?: string): Promise<GitHubDetectResult | null>;
145
+ importGithubRepo(repo: string, opts?: {
146
+ branch?: string;
147
+ specsPath?: string;
148
+ name?: string;
149
+ token?: string;
150
+ }): Promise<GitHubImportResult>;
151
+ syncGithubProject(projectId: string): Promise<{
152
+ projectId: string;
153
+ syncedSpecs: number;
154
+ }>;
143
155
  }
@@ -1,4 +1,4 @@
1
- import { BackendAdapter, BatchMetadataResponse, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, FileContentResponse, FileListResponse, FileSearchResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, ChatConfig, ChatStorageInfo, ModelsRegistryResponse, SpecTokenResponse, SpecValidationResponse, SpecSearchFilters, SpecSearchResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse } from './core';
1
+ import { BackendAdapter, BatchMetadataResponse, ContextFileContent, ContextFileListItem, DependencyGraph, DirectoryListResponse, FileContentResponse, FileListResponse, FileSearchResponse, ListParams, Spec, SpecDetail, Stats, Project, ProjectValidationResponse, ProjectsResponse, ListSpecsResponse, ProjectContext, MachinesResponse, Session, SessionArchiveResult, SessionEvent, SessionLog, SessionMode, ChatConfig, ChatStorageInfo, ModelsRegistryResponse, SpecTokenResponse, SpecValidationResponse, SpecSearchFilters, SpecSearchResponse, RunnerDefinition, RunnerListResponse, RunnerScope, RunnerValidateResponse, RunnerVersionResponse, GitHubRepo, GitHubDetectResult, GitHubImportResult } from './core';
2
2
  /**
3
3
  * Tauri adapter for desktop app - uses IPC commands
4
4
  */
@@ -135,4 +135,16 @@ export declare class TauriBackendAdapter implements BackendAdapter {
135
135
  getProjectFile(projectId: string, path: string): Promise<FileContentResponse>;
136
136
  searchProjectFiles(projectId: string, query: string, limit?: number): Promise<FileSearchResponse>;
137
137
  searchSpecs(projectId: string, query: string, filters?: SpecSearchFilters): Promise<SpecSearchResponse>;
138
+ listGithubRepos(): Promise<GitHubRepo[]>;
139
+ detectGithubSpecs(_repo: string, _branch?: string, _token?: string): Promise<GitHubDetectResult | null>;
140
+ importGithubRepo(_repo: string, _opts?: {
141
+ branch?: string;
142
+ specsPath?: string;
143
+ name?: string;
144
+ token?: string;
145
+ }): Promise<GitHubImportResult>;
146
+ syncGithubProject(_projectId: string): Promise<{
147
+ projectId: string;
148
+ syncedSpecs: number;
149
+ }>;
138
150
  }
@@ -212,6 +212,13 @@ export interface Project {
212
212
  description?: string | null;
213
213
  isFeatured?: boolean;
214
214
  lastAccessed?: string | Date | null;
215
+ source?: 'local' | 'github';
216
+ github?: {
217
+ repo: string;
218
+ branch: string;
219
+ specsPath: string;
220
+ lastSynced?: string | null;
221
+ } | null;
215
222
  githubOwner?: string;
216
223
  githubRepo?: string;
217
224
  }
@@ -220,6 +227,34 @@ export interface ProjectsResponse {
220
227
  recentProjects?: string[];
221
228
  favoriteProjects?: string[];
222
229
  }
230
+ export interface GitHubRepo {
231
+ fullName: string;
232
+ description?: string | null;
233
+ defaultBranch: string;
234
+ private: boolean;
235
+ htmlUrl: string;
236
+ }
237
+ export interface DetectedSpec {
238
+ path: string;
239
+ title?: string | null;
240
+ status?: string | null;
241
+ priority?: string | null;
242
+ }
243
+ export interface GitHubDetectResult {
244
+ repo: string;
245
+ branch: string;
246
+ specsDir: string;
247
+ specCount: number;
248
+ specs: DetectedSpec[];
249
+ }
250
+ export interface GitHubImportResult {
251
+ projectId: string;
252
+ projectName: string;
253
+ repo: string;
254
+ branch: string;
255
+ specsPath: string;
256
+ syncedSpecs: number;
257
+ }
223
258
  export interface ProjectValidationResult {
224
259
  isValid: boolean;
225
260
  error?: string | null;
@@ -1,4 +1,4 @@
1
- import { aK as j, aL as p, aM as w, aN as q, aO as k } from "./index-ChBmztZR.js";
1
+ import { aK as j, aL as p, aM as w, aN as q, aO as k } from "./index-OMQgmcXQ.js";
2
2
  import { i as D } from "./init-DjUOC4st.js";
3
3
  import { e as M, f as F, a as z, b as B } from "./defaultLocale-D7EN2tov.js";
4
4
  function g(n, r) {
@@ -1,6 +1,6 @@
1
- import { m as st, f as Sd, d as kd } from "./min-DUysNg_V.js";
2
- import { b as Id, l as Cd, d as wd, m as Nd, r as Co, n as Rs } from "./_baseUniq-DeCRnh20.js";
3
- import { b8 as _d } from "./index-ChBmztZR.js";
1
+ import { m as st, f as Sd, d as kd } from "./min-BiKl7Djw.js";
2
+ import { b as Id, l as Cd, d as wd, m as Nd, r as Co, n as Rs } from "./_baseUniq-BtJuknnJ.js";
3
+ import { b8 as _d } from "./index-OMQgmcXQ.js";
4
4
  function bd(t, e) {
5
5
  return Id(st(t, e));
6
6
  }
@@ -14111,31 +14111,31 @@ function Mx(t = St) {
14111
14111
  A(Mx, "createTreemapServices");
14112
14112
  var nt = {}, Dx = {
14113
14113
  info: /* @__PURE__ */ A(async () => {
14114
- const { createInfoServices: t } = await import("./info-NVLQJR56-DBBp-UIi.js"), e = t().Info.parser.LangiumParser;
14114
+ const { createInfoServices: t } = await import("./info-NVLQJR56-iVvUDnHs.js"), e = t().Info.parser.LangiumParser;
14115
14115
  nt.info = e;
14116
14116
  }, "info"),
14117
14117
  packet: /* @__PURE__ */ A(async () => {
14118
- const { createPacketServices: t } = await import("./packet-BFZMPI3H-CmSJj4N0.js"), e = t().Packet.parser.LangiumParser;
14118
+ const { createPacketServices: t } = await import("./packet-BFZMPI3H-BCwLzQdp.js"), e = t().Packet.parser.LangiumParser;
14119
14119
  nt.packet = e;
14120
14120
  }, "packet"),
14121
14121
  pie: /* @__PURE__ */ A(async () => {
14122
- const { createPieServices: t } = await import("./pie-7BOR55EZ-x5AF7tG5.js"), e = t().Pie.parser.LangiumParser;
14122
+ const { createPieServices: t } = await import("./pie-7BOR55EZ-0JoXf6-u.js"), e = t().Pie.parser.LangiumParser;
14123
14123
  nt.pie = e;
14124
14124
  }, "pie"),
14125
14125
  architecture: /* @__PURE__ */ A(async () => {
14126
- const { createArchitectureServices: t } = await import("./architecture-U656AL7Q-KasuNmTK.js"), e = t().Architecture.parser.LangiumParser;
14126
+ const { createArchitectureServices: t } = await import("./architecture-U656AL7Q-BeYqAAo7.js"), e = t().Architecture.parser.LangiumParser;
14127
14127
  nt.architecture = e;
14128
14128
  }, "architecture"),
14129
14129
  gitGraph: /* @__PURE__ */ A(async () => {
14130
- const { createGitGraphServices: t } = await import("./gitGraph-F6HP7TQM-DUrKWg_A.js"), e = t().GitGraph.parser.LangiumParser;
14130
+ const { createGitGraphServices: t } = await import("./gitGraph-F6HP7TQM-BA0p69BL.js"), e = t().GitGraph.parser.LangiumParser;
14131
14131
  nt.gitGraph = e;
14132
14132
  }, "gitGraph"),
14133
14133
  radar: /* @__PURE__ */ A(async () => {
14134
- const { createRadarServices: t } = await import("./radar-NHE76QYJ-CIhcw_Rm.js"), e = t().Radar.parser.LangiumParser;
14134
+ const { createRadarServices: t } = await import("./radar-NHE76QYJ-FdQK6UPP.js"), e = t().Radar.parser.LangiumParser;
14135
14135
  nt.radar = e;
14136
14136
  }, "radar"),
14137
14137
  treemap: /* @__PURE__ */ A(async () => {
14138
- const { createTreemapServices: t } = await import("./treemap-KMMF4GRG-DGnMOcp3.js"), e = t().Treemap.parser.LangiumParser;
14138
+ const { createTreemapServices: t } = await import("./treemap-KMMF4GRG-BGlzeb2l.js"), e = t().Treemap.parser.LangiumParser;
14139
14139
  nt.treemap = e;
14140
14140
  }, "treemap")
14141
14141
  };
@@ -1,5 +1,5 @@
1
- import { b, a as m, c as d, d as h, i as l } from "./_baseUniq-DeCRnh20.js";
2
- import { aD as g, aE as o, aF as p } from "./index-ChBmztZR.js";
1
+ import { b, a as m, c as d, d as h, i as l } from "./_baseUniq-BtJuknnJ.js";
2
+ import { aD as g, aE as o, aF as p } from "./index-OMQgmcXQ.js";
3
3
  function L(a) {
4
4
  var n = a == null ? 0 : a.length;
5
5
  return n ? b(a) : [];
@@ -1,6 +1,6 @@
1
- import { g as le } from "./chunk-55IACEB6-CF8NKj4_.js";
2
- import { s as he } from "./chunk-QN33PNHL-D8WFPrQ5.js";
3
- import { _ as l, l as C, o as de, r as ge, F, c as W, i as V, aC as ue, W as pe, X as fe, Y as ye } from "./index-ChBmztZR.js";
1
+ import { g as le } from "./chunk-55IACEB6-CUvZDifa.js";
2
+ import { s as he } from "./chunk-QN33PNHL-BX4buhkI.js";
3
+ import { _ as l, l as C, o as de, r as ge, F, c as W, i as V, aC as ue, W as pe, X as fe, Y as ye } from "./index-OMQgmcXQ.js";
4
4
  const E = [];
5
5
  for (let t = 0; t < 256; ++t)
6
6
  E.push((t + 256).toString(16).slice(1));
@@ -1,4 +1,4 @@
1
- import { P as c, a as r } from "./mermaid-parser.core-WMnVe1c0.js";
1
+ import { P as c, a as r } from "./mermaid-parser.core-BKozsbnK.js";
2
2
  export {
3
3
  c as PacketModule,
4
4
  r as createPacketServices
@@ -0,0 +1,5 @@
1
+ import { b as a, d as i } from "./mermaid-parser.core-BKozsbnK.js";
2
+ export {
3
+ a as PieModule,
4
+ i as createPieServices
5
+ };
@@ -1,7 +1,7 @@
1
- import { a8 as S, a3 as F, aB as j, _ as p, g as q, s as H, a as Z, b as J, q as K, p as Q, l as z, c as X, D as Y, H as ee, N as te, e as ae, y as re, F as ne } from "./index-ChBmztZR.js";
2
- import { p as ie } from "./chunk-4BX2VUAB-CZFPLiei.js";
3
- import { p as se } from "./mermaid-parser.core-WMnVe1c0.js";
4
- import { d as I } from "./arc-C7Ja-5dr.js";
1
+ import { a8 as S, a3 as F, aB as j, _ as p, g as q, s as H, a as Z, b as J, q as K, p as Q, l as z, c as X, D as Y, H as ee, N as te, e as ae, y as re, F as ne } from "./index-OMQgmcXQ.js";
2
+ import { p as ie } from "./chunk-4BX2VUAB-BwnJRlDR.js";
3
+ import { p as se } from "./mermaid-parser.core-BKozsbnK.js";
4
+ import { d as I } from "./arc-O-rE7YCB.js";
5
5
  import { o as le } from "./ordinal-B6-f3MAq.js";
6
6
  function oe(e, a) {
7
7
  return a < e ? -1 : a > e ? 1 : a >= e ? 0 : NaN;
@@ -1,5 +1,5 @@
1
- import { _ as o, s as _e, g as Ae, q as ie, p as ke, a as Fe, b as Pe, c as zt, l as bt, d as Lt, e as ve, y as Ce, F as D, K as Le, i as Ee } from "./index-ChBmztZR.js";
2
- import { l as ee } from "./linear-2z6avE3r.js";
1
+ import { _ as o, s as _e, g as Ae, q as ie, p as ke, a as Fe, b as Pe, c as zt, l as bt, d as Lt, e as ve, y as Ce, F as D, K as Le, i as Ee } from "./index-OMQgmcXQ.js";
2
+ import { l as ee } from "./linear-mOFrDt-p.js";
3
3
  var Et = (function() {
4
4
  var t = /* @__PURE__ */ o(function(M, r, l, x) {
5
5
  for (l = l || {}, x = M.length; x--; l[M[x]] = r) ;
@@ -0,0 +1,5 @@
1
+ import { R as r, g as d } from "./mermaid-parser.core-BKozsbnK.js";
2
+ export {
3
+ r as RadarModule,
4
+ d as createRadarServices
5
+ };
@@ -1,6 +1,6 @@
1
- import { g as Ge } from "./chunk-55IACEB6-CF8NKj4_.js";
2
- import { s as ze } from "./chunk-QN33PNHL-D8WFPrQ5.js";
3
- import { _ as f, b as Xe, a as Je, s as Ze, g as et, p as tt, q as st, c as Ne, l as qe, y as it, B as rt, o as nt, r as at, u as lt } from "./index-ChBmztZR.js";
1
+ import { g as Ge } from "./chunk-55IACEB6-CUvZDifa.js";
2
+ import { s as ze } from "./chunk-QN33PNHL-BX4buhkI.js";
3
+ import { _ as f, b as Xe, a as Je, s as Ze, g as et, p as tt, q as st, c as Ne, l as qe, y as it, B as rt, o as nt, r as at, u as lt } from "./index-OMQgmcXQ.js";
4
4
  var Ae = (function() {
5
5
  var e = /* @__PURE__ */ f(function(P, i, n, c) {
6
6
  for (n = n || {}, c = P.length; c--; n[P[c]] = i) ;
@@ -1,4 +1,4 @@
1
- import { _ as g, p as _t, q as xt, s as vt, g as bt, b as wt, a as St, c as lt, z as Lt, d as H, V as Et, y as At, k as Tt } from "./index-ChBmztZR.js";
1
+ import { _ as g, p as _t, q as xt, s as vt, g as bt, b as wt, a as St, c as lt, z as Lt, d as H, V as Et, y as At, k as Tt } from "./index-OMQgmcXQ.js";
2
2
  import { o as Mt } from "./ordinal-B6-f3MAq.js";
3
3
  function Nt(t) {
4
4
  for (var e = t.length / 6 | 0, i = new Array(e), a = 0; a < e; ) i[a] = "#" + t.slice(a * 6, ++a * 6);
@@ -1,6 +1,6 @@
1
- import { a as we, b as Xt, g as ct, d as ve, c as Jt, e as Qt } from "./chunk-TZMSLE5B-CArYpbwP.js";
2
- import { _ as f, n as Ie, c as st, d as St, l as Q, j as re, e as Le, f as _e, k as I, b as se, s as Ae, p as ke, a as Pe, g as Ne, q as Se, t as Me, J as Re, y as De, i as Mt, u as W, L as z, M as _t, N as ie, Z as Ce, O as Oe, P as ne, E as Ht } from "./index-ChBmztZR.js";
3
- import { I as Be } from "./chunk-QZHKN3VN-BBkUib8s.js";
1
+ import { a as we, b as Xt, g as ct, d as ve, c as Jt, e as Qt } from "./chunk-TZMSLE5B-BaJuPr6J.js";
2
+ import { _ as f, n as Ie, c as st, d as St, l as Q, j as re, e as Le, f as _e, k as I, b as se, s as Ae, p as ke, a as Pe, g as Ne, q as Se, t as Me, J as Re, y as De, i as Mt, u as W, L as z, M as _t, N as ie, Z as Ce, O as Oe, P as ne, E as Ht } from "./index-OMQgmcXQ.js";
3
+ import { I as Be } from "./chunk-QZHKN3VN-p7skz8XQ.js";
4
4
  var Ut = (function() {
5
5
  var e = /* @__PURE__ */ f(function(pt, v, A, L) {
6
6
  for (A = A || {}, L = pt.length; L--; A[pt[L]] = v) ;
@@ -1,7 +1,7 @@
1
- import { s as G, a as W, S as N } from "./chunk-DI55MBZ5-D0hqaHNM.js";
2
- import { _ as f, c as t, d as H, l as S, e as P, k as z, R as _, S as U, O as C, u as F } from "./index-ChBmztZR.js";
3
- import { G as O } from "./graph-D813u3VC.js";
4
- import { l as J } from "./layout-cIjTHX6V.js";
1
+ import { s as G, a as W, S as N } from "./chunk-DI55MBZ5-DzuHPqVn.js";
2
+ import { _ as f, c as t, d as H, l as S, e as P, k as z, R as _, S as U, O as C, u as F } from "./index-OMQgmcXQ.js";
3
+ import { G as O } from "./graph-Cl7g8mJo.js";
4
+ import { l as J } from "./layout-BsDPuqRL.js";
5
5
  var X = /* @__PURE__ */ f((e) => e.append("circle").attr("class", "start-state").attr("r", t().state.sizeUnit).attr("cx", t().state.padding + t().state.sizeUnit).attr("cy", t().state.padding + t().state.sizeUnit), "drawStartState"), D = /* @__PURE__ */ f((e) => e.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", t().state.textHeight).attr("class", "divider").attr("x2", t().state.textHeight * 2).attr("y1", 0).attr("y2", 0), "drawDivider"), Y = /* @__PURE__ */ f((e, i) => {
6
6
  const d = e.append("text").attr("x", 2 * t().state.padding).attr("y", t().state.textHeight + 2 * t().state.padding).attr("font-size", t().state.fontSize).attr("class", "state-title").text(i.id), c = d.node().getBBox();
7
7
  return e.insert("rect", ":first-child").attr("x", t().state.padding).attr("y", t().state.padding).attr("width", c.width + 2 * t().state.padding).attr("height", c.height + 2 * t().state.padding).attr("rx", t().state.radius), d;
@@ -1,5 +1,5 @@
1
- import { s as a, b as t, a as r, S as s } from "./chunk-DI55MBZ5-D0hqaHNM.js";
2
- import { _ as i } from "./index-ChBmztZR.js";
1
+ import { s as a, b as t, a as r, S as s } from "./chunk-DI55MBZ5-DzuHPqVn.js";
2
+ import { _ as i } from "./index-OMQgmcXQ.js";
3
3
  var _ = {
4
4
  parser: r,
5
5
  get db() {
@@ -1,5 +1,5 @@
1
- import { _ as s, c as xt, l as E, d as j, V as kt, W as vt, X as _t, Y as bt, B as wt, $ as St, y as Et } from "./index-ChBmztZR.js";
2
- import { d as nt } from "./arc-C7Ja-5dr.js";
1
+ import { _ as s, c as xt, l as E, d as j, V as kt, W as vt, X as _t, Y as bt, B as wt, $ as St, y as Et } from "./index-OMQgmcXQ.js";
2
+ import { d as nt } from "./arc-O-rE7YCB.js";
3
3
  var Q = (function() {
4
4
  var n = /* @__PURE__ */ s(function(x, r, a, c) {
5
5
  for (a = a || {}, c = x.length; c--; a[x[c]] = r) ;
@@ -1,4 +1,4 @@
1
- import { T as a, h as m } from "./mermaid-parser.core-WMnVe1c0.js";
1
+ import { T as a, h as m } from "./mermaid-parser.core-BKozsbnK.js";
2
2
  export {
3
3
  a as TreemapModule,
4
4
  m as createTreemapServices