centy 0.0.10 → 0.0.12

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 (76) hide show
  1. package/README.md +2 -14
  2. package/dist/commands/info.d.ts.map +1 -1
  3. package/dist/commands/info.js +3 -0
  4. package/dist/commands/info.js.map +1 -1
  5. package/dist/commands/list/projects.d.ts.map +1 -1
  6. package/dist/commands/list/projects.js +11 -2
  7. package/dist/commands/list/projects.js.map +1 -1
  8. package/dist/commands/project/favorite.d.ts +16 -0
  9. package/dist/commands/project/favorite.d.ts.map +1 -0
  10. package/dist/commands/project/favorite.js +39 -0
  11. package/dist/commands/project/favorite.js.map +1 -0
  12. package/dist/daemon/daemon-set-project-favorite.d.ts +6 -0
  13. package/dist/daemon/daemon-set-project-favorite.d.ts.map +1 -0
  14. package/dist/daemon/daemon-set-project-favorite.js +17 -0
  15. package/dist/daemon/daemon-set-project-favorite.js.map +1 -0
  16. package/dist/daemon/load-proto.d.ts +2 -1
  17. package/dist/daemon/load-proto.d.ts.map +1 -1
  18. package/dist/daemon/load-proto.js.map +1 -1
  19. package/dist/daemon/types.d.ts +10 -0
  20. package/dist/daemon/types.d.ts.map +1 -1
  21. package/dist/tui/App.d.ts.map +1 -1
  22. package/dist/tui/App.js +40 -4
  23. package/dist/tui/App.js.map +1 -1
  24. package/dist/tui/components/domain/AssetList.d.ts +2 -0
  25. package/dist/tui/components/domain/AssetList.d.ts.map +1 -0
  26. package/dist/tui/components/domain/AssetList.js +58 -0
  27. package/dist/tui/components/domain/AssetList.js.map +1 -0
  28. package/dist/tui/components/domain/ConfigPanel.d.ts +2 -0
  29. package/dist/tui/components/domain/ConfigPanel.d.ts.map +1 -0
  30. package/dist/tui/components/domain/ConfigPanel.js +44 -0
  31. package/dist/tui/components/domain/ConfigPanel.js.map +1 -0
  32. package/dist/tui/components/domain/DocDetail.d.ts +2 -0
  33. package/dist/tui/components/domain/DocDetail.d.ts.map +1 -0
  34. package/dist/tui/components/domain/DocDetail.js +56 -0
  35. package/dist/tui/components/domain/DocDetail.js.map +1 -0
  36. package/dist/tui/components/domain/DocList.d.ts +2 -0
  37. package/dist/tui/components/domain/DocList.d.ts.map +1 -0
  38. package/dist/tui/components/domain/DocList.js +60 -0
  39. package/dist/tui/components/domain/DocList.js.map +1 -0
  40. package/dist/tui/components/domain/IssueDetail.d.ts +2 -0
  41. package/dist/tui/components/domain/IssueDetail.d.ts.map +1 -0
  42. package/dist/tui/components/domain/IssueDetail.js +106 -0
  43. package/dist/tui/components/domain/IssueDetail.js.map +1 -0
  44. package/dist/tui/components/domain/IssueList.d.ts.map +1 -1
  45. package/dist/tui/components/domain/IssueList.js +33 -8
  46. package/dist/tui/components/domain/IssueList.js.map +1 -1
  47. package/dist/tui/components/domain/ProjectList.d.ts.map +1 -1
  48. package/dist/tui/components/domain/ProjectList.js +45 -9
  49. package/dist/tui/components/domain/ProjectList.js.map +1 -1
  50. package/dist/tui/hooks/useAssets.d.ts +7 -0
  51. package/dist/tui/hooks/useAssets.d.ts.map +1 -0
  52. package/dist/tui/hooks/useAssets.js +35 -0
  53. package/dist/tui/hooks/useAssets.js.map +1 -0
  54. package/dist/tui/hooks/useConfig.d.ts +6 -0
  55. package/dist/tui/hooks/useConfig.d.ts.map +1 -0
  56. package/dist/tui/hooks/useConfig.js +31 -0
  57. package/dist/tui/hooks/useConfig.js.map +1 -0
  58. package/dist/tui/hooks/useDocs.d.ts +12 -0
  59. package/dist/tui/hooks/useDocs.d.ts.map +1 -0
  60. package/dist/tui/hooks/useDocs.js +54 -0
  61. package/dist/tui/hooks/useDocs.js.map +1 -0
  62. package/dist/tui/hooks/useProjects.d.ts +1 -0
  63. package/dist/tui/hooks/useProjects.d.ts.map +1 -1
  64. package/dist/tui/hooks/useProjects.js +8 -0
  65. package/dist/tui/hooks/useProjects.js.map +1 -1
  66. package/dist/tui/services/daemon-service.d.ts +8 -1
  67. package/dist/tui/services/daemon-service.d.ts.map +1 -1
  68. package/dist/tui/services/daemon-service.js +64 -0
  69. package/dist/tui/services/daemon-service.js.map +1 -1
  70. package/dist/tui/state/app-state.d.ts +3 -0
  71. package/dist/tui/state/app-state.d.ts.map +1 -1
  72. package/dist/tui/state/app-state.js +5 -0
  73. package/dist/tui/state/app-state.js.map +1 -1
  74. package/oclif.manifest.json +40 -1
  75. package/package.json +1 -1
  76. package/proto/centy.proto +39 -9
