octie-cli 1.0.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 (162) hide show
  1. package/README.md +523 -0
  2. package/dist/cli/commands/approve.d.ts +27 -0
  3. package/dist/cli/commands/approve.d.ts.map +1 -0
  4. package/dist/cli/commands/approve.js +119 -0
  5. package/dist/cli/commands/approve.js.map +1 -0
  6. package/dist/cli/commands/batch.d.ts +15 -0
  7. package/dist/cli/commands/batch.d.ts.map +1 -0
  8. package/dist/cli/commands/batch.js +521 -0
  9. package/dist/cli/commands/batch.js.map +1 -0
  10. package/dist/cli/commands/create.d.ts +9 -0
  11. package/dist/cli/commands/create.d.ts.map +1 -0
  12. package/dist/cli/commands/create.js +321 -0
  13. package/dist/cli/commands/create.js.map +1 -0
  14. package/dist/cli/commands/delete.d.ts +9 -0
  15. package/dist/cli/commands/delete.d.ts.map +1 -0
  16. package/dist/cli/commands/delete.js +143 -0
  17. package/dist/cli/commands/delete.js.map +1 -0
  18. package/dist/cli/commands/export.d.ts +9 -0
  19. package/dist/cli/commands/export.d.ts.map +1 -0
  20. package/dist/cli/commands/export.js +66 -0
  21. package/dist/cli/commands/export.js.map +1 -0
  22. package/dist/cli/commands/find.d.ts +16 -0
  23. package/dist/cli/commands/find.d.ts.map +1 -0
  24. package/dist/cli/commands/find.js +252 -0
  25. package/dist/cli/commands/find.js.map +1 -0
  26. package/dist/cli/commands/get.d.ts +9 -0
  27. package/dist/cli/commands/get.d.ts.map +1 -0
  28. package/dist/cli/commands/get.js +74 -0
  29. package/dist/cli/commands/get.js.map +1 -0
  30. package/dist/cli/commands/graph.d.ts +9 -0
  31. package/dist/cli/commands/graph.d.ts.map +1 -0
  32. package/dist/cli/commands/graph.js +200 -0
  33. package/dist/cli/commands/graph.js.map +1 -0
  34. package/dist/cli/commands/import.d.ts +9 -0
  35. package/dist/cli/commands/import.d.ts.map +1 -0
  36. package/dist/cli/commands/import.js +807 -0
  37. package/dist/cli/commands/import.js.map +1 -0
  38. package/dist/cli/commands/init.d.ts +9 -0
  39. package/dist/cli/commands/init.d.ts.map +1 -0
  40. package/dist/cli/commands/init.js +57 -0
  41. package/dist/cli/commands/init.js.map +1 -0
  42. package/dist/cli/commands/list.d.ts +9 -0
  43. package/dist/cli/commands/list.d.ts.map +1 -0
  44. package/dist/cli/commands/list.js +175 -0
  45. package/dist/cli/commands/list.js.map +1 -0
  46. package/dist/cli/commands/merge.d.ts +9 -0
  47. package/dist/cli/commands/merge.d.ts.map +1 -0
  48. package/dist/cli/commands/merge.js +113 -0
  49. package/dist/cli/commands/merge.js.map +1 -0
  50. package/dist/cli/commands/serve.d.ts +9 -0
  51. package/dist/cli/commands/serve.d.ts.map +1 -0
  52. package/dist/cli/commands/serve.js +94 -0
  53. package/dist/cli/commands/serve.js.map +1 -0
  54. package/dist/cli/commands/update.d.ts +9 -0
  55. package/dist/cli/commands/update.d.ts.map +1 -0
  56. package/dist/cli/commands/update.js +423 -0
  57. package/dist/cli/commands/update.js.map +1 -0
  58. package/dist/cli/commands/wire.d.ts +15 -0
  59. package/dist/cli/commands/wire.d.ts.map +1 -0
  60. package/dist/cli/commands/wire.js +164 -0
  61. package/dist/cli/commands/wire.js.map +1 -0
  62. package/dist/cli/index.d.ts +7 -0
  63. package/dist/cli/index.d.ts.map +1 -0
  64. package/dist/cli/index.js +100 -0
  65. package/dist/cli/index.js.map +1 -0
  66. package/dist/cli/output/json.d.ts +16 -0
  67. package/dist/cli/output/json.d.ts.map +1 -0
  68. package/dist/cli/output/json.js +29 -0
  69. package/dist/cli/output/json.js.map +1 -0
  70. package/dist/cli/output/markdown.d.ts +15 -0
  71. package/dist/cli/output/markdown.d.ts.map +1 -0
  72. package/dist/cli/output/markdown.js +206 -0
  73. package/dist/cli/output/markdown.js.map +1 -0
  74. package/dist/cli/output/table.d.ts +23 -0
  75. package/dist/cli/output/table.d.ts.map +1 -0
  76. package/dist/cli/output/table.js +150 -0
  77. package/dist/cli/output/table.js.map +1 -0
  78. package/dist/cli/utils/helpers.d.ts +126 -0
  79. package/dist/cli/utils/helpers.d.ts.map +1 -0
  80. package/dist/cli/utils/helpers.js +325 -0
  81. package/dist/cli/utils/helpers.js.map +1 -0
  82. package/dist/core/graph/algorithms.d.ts +11 -0
  83. package/dist/core/graph/algorithms.d.ts.map +1 -0
  84. package/dist/core/graph/algorithms.js +14 -0
  85. package/dist/core/graph/algorithms.js.map +1 -0
  86. package/dist/core/graph/cycle.d.ts +155 -0
  87. package/dist/core/graph/cycle.d.ts.map +1 -0
  88. package/dist/core/graph/cycle.js +297 -0
  89. package/dist/core/graph/cycle.js.map +1 -0
  90. package/dist/core/graph/index.d.ts +223 -0
  91. package/dist/core/graph/index.d.ts.map +1 -0
  92. package/dist/core/graph/index.js +475 -0
  93. package/dist/core/graph/index.js.map +1 -0
  94. package/dist/core/graph/operations.d.ts +240 -0
  95. package/dist/core/graph/operations.d.ts.map +1 -0
  96. package/dist/core/graph/operations.js +503 -0
  97. package/dist/core/graph/operations.js.map +1 -0
  98. package/dist/core/graph/sort.d.ts +76 -0
  99. package/dist/core/graph/sort.d.ts.map +1 -0
  100. package/dist/core/graph/sort.js +254 -0
  101. package/dist/core/graph/sort.js.map +1 -0
  102. package/dist/core/graph/traversal.d.ts +122 -0
  103. package/dist/core/graph/traversal.d.ts.map +1 -0
  104. package/dist/core/graph/traversal.js +336 -0
  105. package/dist/core/graph/traversal.js.map +1 -0
  106. package/dist/core/models/task-node.d.ts +328 -0
  107. package/dist/core/models/task-node.d.ts.map +1 -0
  108. package/dist/core/models/task-node.js +1090 -0
  109. package/dist/core/models/task-node.js.map +1 -0
  110. package/dist/core/registry/index.d.ts +102 -0
  111. package/dist/core/registry/index.d.ts.map +1 -0
  112. package/dist/core/registry/index.js +249 -0
  113. package/dist/core/registry/index.js.map +1 -0
  114. package/dist/core/registry/root-guard.d.ts +19 -0
  115. package/dist/core/registry/root-guard.d.ts.map +1 -0
  116. package/dist/core/registry/root-guard.js +28 -0
  117. package/dist/core/registry/root-guard.js.map +1 -0
  118. package/dist/core/storage/atomic-write.d.ts +181 -0
  119. package/dist/core/storage/atomic-write.d.ts.map +1 -0
  120. package/dist/core/storage/atomic-write.js +379 -0
  121. package/dist/core/storage/atomic-write.js.map +1 -0
  122. package/dist/core/storage/file-store.d.ts +148 -0
  123. package/dist/core/storage/file-store.d.ts.map +1 -0
  124. package/dist/core/storage/file-store.js +423 -0
  125. package/dist/core/storage/file-store.js.map +1 -0
  126. package/dist/core/storage/indexer.d.ts +138 -0
  127. package/dist/core/storage/indexer.d.ts.map +1 -0
  128. package/dist/core/storage/indexer.js +350 -0
  129. package/dist/core/storage/indexer.js.map +1 -0
  130. package/dist/core/utils/status-helpers.d.ts +59 -0
  131. package/dist/core/utils/status-helpers.d.ts.map +1 -0
  132. package/dist/core/utils/status-helpers.js +149 -0
  133. package/dist/core/utils/status-helpers.js.map +1 -0
  134. package/dist/index.d.ts +10 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +10 -0
  137. package/dist/index.js.map +1 -0
  138. package/dist/types/index.d.ts +504 -0
  139. package/dist/types/index.d.ts.map +1 -0
  140. package/dist/types/index.js +182 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/web/routes/graph.d.ts +17 -0
  143. package/dist/web/routes/graph.d.ts.map +1 -0
  144. package/dist/web/routes/graph.js +277 -0
  145. package/dist/web/routes/graph.js.map +1 -0
  146. package/dist/web/routes/projects.d.ts +14 -0
  147. package/dist/web/routes/projects.d.ts.map +1 -0
  148. package/dist/web/routes/projects.js +102 -0
  149. package/dist/web/routes/projects.js.map +1 -0
  150. package/dist/web/routes/tasks.d.ts +17 -0
  151. package/dist/web/routes/tasks.d.ts.map +1 -0
  152. package/dist/web/routes/tasks.js +538 -0
  153. package/dist/web/routes/tasks.js.map +1 -0
  154. package/dist/web/server.d.ts +121 -0
  155. package/dist/web/server.d.ts.map +1 -0
  156. package/dist/web/server.js +389 -0
  157. package/dist/web/server.js.map +1 -0
  158. package/dist/web-ui/assets/index-BB0qvF1y.css +1 -0
  159. package/dist/web-ui/assets/index-Vmm72oKY.js +34 -0
  160. package/dist/web-ui/index.html +14 -0
  161. package/dist/web-ui/vite.svg +1 -0
  162. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-node.js","sourceRoot":"","sources":["../../../src/core/models/task-node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Global Project Registry
