@sudocode-ai/cli 0.1.18 → 0.1.20

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 (80) hide show
  1. package/README.md +1299 -0
  2. package/dist/auth/claude.d.ts +19 -0
  3. package/dist/auth/claude.d.ts.map +1 -0
  4. package/dist/auth/claude.js +179 -0
  5. package/dist/auth/claude.js.map +1 -0
  6. package/dist/auth/clear.d.ts +17 -0
  7. package/dist/auth/clear.d.ts.map +1 -0
  8. package/dist/auth/clear.js +68 -0
  9. package/dist/auth/clear.js.map +1 -0
  10. package/dist/auth/credentials.d.ts +93 -0
  11. package/dist/auth/credentials.d.ts.map +1 -0
  12. package/dist/auth/credentials.js +255 -0
  13. package/dist/auth/credentials.js.map +1 -0
  14. package/dist/auth/index.d.ts +13 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +19 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/auth/status.d.ts +17 -0
  19. package/dist/auth/status.d.ts.map +1 -0
  20. package/dist/auth/status.js +132 -0
  21. package/dist/auth/status.js.map +1 -0
  22. package/dist/cli/auth-commands.d.ts +34 -0
  23. package/dist/cli/auth-commands.d.ts.map +1 -0
  24. package/dist/cli/auth-commands.js +28 -0
  25. package/dist/cli/auth-commands.js.map +1 -0
  26. package/dist/cli/issue-commands.d.ts.map +1 -1
  27. package/dist/cli/issue-commands.js +6 -3
  28. package/dist/cli/issue-commands.js.map +1 -1
  29. package/dist/cli/remote-commands.d.ts +59 -0
  30. package/dist/cli/remote-commands.d.ts.map +1 -0
  31. package/dist/cli/remote-commands.js +391 -0
  32. package/dist/cli/remote-commands.js.map +1 -0
  33. package/dist/cli/sync-commands.d.ts.map +1 -1
  34. package/dist/cli/sync-commands.js +6 -16
  35. package/dist/cli/sync-commands.js.map +1 -1
  36. package/dist/cli/update-commands.d.ts.map +1 -1
  37. package/dist/cli/update-commands.js +56 -0
  38. package/dist/cli/update-commands.js.map +1 -1
  39. package/dist/cli.js +131 -1
  40. package/dist/cli.js.map +1 -1
  41. package/dist/filename-generator.d.ts +10 -0
  42. package/dist/filename-generator.d.ts.map +1 -1
  43. package/dist/filename-generator.js +30 -0
  44. package/dist/filename-generator.js.map +1 -1
  45. package/dist/operations/feedback-anchors.d.ts +4 -2
  46. package/dist/operations/feedback-anchors.d.ts.map +1 -1
  47. package/dist/operations/feedback-anchors.js +14 -0
  48. package/dist/operations/feedback-anchors.js.map +1 -1
  49. package/dist/remote/claude-auth.d.ts +65 -0
  50. package/dist/remote/claude-auth.d.ts.map +1 -0
  51. package/dist/remote/claude-auth.js +100 -0
  52. package/dist/remote/claude-auth.js.map +1 -0
  53. package/dist/remote/config.d.ts +83 -0
  54. package/dist/remote/config.d.ts.map +1 -0
  55. package/dist/remote/config.js +266 -0
  56. package/dist/remote/config.js.map +1 -0
  57. package/dist/remote/errors.d.ts +18 -0
  58. package/dist/remote/errors.d.ts.map +1 -0
  59. package/dist/remote/errors.js +27 -0
  60. package/dist/remote/errors.js.map +1 -0
  61. package/dist/remote/git-context.d.ts +51 -0
  62. package/dist/remote/git-context.d.ts.map +1 -0
  63. package/dist/remote/git-context.js +107 -0
  64. package/dist/remote/git-context.js.map +1 -0
  65. package/dist/remote/spawn-service.d.ts +86 -0
  66. package/dist/remote/spawn-service.d.ts.map +1 -0
  67. package/dist/remote/spawn-service.js +248 -0
  68. package/dist/remote/spawn-service.js.map +1 -0
  69. package/dist/remote/types.d.ts +82 -0
  70. package/dist/remote/types.d.ts.map +1 -0
  71. package/dist/remote/types.js +5 -0
  72. package/dist/remote/types.js.map +1 -0
  73. package/dist/sync.d.ts +1 -1
  74. package/dist/sync.d.ts.map +1 -1
  75. package/dist/sync.js +17 -15
  76. package/dist/sync.js.map +1 -1
  77. package/dist/watcher.d.ts.map +1 -1
  78. package/dist/watcher.js +20 -7
  79. package/dist/watcher.js.map +1 -1
  80. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-service.d.ts","sourceRoot":"","sources":["../../src/remote/spawn-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD;;GAEG;AACH,qBAAa,kBAAkB;IAKjB,OAAO,CAAC,WAAW;IAJ/B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,eAAe,CAAwB;gBAE3B,WAAW,EAAE,MAAM;IAMvC;;;OAGG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;;;OAMG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,EAAE,YAAY,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAwHnG;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IASvE;;;;;;;OAOG;IACG,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAkBnF;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvE;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;OAKG;YACW,WAAW;CAY1B"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * RemoteSpawnService - Main service for remote deployments