@@ -0,0 +1,54 @@
1
+ import { useCallback, useEffect, useState } from 'react';
2
+ import { useAppState } from '../state/app-state.js';
3
+ import { daemonService } from '../services/daemon-service.js';
4
+ export function useDocs() {
5
+ const { state, dispatch } = useAppState();
6
+ const [selectedDoc, setSelectedDoc] = useState(null);
7
+ const [isLoadingDoc, setIsLoadingDoc] = useState(false);
8
+ const loadDocs = useCallback(async () => {
9
+ if (!state.daemonConnected || !state.selectedProjectPath)
10
+ return;
11
+ dispatch({ type: 'SET_LOADING', loading: true });
12
+ const result = await daemonService.listDocs(state.selectedProjectPath);
13
+ dispatch({ type: 'SET_LOADING', loading: false });
14
+ if (result.success && result.data) {
15
+ dispatch({ type: 'SET_DOCS', docs: result.data });
16
+ }
17
+ else if (result.error) {
18
+ dispatch({ type: 'SET_ERROR', error: result.error });
19
+ }
20
+ }, [state.daemonConnected, state.selectedProjectPath, dispatch]);
21
+ const selectDoc = useCallback((slug) => {
22
+ dispatch({ type: 'SELECT_DOC', slug });
23
+ }, [dispatch]);
24
+ const loadDoc = useCallback(async (slug) => {
25
+ if (!state.daemonConnected || !state.selectedProjectPath)
26
+ return;
27
+ setIsLoadingDoc(true);
28
+ const result = await daemonService.getDoc(state.selectedProjectPath, slug);
29
+ setIsLoadingDoc(false);
30
+ if (result.success && result.data) {
31
+ setSelectedDoc(result.data);
32
+ }
33
+ else if (result.error) {
34
+ dispatch({ type: 'SET_ERROR', error: result.error });
35
+ }
36
+ }, [state.daemonConnected, state.selectedProjectPath, dispatch]);
37
+ // Load docs when project is selected
38
+ useEffect(() => {
39
+ if (state.selectedProjectPath) {
40
+ loadDocs();
41
+ }
42
+ }, [state.selectedProjectPath, loadDocs]);
43
+ return {
44
+ docs: state.docs,
45
+ selectedDocSlug: state.selectedDocSlug,
46
+ selectedDoc,
47
+ isLoading: state.isLoading,
48
+ isLoadingDoc,
49
+ loadDocs,
50
+ selectDoc,
51
+ loadDoc,
52
+ };
53
+ }
54
+ //# sourceMappingURL=useDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDocs.js","sourceRoot":"","sources":["../../../src/tui/hooks/useDocs.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@ export declare function useProjects(): {
4
4
  isLoading: boolean;
5
5
  loadProjects: () => Promise<void>;
6
6
  selectProject: (path: string) => void;
7
+ toggleFavorite: (path: string, isFavorite: boolean) => Promise<void>;
7
8
  };
8
9
  //# sourceMappingURL=useProjects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProjects.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useProjects.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW;;;;;0BAkBhB,MAAM;EAoBhB"}