3
+ *
4
+ * Manages a registry of all Octie projects on the system.
5
+ * Registry is stored at ~/.octie/projects.json
6
+ *
7
+ * @module core/registry
8
+ */
9
+ import type { ProjectMetadata } from '../../types/index.js';
10
+ /**
11
+ * Project entry in the global registry
12
+ */
13
+ export interface RegistryProject {
14
+ /** Filesystem path to the project */
15
+ path: string;
16
+ /** Project name from metadata */
17
+ name: string;
18
+ /** ISO 8601 timestamp when project was registered */
19
+ registeredAt: string;
20
+ /** ISO 8601 timestamp when project was last accessed */
21
+ lastAccessed: string;
22
+ /** Number of tasks in the project */
23
+ taskCount: number;
24
+ }
25
+ /**
26
+ * Global registry structure
27
+ */
28
+ export interface ProjectRegistry {
29
+ /** Registry version */
30
+ version: string;
31
+ /** Map of project name to project entry */
32
+ projects: Record<string, RegistryProject>;
33
+ }
34
+ /**
35
+ * Get the path to the global registry file
36
+ * @returns Absolute path to ~/.octie/projects.json
37
+ */
38
+ export declare function getGlobalRegistryPath(): string;
39
+ /**
40
+ * Load the global project registry
41
+ * Creates an empty registry if one doesn't exist
42
+ * @returns Project registry object
43
+ */
44
+ export declare function loadRegistry(): ProjectRegistry;
45
+ /**
46
+ * Save the global project registry
47
+ * @param registry - Registry to save
48
+ */
49
+ export declare function saveRegistry(registry: ProjectRegistry): void;
50
+ /**
51
+ * Check if a path contains a valid Octie project
52
+ * @param projectPath - Path to check
53
+ * @returns True if .octie/project.json exists and is valid
54
+ */
55
+ export declare function isValidOctieProject(projectPath: string): boolean;
56
+ /**
57
+ * Get project metadata from a project path
58
+ * @param projectPath - Path to the project
59
+ * @returns Project metadata or null if invalid
60
+ */
61
+ export declare function getProjectMetadata(projectPath: string): ProjectMetadata | null;
62
+ /**
63
+ * Get task count from a project
64
+ * @param projectPath - Path to the project
65
+ * @returns Number of tasks or 0 if invalid
66
+ */
67
+ export declare function getProjectTaskCount(projectPath: string): number;
68
+ /**
69
+ * Register or update a project in the registry
70
+ * @param projectPath - Path to the project to register
71
+ * @returns The registered project entry or null if invalid
72
+ */
73
+ export declare function registerProject(projectPath: string): RegistryProject | null;
74
+ /**
75
+ * Unregister a project from the registry
76
+ * @param projectPath - Path to the project to remove
77
+ * @returns True if project was removed
78
+ */
79
+ export declare function unregisterProject(projectPath: string): boolean;
80
+ /**
81
+ * Get all registered projects
82
+ * Automatically filters out stale projects (where .octie folder no longer exists)
83
+ * @returns Array of valid registry projects
84
+ */
85
+ export declare function getAllProjects(): RegistryProject[];
86
+ /**
87
+ * Get all registered projects WITHOUT auto-cleanup (for debugging)
88
+ * @returns Array of all registry projects including stale ones
89
+ */
90
+ export declare function getAllProjectsRaw(): RegistryProject[];
91
+ /**
92
+ * Check if a registered project still exists on disk
93
+ * @param project - Project entry to check
94
+ * @returns True if project still exists and is valid
95
+ */
96
+ export declare function verifyProjectExists(project: RegistryProject): boolean;
97
+ /**
98
+ * Update last accessed timestamp for a project
99
+ * @param projectPath - Path to the project
100
+ */
101
+ export declare function touchProject(projectPath: string): void;
102
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC3C;AAKD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C;AAYD;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,eAAe,CAgC9C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAehE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAmB9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAwC3E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAY9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,eAAe,EAAE,CAoBlD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAGrD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAWtD"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Global Project Registry
3
+ *
4
+ * Manages a registry of all Octie projects on the system.
5
+ * Registry is stored at ~/.octie/projects.json
6
+ *
7
+ * @module core/registry
8
+ */
9
+ import { homedir } from 'node:os';
10
+ import { join } from 'node:path';
11
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
12
+ /** Current registry version */
13
+ const REGISTRY_VERSION = '1.0.0';
14
+ /**
15
+ * Get the path to the global registry file
16
+ * @returns Absolute path to ~/.octie/projects.json
17
+ */
18
+ export function getGlobalRegistryPath() {
19
+ const home = homedir();
20
+ const octieDir = join(home, '.octie');
21
+ return join(octieDir, 'projects.json');
22
+ }
23
+ /**
24
+ * Ensure the ~/.octie directory exists
25
+ */
26
+ function ensureRegistryDir() {
27
+ const octieDir = join(homedir(), '.octie');
28
+ if (!existsSync(octieDir)) {
29
+ mkdirSync(octieDir, { recursive: true });
30
+ }
31
+ }
32
+ /**
33
+ * Load the global project registry
34
+ * Creates an empty registry if one doesn't exist
35
+ * @returns Project registry object
36
+ */
37
+ export function loadRegistry() {
38
+ const registryPath = getGlobalRegistryPath();
39
+ if (!existsSync(registryPath)) {
40
+ // Return empty registry
41
+ return {
42
+ version: REGISTRY_VERSION,
43
+ projects: {},
44
+ };
45
+ }
46
+ try {
47
+ const content = readFileSync(registryPath, 'utf-8');
48
+ const registry = JSON.parse(content);
49
+ // Ensure version compatibility
50
+ if (!registry.version || !registry.projects) {
51
+ // Invalid registry, return empty
52
+ return {
53
+ version: REGISTRY_VERSION,
54
+ projects: {},
55
+ };
56
+ }
57
+ return registry;
58
+ }
59
+ catch {
60
+ // Corrupted registry, return empty
61
+ return {
62
+ version: REGISTRY_VERSION,
63
+ projects: {},
64
+ };
65
+ }
66
+ }
67
+ /**
68
+ * Save the global project registry
69
+ * @param registry - Registry to save
70
+ */
71
+ export function saveRegistry(registry) {
72
+ ensureRegistryDir();
73
+ const registryPath = getGlobalRegistryPath();
74
+ writeFileSync(registryPath, JSON.stringify(registry, null, 2), 'utf-8');
75
+ }
76
+ /**
77
+ * Check if a path contains a valid Octie project
78
+ * @param projectPath - Path to check
79
+ * @returns True if .octie/project.json exists and is valid
80
+ */
81
+ export function isValidOctieProject(projectPath) {
82
+ const projectFile = join(projectPath, '.octie', 'project.json');
83
+ if (!existsSync(projectFile)) {
84
+ return false;
85
+ }
86
+ try {
87
+ const content = readFileSync(projectFile, 'utf-8');
88
+ const data = JSON.parse(content);
89
+ // Check for required fields
90
+ return !!(data.metadata && data.tasks);
91
+ }
92
+ catch {
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Get project metadata from a project path
98
+ * @param projectPath - Path to the project
99
+ * @returns Project metadata or null if invalid
100
+ */
101
+ export function getProjectMetadata(projectPath) {
102
+ const projectFile = join(projectPath, '.octie', 'project.json');
103
+ if (!existsSync(projectFile)) {
104
+ return null;
105
+ }
106
+ try {
107
+ const content = readFileSync(projectFile, 'utf-8');
108
+ const data = JSON.parse(content);
109
+ if (!data.metadata) {
110
+ return null;
111
+ }
112
+ return data.metadata;
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ /**
119
+ * Get task count from a project
120
+ * @param projectPath - Path to the project
121
+ * @returns Number of tasks or 0 if invalid
122
+ */
123
+ export function getProjectTaskCount(projectPath) {
124
+ const projectFile = join(projectPath, '.octie', 'project.json');
125
+ if (!existsSync(projectFile)) {
126
+ return 0;
127
+ }
128
+ try {
129
+ const content = readFileSync(projectFile, 'utf-8');
130
+ const data = JSON.parse(content);
131
+ if (!data.tasks || typeof data.tasks !== 'object') {
132
+ return 0;
133
+ }
134
+ return Object.keys(data.tasks).length;
135
+ }
136
+ catch {
137
+ return 0;
138
+ }
139
+ }
140
+ /**
141
+ * Register or update a project in the registry
142
+ * @param projectPath - Path to the project to register
143
+ * @returns The registered project entry or null if invalid
144
+ */
145
+ export function registerProject(projectPath) {
146
+ if (!isValidOctieProject(projectPath)) {
147
+ return null;
148
+ }
149
+ const metadata = getProjectMetadata(projectPath);
150
+ if (!metadata) {
151
+ return null;
152
+ }
153
+ const projectName = metadata.project_name || 'unnamed';
154
+ const taskCount = getProjectTaskCount(projectPath);
155
+ const now = new Date().toISOString();
156
+ const registry = loadRegistry();
157
+ // Check if already registered (by path)
158
+ let existingKey = null;
159
+ for (const [key, project] of Object.entries(registry.projects)) {
160
+ if (project.path === projectPath) {
161
+ existingKey = key;
162
+ break;
163
+ }
164
+ }
165
+ const entry = {
166
+ path: projectPath,
167
+ name: projectName,
168
+ registeredAt: existingKey ? registry.projects[existingKey].registeredAt : now,
169
+ lastAccessed: now,
170
+ taskCount,
171
+ };
172
+ // Use existing key or create new one with project name
173
+ const key = existingKey || projectName;
174
+ registry.projects[key] = entry;
175
+ saveRegistry(registry);
176
+ return entry;
177
+ }
178
+ /**
179
+ * Unregister a project from the registry
180
+ * @param projectPath - Path to the project to remove
181
+ * @returns True if project was removed
182
+ */
183
+ export function unregisterProject(projectPath) {
184
+ const registry = loadRegistry();
185
+ for (const [key, project] of Object.entries(registry.projects)) {
186
+ if (project.path === projectPath) {
187
+ delete registry.projects[key];
188
+ saveRegistry(registry);
189
+ return true;
190
+ }
191
+ }
192
+ return false;
193
+ }
194
+ /**
195
+ * Get all registered projects
196
+ * Automatically filters out stale projects (where .octie folder no longer exists)
197
+ * @returns Array of valid registry projects
198
+ */
199
+ export function getAllProjects() {
200
+ const registry = loadRegistry();
201
+ const validProjects = {};
202
+ let hasStale = false;
203
+ for (const [key, project] of Object.entries(registry.projects)) {
204
+ if (isValidOctieProject(project.path)) {
205
+ validProjects[key] = project;
206
+ }
207
+ else {
208
+ hasStale = true;
209
+ }
210
+ }
211
+ // Auto-cleanup: remove stale entries from registry
212
+ if (hasStale) {
213
+ registry.projects = validProjects;
214
+ saveRegistry(registry);
215
+ }
216
+ return Object.values(registry.projects);
217
+ }
218
+ /**
219
+ * Get all registered projects WITHOUT auto-cleanup (for debugging)
220
+ * @returns Array of all registry projects including stale ones
221
+ */
222
+ export function getAllProjectsRaw() {
223
+ const registry = loadRegistry();
224
+ return Object.values(registry.projects);
225
+ }
226
+ /**
227
+ * Check if a registered project still exists on disk
228
+ * @param project - Project entry to check
229
+ * @returns True if project still exists and is valid
230
+ */
231
+ export function verifyProjectExists(project) {
232
+ return isValidOctieProject(project.path);
233
+ }
234
+ /**
235
+ * Update last accessed timestamp for a project
236
+ * @param projectPath - Path to the project
237
+ */
238
+ export function touchProject(projectPath) {
239
+ const registry = loadRegistry();
240
+ for (const project of Object.values(registry.projects)) {
241
+ if (project.path === projectPath) {
242
+ project.lastAccessed = new Date().toISOString();
243
+ project.taskCount = getProjectTaskCount(projectPath);
244
+ saveRegistry(registry);
245
+ return;
246
+ }
247
+ }
248
+ }
249
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/registry/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Root Guard - Auto-registration hook for Octie CLI
3
+ *
4
+ * Runs before every command to verify and register the current project
5
+ * in the global registry if it contains a valid .octie/project.json file.
6
+ *
7
+ * @module core/registry/root-guard
8
+ */
9
+ /**
10
+ * Verify and register the current project if valid
11
+ *
12
+ * This function should be called at the start of every CLI command
13
+ * to ensure the current project is tracked in the global registry.
14
+ *
15
+ * @param projectPath - Optional explicit project path (uses cwd if not provided)
16
+ * @returns True if project was registered/verified, false if not a valid project
17
+ */
18
+ export declare function verifyAndRegisterProject(projectPath?: string): boolean;
19
+ //# sourceMappingURL=root-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-guard.d.ts","sourceRoot":"","sources":["../../../src/core/registry/root-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAStE"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Root Guard - Auto-registration hook for Octie CLI
3
+ *
4
+ * Runs before every command to verify and register the current project
5
+ * in the global registry if it contains a valid .octie/project.json file.
6
+ *
7
+ * @module core/registry/root-guard
8
+ */
9
+ import { cwd } from 'node:process';
10
+ import { isValidOctieProject, registerProject } from './index.js';
11
+ /**
12
+ * Verify and register the current project if valid
13
+ *
14
+ * This function should be called at the start of every CLI command
15
+ * to ensure the current project is tracked in the global registry.
16
+ *
17
+ * @param projectPath - Optional explicit project path (uses cwd if not provided)
18
+ * @returns True if project was registered/verified, false if not a valid project
19
+ */
20
+ export function verifyAndRegisterProject(projectPath) {
21
+ const path = projectPath || cwd();
22
+ if (!isValidOctieProject(path)) {
23
+ return false;
24
+ }
25
+ const result = registerProject(path);
26
+ return result !== null;
27
+ }
28
+ //# sourceMappingURL=root-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-guard.js","sourceRoot":"","sources":["../../../src/core/registry/root-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAoB;IAC3D,MAAM,IAAI,GAAG,WAAW,IAAI,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Atomic file write operations
3
+ *
4
+ * Implements safe file writes using temp file + rename strategy.
5
+ * Ensures data integrity by:
6
+ * 1. Writing to temporary file first
7
+ * 2. Verifying write success
8
+ * 3. Creating backup of existing file
9
+ * 4. Atomic rename to final location
10
+ *
11
+ * @module core/storage/atomic-write
12
+ */
13
+ /**
14
+ * Atomic file writer configuration
15
+ */
16
+ export interface AtomicWriterConfig {
17
+ /** Number of backups to keep (default: 5) */
18
+ backupCount?: number;
19
+ /** Directory for temporary files (default: OS temp directory) */
20
+ tempDir?: string;
21
+ /** Prefix for temporary files (default: '.octie-tmp-') */
22
+ tempPrefix?: string;
23
+ }
24
+ /**
25
+ * Atomic File Writer class
26
+ *
27
+ * Provides safe file write operations using atomic rename strategy.
28
+ * Prevents data corruption by writing to temp file first, then renaming.
29
+ */
30
+ export declare class AtomicFileWriter {
31
+ private _config;
32
+ /**
33
+ * Create a new AtomicFileWriter
34
+ * @param config - Optional configuration
35
+ */
36
+ constructor(config?: AtomicWriterConfig);
37
+ /**
38
+ * Write data to file atomically
39
+ *
40
+ * Process:
41
+ * 1. Write to temporary file
42
+ * 2. Verify write success (check file size)
43
+ * 3. Create backup of existing file (if exists)
44
+ * 4. Atomic rename to final location
45
+ *
46
+ * @param filePath - Target file path
47
+ * @param data - Data to write (will be JSON stringified if object)
48
+ * @param options - Write options
49
+ * @throws {FileOperationError} If write operation fails
50
+ */
51
+ write(filePath: string, data: string | Record<string, unknown>, options?: {
52
+ createBackup?: boolean;
53
+ indent?: number | string;
54
+ }): Promise<void>;
55
+ /**
56
+ * Read file contents
57
+ * @param filePath - File path to read
58
+ * @returns File contents as string
59
+ * @throws {FileOperationError} If read fails
60
+ */
61
+ read(filePath: string): Promise<string>;
62
+ /**
63
+ * Read and parse JSON file
64
+ * @param filePath - File path to read
65
+ * @returns Parsed JSON object
66
+ * @throws {FileOperationError} If read or parse fails
67
+ */
68
+ readJSON<T = Record<string, unknown>>(filePath: string): Promise<T>;
69
+ /**
70
+ * Create backup of existing file
71
+ * @param filePath - File to backup
72
+ * @private
73
+ */
74
+ private _createBackup;
75
+ /**
76
+ * Rotate backup files, keeping only the configured number
77
+ * @param filePath - Original file path
78
+ * @private
79
+ */
80
+ private _rotateBackups;
81
+ /**
82
+ * Get backup file path
83
+ * @param filePath - Original file path
84
+ * @returns Backup file path
85
+ * @private
86
+ */
87
+ private _getBackupPath;
88
+ /**
89
+ * Get temporary file path
90
+ * @param filePath - Target file path
91
+ * @returns Temporary file path
92
+ * @private
93
+ */
94
+ private _getTempPath;
95
+ /**
96
+ * Get directory path from file path
97
+ * @param filePath - File path
98
+ * @returns Directory path
99
+ * @private
100
+ */
101
+ private _getDirPath;
102
+ /**
103
+ * Get base name from file path (without extension)
104
+ * @param filePath - File path
105
+ * @returns Base name
106
+ * @private
107
+ */
108
+ private _getBaseName;
109
+ /**
110
+ * Check if file exists
111
+ * @param filePath - File path to check
112
+ * @returns True if file exists
113
+ */
114
+ exists(filePath: string): Promise<boolean>;
115
+ /**
116
+ * Delete file
117
+ * @param filePath - File path to delete
118
+ * @throws {FileOperationError} If delete fails
119
+ */
120
+ delete(filePath: string): Promise<void>;
121
+ /**
122
+ * Ensure directory exists, create if missing
123
+ * @param dirPath - Directory path
124
+ * @throws {FileOperationError} If directory creation fails
125
+ */
126
+ ensureDir(dirPath: string): Promise<void>;
127
+ }
128
+ /**
129
+ * Cross-platform path utilities
130
+ */
131
+ export declare class PathUtils {
132
+ /**
133
+ * Normalize path for consistent storage
134
+ * Converts backslashes to forward slashes, removes redundant separators
135
+ * @param path - Path to normalize
136
+ * @returns Normalized path
137
+ */
138
+ static normalizePath(path: string): string;
139
+ /**
140
+ * Join path segments
141
+ * @param segments - Path segments to join
142
+ * @returns Joined path
143
+ */
144
+ static join(...segments: string[]): string;
145
+ /**
146
+ * Check if path is absolute
147
+ * @param path - Path to check
148
+ * @returns True if path is absolute
149
+ */
150
+ static isAbsolute(path: string): boolean;
151
+ /**
152
+ * Make path relative to another path
153
+ * @param from - Base path
154
+ * @param to - Target path
155
+ * @returns Relative path
156
+ */
157
+ static relative(from: string, to: string): string;
158
+ /**
159
+ * Get project configuration path
160
+ * Platform-aware configuration directory
161
+ * @param projectName - Project name
162
+ * @returns Configuration path
163
+ */
164
+ static getConfigPath(projectName: string): string;
165
+ /**
166
+ * Get project data path
167
+ * Platform-aware data directory
168
+ * @param projectName - Project name
169
+ * @returns Data path
170
+ */
171
+ static getDataPath(projectName: string): string;
172
+ /**
173
+ * Sanitize file path to prevent directory traversal
174
+ * @param filePath - File path to sanitize
175
+ * @param basePath - Base path to resolve against
176
+ * @returns Sanitized, absolute path
177
+ * @throws {FileOperationError} If path tries to escape base directory
178
+ */
179
+ static sanitizePath(filePath: string, basePath?: string): string;
180
+ }
181
+ //# sourceMappingURL=atomic-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic-write.d.ts","sourceRoot":"","sources":["../../../src/core/storage/atomic-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAA+B;IAE9C;;;OAGG;gBACS,MAAM,GAAE,kBAAuB;IAQ3C;;;;;;;;;;;;;OAaG;IACG,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,GACjE,OAAO,CAAC,IAAI,CAAC;IAgEhB;;;;;OAKG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7C;;;;;OAKG;IACG,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAezE;;;;OAIG;YACW,aAAa;IAwB3B;;;;OAIG;YACW,cAAc;IAuB5B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAOtB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IASpB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShD;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C;;;;OAIG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUhD;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAI1C;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM;IAMjD;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAcjD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAc/C;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAsB,GAAG,MAAM;CAehF"}