3
+ *
4
+ * Coordinates the full deployment workflow:
5
+ * 1. Check GitHub CLI authentication
6
+ * 2. Detect git context
7
+ * 3. Ensure Claude authentication
8
+ * 4. Load and merge configuration
9
+ * 5. Create sudopod provider
10
+ * 6. Execute deployment with progress indicator
11
+ */
12
+ import { execSync, exec } from 'child_process';
13
+ import chalk from 'chalk';
14
+ import { GitContextDetector } from './git-context.js';
15
+ import { SpawnConfigManager } from './config.js';
16
+ import { ClaudeAuthIntegration } from './claude-auth.js';
17
+ /**
18
+ * Main service for remote deployments
19
+ */
20
+ export class RemoteSpawnService {
21
+ sudocodeDir;
22
+ configManager;
23
+ gitDetector;
24
+ authIntegration;
25
+ constructor(sudocodeDir) {
26
+ this.sudocodeDir = sudocodeDir;
27
+ this.configManager = new SpawnConfigManager(sudocodeDir);
28
+ this.gitDetector = new GitContextDetector();
29
+ this.authIntegration = new ClaudeAuthIntegration();
30
+ }
31
+ /**
32
+ * Open a URL in the default browser (platform-agnostic)
33
+ * Fire and forget - doesn't block or throw errors
34
+ */
35
+ openBrowser(url) {
36
+ const platform = process.platform;
37
+ let command;
38
+ if (platform === 'darwin') {
39
+ command = `open "${url}"`;
40
+ }
41
+ else if (platform === 'win32') {
42
+ command = `start "" "${url}"`;
43
+ }
44
+ else {
45
+ // Linux and other Unix-like systems
46
+ command = `xdg-open "${url}"`;
47
+ }
48
+ // Fire and forget - don't block on browser open
49
+ exec(command, (error) => {
50
+ if (error) {
51
+ // Silently fail - browser open is nice-to-have, not critical
52
+ console.log(chalk.gray(` (Could not auto-open browser: ${error.message})`));
53
+ }
54
+ });
55
+ }
56
+ /**
57
+ * Spawn to a remote provider
58
+ *
59
+ * @param options Spawn options with optional overrides
60
+ * @returns Deployment information
61
+ * @throws Error if deployment fails or prerequisites are not met
62
+ */
63
+ async spawn(options) {
64
+ // 1. Check GitHub CLI authentication
65
+ console.log(chalk.blue('Checking GitHub authentication...'));
66
+ this.checkGitHubAuth();
67
+ console.log(chalk.green('✓ GitHub authenticated\n'));
68
+ // 2. Detect git context
69
+ console.log(chalk.blue('Detecting git context...'));
70
+ const gitContext = this.gitDetector.detectContext({
71
+ owner: options.owner,
72
+ repo: options.repo,
73
+ branch: options.branch,
74
+ remote: options.remote,
75
+ });
76
+ console.log(chalk.green(`✓ Detected: ${gitContext.owner}/${gitContext.repo} (${gitContext.branch})\n`));
77
+ // 3. Ensure Claude authentication
78
+ console.log(chalk.blue('Checking Claude authentication...'));
79
+ const claudeToken = await this.authIntegration.ensureAuthenticated();
80
+ if (!claudeToken) {
81
+ throw new Error('Claude authentication failed - no token available');
82
+ }
83
+ console.log(chalk.green('✓ Claude authenticated'));
84
+ console.log(chalk.gray(` Token length: ${claudeToken.length} characters\n`));
85
+ // 4. Load and merge configuration
86
+ const providerConfig = this.configManager.getProviderConfig('codespaces');
87
+ // Use defaults if provider config doesn't exist
88
+ const defaults = SpawnConfigManager.getDefaults().providers.codespaces;
89
+ const config = providerConfig || defaults;
90
+ const spawnConfig = {
91
+ git: {
92
+ owner: gitContext.owner,
93
+ repo: gitContext.repo,
94
+ branch: gitContext.branch,
95
+ },
96
+ server: {
97
+ port: options.port ?? config.port,
98
+ idleTimeout: options.idleTimeout ?? config.idleTimeout,
99
+ keepAliveHours: options.keepAliveHours ?? config.keepAliveHours,
100
+ },
101
+ providerOptions: {
102
+ machine: options.machine ?? config.machine,
103
+ retentionPeriod: options.retentionPeriod ?? config.retentionPeriod,
104
+ },
105
+ dev: options.dev ?? false,
106
+ agents: {
107
+ install: ['claude'],
108
+ },
109
+ models: {
110
+ claudeLtt: claudeToken,
111
+ },
112
+ sudocode: {
113
+ mode: options.dev ? 'local' : 'npm',
114
+ version: 'latest',
115
+ },
116
+ };
117
+ // 5. Create sudopod provider
118
+ const sudopod = await this.loadSudopod();
119
+ const provider = sudopod.createProvider({ type: 'codespaces' });
120
+ // 6. Execute deployment with progress indicator
121
+ console.log(chalk.blue('Spawning to GitHub Codespaces...'));
122
+ // Simple progress dots (no external dependency)
123
+ const progressInterval = setInterval(() => {
124
+ process.stdout.write('.');
125
+ }, 500);
126
+ try {
127
+ const deployment = await provider.deploy(spawnConfig);
128
+ clearInterval(progressInterval);
129
+ console.log(); // New line after dots
130
+ console.log(chalk.green('✓ Spawn complete'));
131
+ // Open browsers (unless noOpen option is set)
132
+ const noOpen = options.noOpen;
133
+ if (!noOpen) {
134
+ if (deployment.urls?.workspace) {
135
+ console.log(chalk.gray('Opening codespace in browser...'));
136
+ this.openBrowser(deployment.urls.workspace);
137
+ }
138
+ // Wait 5 seconds before opening Sudocode UI to give codespace time to initialize
139
+ if (deployment.urls?.sudocode) {
140
+ console.log(chalk.gray('Opening Sudocode UI in 5 seconds...\n'));
141
+ setTimeout(() => {
142
+ this.openBrowser(deployment.urls.sudocode);
143
+ }, 5000);
144
+ }
145
+ }
146
+ return deployment;
147
+ }
148
+ catch (error) {
149
+ clearInterval(progressInterval);
150
+ console.log(); // New line after dots
151
+ console.log(chalk.red('✗ Spawn failed'));
152
+ throw error;
153
+ }
154
+ }
155
+ /**
156
+ * List all deployments for a provider
157
+ *
158
+ * @param provider Provider name ('codespaces' or 'coder')
159
+ * @returns List of deployments
160
+ * @throws Error if provider not supported or listing fails
161
+ */
162
+ async list(provider) {
163
+ this.validateProvider(provider);
164
+ const sudopod = await this.loadSudopod();
165
+ const providerInstance = sudopod.createProvider({ type: provider });
166
+ return await providerInstance.list();
167
+ }
168
+ /**
169
+ * Get status of a specific deployment
170
+ *
171
+ * @param provider Provider name ('codespaces' or 'coder')
172
+ * @param id Deployment ID
173
+ * @returns Deployment information
174
+ * @throws Error if deployment not found
175
+ */
176
+ async status(provider, id) {
177
+ this.validateProvider(provider);
178
+ const sudopod = await this.loadSudopod();
179
+ const providerInstance = sudopod.createProvider({ type: provider });
180
+ // sudopod.getStatus() returns just the status string, not full deployment info
181
+ // So we need to list all deployments and find the one we're looking for
182
+ const deployments = await providerInstance.list();
183
+ const deployment = deployments.find((d) => d.id === id || d.name === id);
184
+ if (!deployment) {
185
+ throw new Error(`Deployment not found: ${id}`);
186
+ }
187
+ return deployment;
188
+ }
189
+ /**
190
+ * Stop and delete a deployment
191
+ *
192
+ * @param provider Provider name ('codespaces' or 'coder')
193
+ * @param id Deployment ID
194
+ * @throws Error if deployment not found or stop fails
195
+ */
196
+ async stop(provider, id) {
197
+ this.validateProvider(provider);
198
+ const sudopod = await this.loadSudopod();
199
+ const providerInstance = sudopod.createProvider({ type: provider });
200
+ await providerInstance.stop(id);
201
+ }
202
+ /**
203
+ * Validate provider is supported
204
+ *
205
+ * @param provider Provider name to validate
206
+ * @throws Error if provider not supported
207
+ */
208
+ validateProvider(provider) {
209
+ const supported = ['codespaces', 'coder'];
210
+ if (!supported.includes(provider)) {
211
+ throw new Error(`Unknown provider '${provider}'.\nSupported providers: ${supported.join(', ')}`);
212
+ }
213
+ if (provider === 'coder') {
214
+ throw new Error("Provider 'coder' is not yet supported.\nCurrently supported: codespaces");
215
+ }
216
+ }
217
+ /**
218
+ * Check if GitHub CLI is authenticated
219
+ *
220
+ * @throws Error if not authenticated
221
+ */
222
+ checkGitHubAuth() {
223
+ try {
224
+ execSync('gh auth status', { stdio: 'ignore' });
225
+ }
226
+ catch {
227
+ throw new Error('GitHub CLI is not authenticated.\nRun: gh auth login');
228
+ }
229
+ }
230
+ /**
231
+ * Load sudopod SDK dynamically
232
+ *
233
+ * @returns sudopod module
234
+ * @throws Error if sudopod is not installed
235
+ */
236
+ async loadSudopod() {
237
+ try {
238
+ const sudopod = await import('sudopod');
239
+ return sudopod;
240
+ }
241
+ catch (error) {
242
+ throw new Error('sudopod SDK is not installed.\n' +
243
+ 'Install it with: npm install sudopod\n' +
244
+ 'Or install globally: npm install -g sudopod');
245
+ }
246
+ }
247
+ }
248
+ //# sourceMappingURL=spawn-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-service.js","sourceRoot":"","sources":["../../src/remote/spawn-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Shared types for remote deployment system
3
+ */
4
+ /**
5
+ * Options for spawning a remote deployment
6
+ */
7
+ export interface SpawnOptions {
8
+ /** Git repository owner */
9
+ owner?: string;
10
+ /** Git repository name */
11
+ repo?: string;
12
+ /** Branch to deploy */
13
+ branch?: string;
14
+ /** Server port */
15
+ port?: number;
16
+ /** Machine type/size */
17
+ machine?: string;
18
+ /** Idle timeout in minutes */
19
+ idleTimeout?: number;
20
+ /** Keep-alive duration in hours */
21
+ keepAliveHours?: number;
22
+ /** Retention period in days */
23
+ retentionPeriod?: number;
24
+ /** Git remote name (default: 'origin') */
25
+ remote?: string;
26
+ /** Development mode - use local sudocode packages instead of npm */
27
+ dev?: boolean;
28
+ /** Don't open browser automatically after deployment */
29
+ noOpen?: boolean;
30
+ }
31
+ /**
32
+ * Git context information
33
+ */
34
+ export interface GitInfo {
35
+ owner: string;
36
+ repo: string;
37
+ branch: string;
38
+ }
39
+ /**
40
+ * Server configuration
41
+ */
42
+ export interface ServerConfig {
43
+ port: number;
44
+ idleTimeout: number;
45
+ keepAliveHours: number;
46
+ }
47
+ /**
48
+ * Provider-specific options
49
+ */
50
+ export interface ProviderOptions {
51
+ machine: string;
52
+ retentionPeriod: number;
53
+ }
54
+ /**
55
+ * Deployment URLs
56
+ */
57
+ export interface DeploymentUrls {
58
+ workspace: string;
59
+ sudocode: string;
60
+ ssh: string;
61
+ }
62
+ /**
63
+ * Information about a deployment
64
+ */
65
+ export interface DeploymentInfo {
66
+ id: string;
67
+ name: string;
68
+ provider: 'codespaces' | 'coder';
69
+ git: GitInfo;
70
+ status: DeploymentStatus;
71
+ createdAt: string;
72
+ urls: DeploymentUrls;
73
+ keepAliveHours: number;
74
+ idleTimeout: number;
75
+ machine?: string;
76
+ retentionPeriod?: number;
77
+ }
78
+ /**
79
+ * Deployment status
80
+ */
81
+ export type DeploymentStatus = 'running' | 'stopped' | 'starting' | 'stopping' | 'provisioning' | 'failed';
82
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/remote/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC;IACjC,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,cAAc,GACd,QAAQ,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared types for remote deployment system
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/remote/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/dist/sync.d.ts CHANGED
@@ -41,7 +41,7 @@ export interface SyncOptions {
41
41
  export declare function syncMarkdownToJSONL(db: Database.Database, mdPath: string, options?: SyncOptions): Promise<MarkdownSyncResult>;
42
42
  /**
43
43
  * Sync from JSONL/SQLite to markdown file
44
- * Updates markdown frontmatter while preserving content
44
+ * Writes full content (frontmatter + body) from database to markdown
45
45
  */
46
46
  export declare function syncJSONLToMarkdown(db: Database.Database, entityId: string, entityType: "spec" | "issue", mdPath: string): Promise<MarkdownSyncResult>;
47
47
  //# sourceMappingURL=sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAuB3C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAoED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAoK7B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,OAAO,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CA0D7B"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAuB3C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAoED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAoK7B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,OAAO,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAuD7B"}
package/dist/sync.js CHANGED
@@ -183,7 +183,7 @@ export async function syncMarkdownToJSONL(db, mdPath, options = {}) {
183
183
  }
184
184
  /**
185
185
  * Sync from JSONL/SQLite to markdown file
186
- * Updates markdown frontmatter while preserving content
186
+ * Writes full content (frontmatter + body) from database to markdown
187
187
  */
188
188
  export async function syncJSONLToMarkdown(db, entityId, entityType, mdPath) {
189
189
  try {
@@ -204,17 +204,13 @@ export async function syncJSONLToMarkdown(db, entityId, entityType, mdPath) {
204
204
  const tags = getTags(db, entityId, entityType);
205
205
  // Build frontmatter
206
206
  const frontmatter = entityToFrontmatter(entity, entityType, relationships, tags);
207
- // Check if file exists
207
+ // Check if file exists (for action reporting)
208
208
  const fileExists = fs.existsSync(mdPath);
209
- if (fileExists) {
210
- // Update existing file's frontmatter only
211
- updateFrontmatterFile(mdPath, frontmatter);
212
- }
213
- else {
214
- // Create new file with content from database
215
- const content = entity.content || "";
216
- writeMarkdownFile(mdPath, frontmatter, content);
217
- }
209
+ // Write full content (frontmatter + body) from database
210
+ // When this function is called, sync direction has already determined
211
+ // that database is the source of truth, so we write everything
212
+ const content = entity.content || "";
213
+ writeMarkdownFile(mdPath, frontmatter, content);
218
214
  return {
219
215
  success: true,
220
216
  action: fileExists ? "updated" : "created",
@@ -296,12 +292,18 @@ async function syncSpec(db, id, frontmatter, content, references, isNew, user, f
296
292
  const oldAnchor = typeof feedback.anchor === "string"
297
293
  ? JSON.parse(feedback.anchor)
298
294
  : feedback.anchor;
295
+ // Skip feedback without anchors - they should be preserved unchanged
296
+ if (!oldAnchor) {
297
+ continue;
298
+ }
299
299
  // Relocate the anchor
300
300
  const newAnchor = relocateFeedbackAnchor(oldContent, content, oldAnchor);
301
- // Update feedback with new anchor
302
- updateFeedback(db, feedback.id, {
303
- anchor: newAnchor,
304
- });
301
+ // Update feedback with new anchor (newAnchor is never null here since oldAnchor was checked)
302
+ if (newAnchor) {
303
+ updateFeedback(db, feedback.id, {
304
+ anchor: newAnchor,
305
+ });
306
+ }
305
307
  }
306
308
  }
307
309
  }
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAkB3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuClF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAiCD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAszBpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA+BnE"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAkB3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuClF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAiCD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAu0BpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA+BnE"}
package/dist/watcher.js CHANGED
@@ -107,28 +107,38 @@ export function startWatcher(options) {
107
107
  * and array element ordering. This ensures consistent hashes regardless of:
108
108
  * - Object key order: {"id":"x","title":"y"} vs {"title":"y","id":"x"}
109
109
  * - Array element order: [{to:"A"},{to:"B"}] vs [{to:"B"},{to:"A"}]
110
+ *
111
+ * IMPORTANT: Excludes timestamp fields (updated_at, created_at) from the hash
112
+ * because these change as a side effect of syncing and shouldn't trigger
113
+ * change detection. We only want to detect actual content changes.
110
114
  */
111
115
  function computeCanonicalHash(entity) {
116
+ // Fields to exclude from hash comparison (timestamps change on every sync)
117
+ const excludeFields = new Set(["updated_at", "created_at"]);
112
118
  // Recursively sort keys and array elements for consistent ordering
113
- const canonicalize = (obj) => {
119
+ const canonicalize = (obj, isTopLevel = false) => {
114
120
  if (obj === null || typeof obj !== "object") {
115
121
  return obj;
116
122
  }
117
123
  if (Array.isArray(obj)) {
118
124
  // Sort array elements by their JSON representation for deterministic ordering
119
125
  return obj
120
- .map(canonicalize)
126
+ .map((item) => canonicalize(item, false))
121
127
  .sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
122
128
  }
123
129
  const sorted = {};
124
130
  Object.keys(obj)
125
131
  .sort()
126
132
  .forEach((key) => {
127
- sorted[key] = canonicalize(obj[key]);
133
+ // Only exclude timestamp fields at the top level of the entity
134
+ if (isTopLevel && excludeFields.has(key)) {
135
+ return; // Skip this field
136
+ }
137
+ sorted[key] = canonicalize(obj[key], false);
128
138
  });
129
139
  return sorted;
130
140
  };
131
- const canonical = canonicalize(entity);
141
+ const canonical = canonicalize(entity, true);
132
142
  return crypto
133
143
  .createHash("sha256")
134
144
  .update(JSON.stringify(canonical))
@@ -162,15 +172,18 @@ export function startWatcher(options) {
162
172
  }
163
173
  // Compare other key fields
164
174
  if (entityType === "spec") {
165
- if (frontmatter.priority !== dbEntity.priority)
175
+ if (frontmatter.priority !== dbEntity.priority) {
166
176
  return false;
177
+ }
167
178
  }
168
179
  else {
169
180
  const issue = dbEntity;
170
- if (frontmatter.status !== issue.status)
181
+ if (frontmatter.status !== issue.status) {
171
182
  return false;
172
- if (frontmatter.priority !== issue.priority)
183
+ }
184
+ if (frontmatter.priority !== issue.priority) {
173
185
  return false;
186
+ }
174
187
  }
175
188
  return true; // Content matches
176
189
  }