1
+ {"version":3,"file":"useProjects.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useProjects.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW;;;;;0BAkBhB,MAAM;2BAOA,MAAM,cAAc,OAAO;EAyB3C"}
@@ -19,6 +19,13 @@ export function useProjects() {
19
19
  const selectProject = useCallback((path) => {
20
20
  dispatch({ type: 'SELECT_PROJECT', path });
21
21
  }, [dispatch]);
22
+ const toggleFavorite = useCallback(async (path, isFavorite) => {
23
+ const result = await daemonService.setProjectFavorite(path, isFavorite);
24
+ if (result.success && result.data) {
25
+ // Update the project in the list
26
+ dispatch({ type: 'UPDATE_PROJECT', project: result.data });
27
+ }
28
+ }, [dispatch]);
22
29
  // Load projects when daemon connects
23
30
  useEffect(() => {
24
31
  if (state.daemonConnected && state.projects.length === 0) {
@@ -31,6 +38,7 @@ export function useProjects() {
31
38
  isLoading: state.isLoading,
32
39
  loadProjects,
33
40
  selectProject,
41
+ toggleFavorite,
34
42
  };
35
43
  }
36
44
  //# sourceMappingURL=useProjects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProjects.js","sourceRoot":"","sources":["../../../src/tui/hooks/useProjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAA;IAEzC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,KAAK,CAAC,eAAe;YAAE,OAAM;QAElC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACrD,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAEjD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QACtD,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAErC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,IAAY,EAAE,EAAE;QACf,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,qCAAqC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,YAAY,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhE,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY;QACZ,aAAa;KACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"useProjects.js","sourceRoot":"","sources":["../../../src/tui/hooks/useProjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAE7D,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAA;IAEzC,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,KAAK,CAAC,eAAe;YAAE,OAAM;QAElC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACrD,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAEjD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACxB,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QACtD,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;IAErC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,IAAY,EAAE,EAAE;QACf,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,MAAM,cAAc,GAAG,WAAW,CAChC,KAAK,EAAE,IAAY,EAAE,UAAmB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACvE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAClC,iCAAiC;YACjC,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,qCAAqC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,YAAY,EAAE,CAAA;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhE,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,YAAY;QACZ,aAAa;QACb,cAAc;KACf,CAAA;AACH,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Unified daemon service layer for TUI
3
3
  * Wraps existing daemon functions with a cleaner API
4
4
  */
5
- import type { ProjectInfo, Issue, Doc, Config, DaemonInfo, ShutdownResponse, RestartResponse } from '../../daemon/types.js';
5
+ import type { ProjectInfo, Issue, Doc, Config, DaemonInfo, ShutdownResponse, RestartResponse, Asset } from '../../daemon/types.js';
6
6
  export interface DaemonServiceResult<T> {
7
7
  success: boolean;
8
8
  data?: T;
@@ -23,6 +23,13 @@ export declare class DaemonService {
23
23
  getDaemonInfo(): Promise<DaemonServiceResult<DaemonInfo>>;
24
24
  shutdown(delaySeconds?: number): Promise<DaemonServiceResult<ShutdownResponse>>;
25
25
  restart(delaySeconds?: number): Promise<DaemonServiceResult<RestartResponse>>;
26
+ setProjectFavorite(projectPath: string, isFavorite: boolean): Promise<DaemonServiceResult<ProjectInfo>>;
27
+ listAssets(projectPath: string, options?: {
28
+ issueId?: string;
29
+ includeShared?: boolean;
30
+ }): Promise<DaemonServiceResult<Asset[]>>;
31
+ getDoc(projectPath: string, slug: string): Promise<DaemonServiceResult<Doc>>;
32
+ getIssue(projectPath: string, issueId: string): Promise<DaemonServiceResult<Issue>>;
26
33
  }
27
34
  export declare const daemonService: DaemonService;
28
35
  //# sourceMappingURL=daemon-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-service.d.ts","sourceRoot":"","sources":["../../../src/tui/services/daemon-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,aAAa;IAClB,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIlE,YAAY,CAChB,YAAY,UAAQ,GACnB,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC;IAaxC,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;IAgBlC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;IAYlE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAYpE,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAazD,QAAQ,CACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAI3C,OAAO,CACX,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;CAGjD;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
1
+ {"version":3,"file":"daemon-service.d.ts","sourceRoot":"","sources":["../../../src/tui/services/daemon-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,KAAK,EACN,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,aAAa;IAClB,eAAe,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIlE,YAAY,CAChB,YAAY,UAAQ,GACnB,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC;IAaxC,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;IAgBlC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;IAYlE,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAYpE,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAazD,QAAQ,CACZ,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAI3C,OAAO,CACX,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAI1C,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAqBtC,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GACtD,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;IAgBlC,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAY9B,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;CAWvC;AAED,eAAO,MAAM,aAAa,eAAsB,CAAA"}
@@ -5,10 +5,14 @@
5
5
  import { daemonListProjects } from '../../daemon/daemon-list-projects.js';
6
6
  import { daemonListIssues } from '../../daemon/daemon-list-issues.js';
7
7
  import { daemonListDocs } from '../../daemon/daemon-list-docs.js';
8
+ import { daemonListAssets } from '../../daemon/daemon-list-assets.js';
8
9
  import { daemonGetConfig } from '../../daemon/daemon-get-config.js';
9
10
  import { daemonGetDaemonInfo } from '../../daemon/daemon-get-daemon-info.js';
10
11
  import { daemonControlService } from '../../daemon/daemon-control-service.js';
11
12
  import { checkDaemonConnection } from '../../daemon/check-daemon-connection.js';
13
+ import { daemonSetProjectFavorite } from '../../daemon/daemon-set-project-favorite.js';
14
+ import { daemonGetDoc } from '../../daemon/daemon-get-doc.js';
15
+ import { daemonGetIssue } from '../../daemon/daemon-get-issue.js';
12
16
  export class DaemonService {
13
17
  async checkConnection() {
14
18
  return checkDaemonConnection();
@@ -83,6 +87,66 @@ export class DaemonService {
83
87
  async restart(delaySeconds) {
84
88
  return daemonControlService.restart({ delaySeconds });
85
89
  }
90
+ async setProjectFavorite(projectPath, isFavorite) {
91
+ try {
92
+ const response = await daemonSetProjectFavorite({
93
+ projectPath,
94
+ isFavorite,
95
+ });
96
+ if (!response.success) {
97
+ return { success: false, error: response.error };
98
+ }
99
+ return { success: true, data: response.project };
100
+ }
101
+ catch (error) {
102
+ return {
103
+ success: false,
104
+ error: error instanceof Error
105
+ ? error.message
106
+ : 'Failed to set project favorite',
107
+ };
108
+ }
109
+ }
110
+ async listAssets(projectPath, options) {
111
+ try {
112
+ const response = await daemonListAssets({
113
+ projectPath,
114
+ issueId: options?.issueId,
115
+ includeShared: options?.includeShared ?? true,
116
+ });
117
+ return { success: true, data: response.assets };
118
+ }
119
+ catch (error) {
120
+ return {
121
+ success: false,
122
+ error: error instanceof Error ? error.message : 'Failed to list assets',
123
+ };
124
+ }
125
+ }
126
+ async getDoc(projectPath, slug) {
127
+ try {
128
+ const response = await daemonGetDoc({ projectPath, slug });
129
+ return { success: true, data: response };
130
+ }
131
+ catch (error) {
132
+ return {
133
+ success: false,
134
+ error: error instanceof Error ? error.message : 'Failed to get doc',
135
+ };
136
+ }
137
+ }
138
+ async getIssue(projectPath, issueId) {
139
+ try {
140
+ const response = await daemonGetIssue({ projectPath, issueId });
141
+ return { success: true, data: response };
142
+ }
143
+ catch (error) {
144
+ return {
145
+ success: false,
146
+ error: error instanceof Error ? error.message : 'Failed to get issue',
147
+ };
148
+ }
149
+ }
86
150
  }
87
151
  export const daemonService = new DaemonService();
88
152
  //# sourceMappingURL=daemon-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-service.js","sourceRoot":"","sources":["../../../src/tui/services/daemon-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-service.js","sourceRoot":"","sources":["../../../src/tui/services/daemon-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAA;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAkBjE,MAAM,OAAO,aAAa;IACxB,KAAK,CAAC,eAAe;QACnB,OAAO,qBAAqB,EAAE,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,YAAY,GAAG,KAAK;QAEpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;YAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;aACrE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,OAAgD;QAEhD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;gBACtC,WAAW;gBACX,MAAM,EAAE,OAAO,EAAE,MAAM;gBACvB,QAAQ,EAAE,OAAO,EAAE,QAAQ;aAC5B,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;aACxE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAmB;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;YACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;aACtE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,WAAmB;QACjC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;YACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;aACvE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAA;YAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;aACvE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,YAAqB;QAErB,OAAO,oBAAoB,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,YAAqB;QAErB,OAAO,oBAAoB,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,WAAmB,EACnB,UAAmB;QAEnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;gBAC9C,WAAW;gBACX,UAAU;aACX,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;YAClD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAA;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,KAAK,YAAY,KAAK;oBACpB,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,gCAAgC;aACvC,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,OAAuD;QAEvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;gBACtC,WAAW;gBACX,OAAO,EAAE,OAAO,EAAE,OAAO;gBACzB,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;aAC9C,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;aACxE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACV,WAAmB,EACnB,IAAY;QAEZ,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;YAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB;aACpE,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,WAAmB,EACnB,OAAe;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;YAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB;aACtE,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA"}
@@ -30,6 +30,9 @@ export type AppAction = {
30
30
  } | {
31
31
  type: 'SET_PROJECTS';
32
32
  projects: ProjectInfo[];
33
+ } | {
34
+ type: 'UPDATE_PROJECT';
35
+ project: ProjectInfo;
33
36
  } | {
34
37
  type: 'SELECT_PROJECT';
35
38
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"app-state.d.ts","sourceRoot":"","sources":["../../../src/tui/state/app-state.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EACV,KAAK,EACL,GAAG,EACH,WAAW,EACX,MAAM,EACN,UAAU,EACX,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,QAAQ;IAEvB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;IAGxD,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAGlC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAA;IAG7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,YAAY,EAAE,MAAM,CAAA;IAGpB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAGpB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAA;AA4FrD,UAAU,eAAe;IACvB,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;CAC9B;AAID,UAAU,gBAAgB;IACxB,QAAQ,EAAE,SAAS,CAAA;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,sBAA8B,GAC/B,EAAE,gBAAgB,aAWlB;AAED,wBAAgB,WAAW,oBAM1B"}
1
+ {"version":3,"file":"app-state.d.ts","sourceRoot":"","sources":["../../../src/tui/state/app-state.tsx"],"names":[],"mappings":"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"}
@@ -42,6 +42,11 @@ function appReducer(state, action) {
42
42
  }
43
43
  case 'SET_PROJECTS':
44
44
  return { ...state, projects: action.projects };
45
+ case 'UPDATE_PROJECT':
46
+ return {
47
+ ...state,
48
+ projects: state.projects.map(p => p.path === action.project.path ? action.project : p),
49
+ };
45
50
  case 'SELECT_PROJECT':
46
51
  return {
47
52
  ...state,
@@ -1 +1 @@
1
- {"version":3,"file":"app-state.js","sourceRoot":"","sources":["../../../src/tui/state/app-state.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-state.js","sourceRoot":"","sources":["../../../src/tui/state/app-state.tsx"],"names":[],"mappings":"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"}
@@ -1051,6 +1051,45 @@
1051
1051
  "projects.js"
1052
1052
  ]
1053
1053
  },
1054
+ "project:favorite": {
1055
+ "aliases": [],
1056
+ "args": {
1057
+ "path": {
1058
+ "description": "Path to the project (defaults to current directory)",
1059
+ "name": "path",
1060
+ "required": false
1061
+ }
1062
+ },
1063
+ "description": "Mark a project as favorite or unfavorite",
1064
+ "examples": [
1065
+ "<%= config.bin %> project favorite",
1066
+ "<%= config.bin %> project favorite /path/to/project",
1067
+ "<%= config.bin %> project favorite --off"
1068
+ ],
1069
+ "flags": {
1070
+ "off": {
1071
+ "description": "Remove from favorites",
1072
+ "name": "off",
1073
+ "allowNo": false,
1074
+ "type": "boolean"
1075
+ }
1076
+ },
1077
+ "hasDynamicHelp": false,
1078
+ "hiddenAliases": [],
1079
+ "id": "project:favorite",
1080
+ "pluginAlias": "centy",
1081
+ "pluginName": "centy",
1082
+ "pluginType": "core",
1083
+ "strict": true,
1084
+ "enableJsonFlag": false,
1085
+ "isESM": true,
1086
+ "relativePath": [
1087
+ "dist",
1088
+ "commands",
1089
+ "project",
1090
+ "favorite.js"
1091
+ ]
1092
+ },
1054
1093
  "register:project": {
1055
1094
  "aliases": [],
1056
1095
  "args": {
@@ -1244,5 +1283,5 @@
1244
1283
  ]
1245
1284
  }
1246
1285
  },
1247
- "version": "0.0.10"
1286
+ "version": "0.0.12"
1248
1287
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centy",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "CLI for managing project issues and docs via code in the .centy folder",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/proto/centy.proto CHANGED
@@ -40,6 +40,9 @@ service CentyDaemon {
40
40
  // Read configuration
41
41
  rpc GetConfig(GetConfigRequest) returns (Config);
42
42
 
43
+ // Update configuration
44
+ rpc UpdateConfig(UpdateConfigRequest) returns (UpdateConfigResponse);
45
+
43
46
  // Check if centy is initialized in a directory
44
47
  rpc IsInitialized(IsInitializedRequest) returns (IsInitializedResponse);
45
48
 
@@ -91,6 +94,9 @@ service CentyDaemon {
91
94
  // Get info about a specific project
92
95
  rpc GetProjectInfo(GetProjectInfoRequest) returns (GetProjectInfoResponse);
93
96
 
97
+ // Set project favorite status
98
+ rpc SetProjectFavorite(SetProjectFavoriteRequest) returns (SetProjectFavoriteResponse);
99
+
94
100
  // ============ Version RPCs ============
95
101
 
96
102
  // Get daemon version info
@@ -306,15 +312,6 @@ message Manifest {
306
312
  string centy_version = 2;
307
313
  string created_at = 3;
308
314
  string updated_at = 4;
309
- repeated ManagedFile managed_files = 5;
310
- }
311
-
312
- message ManagedFile {
313
- string path = 1;
314
- string hash = 2;
315
- string version = 3;
316
- string created_at = 4;
317
- FileType file_type = 5;
318
315
  }
319
316
 
320
317
  enum FileType {
@@ -343,6 +340,9 @@ message Config {
343
340
  repeated string allowed_states = 4; // Allowed status values (default: ["open", "in-progress", "closed"])
344
341
  string default_state = 5; // Default state for new issues (default: "open")
345
342
  string version = 6; // Project version (semver, empty = daemon default)
343
+ map<string, string> state_colors = 7; // State name → hex color (e.g., "open" → "#10b981")
344
+ map<string, string> priority_colors = 8; // Priority level → hex color (e.g., "1" → "#ef4444")
345
+ LlmConfig llm = 9; // LLM-related settings
346
346
  }
347
347
 
348
348
  message CustomFieldDefinition {
@@ -353,6 +353,23 @@ message CustomFieldDefinition {
353
353
  repeated string enum_values = 5; // For enum type
354
354
  }
355
355
 
356
+ message LlmConfig {
357
+ bool auto_close_on_complete = 1; // Auto-close issues when marked complete by LLM
358
+ bool update_status_on_start = 2; // Update status to in-progress when LLM starts work
359
+ bool allow_direct_edits = 3; // Allow LLM to directly edit issue files
360
+ }
361
+
362
+ message UpdateConfigRequest {
363
+ string project_path = 1;
364
+ Config config = 2;
365
+ }
366
+
367
+ message UpdateConfigResponse {
368
+ bool success = 1;
369
+ string error = 2;
370
+ Config config = 3; // The saved config (with any normalization applied)
371
+ }
372
+
356
373
  // ============ Utility Messages ============
357
374
 
358
375
  message IsInitializedRequest {
@@ -520,6 +537,7 @@ message ProjectInfo {
520
537
  uint32 doc_count = 5; // Fetched live from .centy/docs/
521
538
  bool initialized = 6; // Fetched live (manifest exists)
522
539
  string name = 7; // Fetched live (directory name)
540
+ bool is_favorite = 8; // User-marked favorite status
523
541
  }
524
542
 
525
543
  message ListProjectsRequest {
@@ -559,6 +577,17 @@ message GetProjectInfoResponse {
559
577
  ProjectInfo project = 2;
560
578
  }
561
579
 
580
+ message SetProjectFavoriteRequest {
581
+ string project_path = 1;
582
+ bool is_favorite = 2;
583
+ }
584
+
585
+ message SetProjectFavoriteResponse {
586
+ bool success = 1;
587
+ string error = 2;
588
+ ProjectInfo project = 3; // The updated project info
589
+ }
590
+
562
591
  // ============ Version Messages ============
563
592
 
564
593
  message GetDaemonInfoRequest {}
@@ -566,6 +595,7 @@ message GetDaemonInfoRequest {}
566
595
  message DaemonInfo {
567
596
  string version = 1; // Current daemon version (e.g., "0.1.0")
568
597
  repeated string available_versions = 2; // All versions we can migrate to
598
+ string binary_path = 3; // Absolute path to the running daemon binary
569
599
  }
570
600
 
571
601
  message GetProjectVersionRequest {