@stoneforge/quarry 0.1.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.
- package/LICENSE +13 -0
- package/README.md +160 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +8 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/quarry-api.d.ts +268 -0
- package/dist/api/quarry-api.d.ts.map +1 -0
- package/dist/api/quarry-api.js +3905 -0
- package/dist/api/quarry-api.js.map +1 -0
- package/dist/api/types.d.ts +1359 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +204 -0
- package/dist/api/types.js.map +1 -0
- package/dist/bin/sf.d.ts +3 -0
- package/dist/bin/sf.d.ts.map +1 -0
- package/dist/bin/sf.js +9 -0
- package/dist/bin/sf.js.map +1 -0
- package/dist/cli/commands/admin.d.ts +11 -0
- package/dist/cli/commands/admin.d.ts.map +1 -0
- package/dist/cli/commands/admin.js +465 -0
- package/dist/cli/commands/admin.js.map +1 -0
- package/dist/cli/commands/alias.d.ts +8 -0
- package/dist/cli/commands/alias.d.ts.map +1 -0
- package/dist/cli/commands/alias.js +70 -0
- package/dist/cli/commands/alias.js.map +1 -0
- package/dist/cli/commands/channel.d.ts +13 -0
- package/dist/cli/commands/channel.d.ts.map +1 -0
- package/dist/cli/commands/channel.js +680 -0
- package/dist/cli/commands/channel.js.map +1 -0
- package/dist/cli/commands/completion.d.ts +8 -0
- package/dist/cli/commands/completion.d.ts.map +1 -0
- package/dist/cli/commands/completion.js +87 -0
- package/dist/cli/commands/completion.js.map +1 -0
- package/dist/cli/commands/config.d.ts +12 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +242 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/crud.d.ts +64 -0
- package/dist/cli/commands/crud.d.ts.map +1 -0
- package/dist/cli/commands/crud.js +805 -0
- package/dist/cli/commands/crud.js.map +1 -0
- package/dist/cli/commands/dep.d.ts +16 -0
- package/dist/cli/commands/dep.d.ts.map +1 -0
- package/dist/cli/commands/dep.js +499 -0
- package/dist/cli/commands/dep.js.map +1 -0
- package/dist/cli/commands/document.d.ts +12 -0
- package/dist/cli/commands/document.d.ts.map +1 -0
- package/dist/cli/commands/document.js +1039 -0
- package/dist/cli/commands/document.js.map +1 -0
- package/dist/cli/commands/embeddings.d.ts +12 -0
- package/dist/cli/commands/embeddings.d.ts.map +1 -0
- package/dist/cli/commands/embeddings.js +273 -0
- package/dist/cli/commands/embeddings.js.map +1 -0
- package/dist/cli/commands/entity.d.ts +16 -0
- package/dist/cli/commands/entity.d.ts.map +1 -0
- package/dist/cli/commands/entity.js +522 -0
- package/dist/cli/commands/entity.js.map +1 -0
- package/dist/cli/commands/gc.d.ts +10 -0
- package/dist/cli/commands/gc.d.ts.map +1 -0
- package/dist/cli/commands/gc.js +257 -0
- package/dist/cli/commands/gc.js.map +1 -0
- package/dist/cli/commands/help.d.ts +11 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +169 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/history.d.ts +9 -0
- package/dist/cli/commands/history.d.ts.map +1 -0
- package/dist/cli/commands/history.js +160 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/identity.d.ts +18 -0
- package/dist/cli/commands/identity.d.ts.map +1 -0
- package/dist/cli/commands/identity.js +698 -0
- package/dist/cli/commands/identity.js.map +1 -0
- package/dist/cli/commands/inbox.d.ts +20 -0
- package/dist/cli/commands/inbox.d.ts.map +1 -0
- package/dist/cli/commands/inbox.js +493 -0
- package/dist/cli/commands/inbox.js.map +1 -0
- package/dist/cli/commands/init.d.ts +20 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +144 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +9 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +200 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/library.d.ts +12 -0
- package/dist/cli/commands/library.d.ts.map +1 -0
- package/dist/cli/commands/library.js +665 -0
- package/dist/cli/commands/library.js.map +1 -0
- package/dist/cli/commands/message.d.ts +11 -0
- package/dist/cli/commands/message.d.ts.map +1 -0
- package/dist/cli/commands/message.js +608 -0
- package/dist/cli/commands/message.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +17 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +698 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/playbook.d.ts +12 -0
- package/dist/cli/commands/playbook.d.ts.map +1 -0
- package/dist/cli/commands/playbook.js +730 -0
- package/dist/cli/commands/playbook.js.map +1 -0
- package/dist/cli/commands/reset.d.ts +12 -0
- package/dist/cli/commands/reset.d.ts.map +1 -0
- package/dist/cli/commands/reset.js +306 -0
- package/dist/cli/commands/reset.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +11 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +106 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +8 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +82 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +14 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +370 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/task.d.ts +25 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +1153 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/team.d.ts +13 -0
- package/dist/cli/commands/team.d.ts.map +1 -0
- package/dist/cli/commands/team.js +471 -0
- package/dist/cli/commands/team.js.map +1 -0
- package/dist/cli/commands/workflow.d.ts +16 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +753 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/completion.d.ts +28 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +295 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/db.d.ts +38 -0
- package/dist/cli/db.d.ts.map +1 -0
- package/dist/cli/db.js +90 -0
- package/dist/cli/db.js.map +1 -0
- package/dist/cli/formatter.d.ts +87 -0
- package/dist/cli/formatter.d.ts.map +1 -0
- package/dist/cli/formatter.js +464 -0
- package/dist/cli/formatter.js.map +1 -0
- package/dist/cli/index.d.ts +33 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +38 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +45 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +256 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/plugin-loader.d.ts +39 -0
- package/dist/cli/plugin-loader.d.ts.map +1 -0
- package/dist/cli/plugin-loader.js +165 -0
- package/dist/cli/plugin-loader.js.map +1 -0
- package/dist/cli/plugin-registry.d.ts +50 -0
- package/dist/cli/plugin-registry.d.ts.map +1 -0
- package/dist/cli/plugin-registry.js +206 -0
- package/dist/cli/plugin-registry.js.map +1 -0
- package/dist/cli/plugin-types.d.ts +106 -0
- package/dist/cli/plugin-types.d.ts.map +1 -0
- package/dist/cli/plugin-types.js +103 -0
- package/dist/cli/plugin-types.js.map +1 -0
- package/dist/cli/runner.d.ts +35 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +340 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/suggest.d.ts +15 -0
- package/dist/cli/suggest.d.ts.map +1 -0
- package/dist/cli/suggest.js +49 -0
- package/dist/cli/suggest.js.map +1 -0
- package/dist/cli/types.d.ts +138 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +63 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/config/config.d.ts +86 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +348 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/defaults.d.ts +66 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +114 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/duration.d.ts +75 -0
- package/dist/config/duration.d.ts.map +1 -0
- package/dist/config/duration.js +190 -0
- package/dist/config/duration.js.map +1 -0
- package/dist/config/env.d.ts +67 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +207 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/file.d.ts +97 -0
- package/dist/config/file.d.ts.map +1 -0
- package/dist/config/file.js +365 -0
- package/dist/config/file.js.map +1 -0
- package/dist/config/index.d.ts +35 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +41 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/merge.d.ts +53 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +226 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/types.d.ts +257 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +72 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +55 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +251 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/http/index.d.ts +8 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +12 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/sync-handlers.d.ts +162 -0
- package/dist/http/sync-handlers.d.ts.map +1 -0
- package/dist/http/sync-handlers.js +271 -0
- package/dist/http/sync-handlers.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/server/index.d.ts +34 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3329 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/static.d.ts +18 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +71 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server/ws/broadcaster.d.ts +8 -0
- package/dist/server/ws/broadcaster.d.ts.map +1 -0
- package/dist/server/ws/broadcaster.js +7 -0
- package/dist/server/ws/broadcaster.js.map +1 -0
- package/dist/server/ws/handler.d.ts +55 -0
- package/dist/server/ws/handler.d.ts.map +1 -0
- package/dist/server/ws/handler.js +160 -0
- package/dist/server/ws/handler.js.map +1 -0
- package/dist/services/blocked-cache.d.ts +297 -0
- package/dist/services/blocked-cache.d.ts.map +1 -0
- package/dist/services/blocked-cache.js +755 -0
- package/dist/services/blocked-cache.js.map +1 -0
- package/dist/services/dependency.d.ts +205 -0
- package/dist/services/dependency.d.ts.map +1 -0
- package/dist/services/dependency.js +566 -0
- package/dist/services/dependency.js.map +1 -0
- package/dist/services/embeddings/fusion.d.ts +33 -0
- package/dist/services/embeddings/fusion.d.ts.map +1 -0
- package/dist/services/embeddings/fusion.js +34 -0
- package/dist/services/embeddings/fusion.js.map +1 -0
- package/dist/services/embeddings/index.d.ts +12 -0
- package/dist/services/embeddings/index.d.ts.map +1 -0
- package/dist/services/embeddings/index.js +10 -0
- package/dist/services/embeddings/index.js.map +1 -0
- package/dist/services/embeddings/local-provider.d.ts +31 -0
- package/dist/services/embeddings/local-provider.d.ts.map +1 -0
- package/dist/services/embeddings/local-provider.js +80 -0
- package/dist/services/embeddings/local-provider.js.map +1 -0
- package/dist/services/embeddings/service.d.ts +76 -0
- package/dist/services/embeddings/service.d.ts.map +1 -0
- package/dist/services/embeddings/service.js +153 -0
- package/dist/services/embeddings/service.js.map +1 -0
- package/dist/services/embeddings/types.d.ts +70 -0
- package/dist/services/embeddings/types.d.ts.map +1 -0
- package/dist/services/embeddings/types.js +8 -0
- package/dist/services/embeddings/types.js.map +1 -0
- package/dist/services/id-length-cache.d.ts +156 -0
- package/dist/services/id-length-cache.d.ts.map +1 -0
- package/dist/services/id-length-cache.js +197 -0
- package/dist/services/id-length-cache.js.map +1 -0
- package/dist/services/inbox.d.ts +147 -0
- package/dist/services/inbox.d.ts.map +1 -0
- package/dist/services/inbox.js +428 -0
- package/dist/services/inbox.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +10 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/priority-service.d.ts +145 -0
- package/dist/services/priority-service.d.ts.map +1 -0
- package/dist/services/priority-service.js +272 -0
- package/dist/services/priority-service.js.map +1 -0
- package/dist/services/search-utils.d.ts +47 -0
- package/dist/services/search-utils.d.ts.map +1 -0
- package/dist/services/search-utils.js +83 -0
- package/dist/services/search-utils.js.map +1 -0
- package/dist/sync/hash.d.ts +48 -0
- package/dist/sync/hash.d.ts.map +1 -0
- package/dist/sync/hash.js +136 -0
- package/dist/sync/hash.js.map +1 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +16 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/merge.d.ts +80 -0
- package/dist/sync/merge.d.ts.map +1 -0
- package/dist/sync/merge.js +310 -0
- package/dist/sync/merge.js.map +1 -0
- package/dist/sync/serialization.d.ts +132 -0
- package/dist/sync/serialization.d.ts.map +1 -0
- package/dist/sync/serialization.js +306 -0
- package/dist/sync/serialization.js.map +1 -0
- package/dist/sync/service.d.ts +102 -0
- package/dist/sync/service.d.ts.map +1 -0
- package/dist/sync/service.js +493 -0
- package/dist/sync/service.js.map +1 -0
- package/dist/sync/types.d.ts +275 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +76 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/systems/identity.d.ts +479 -0
- package/dist/systems/identity.d.ts.map +1 -0
- package/dist/systems/identity.js +817 -0
- package/dist/systems/identity.js.map +1 -0
- package/dist/systems/index.d.ts +8 -0
- package/dist/systems/index.d.ts.map +1 -0
- package/dist/systems/index.js +29 -0
- package/dist/systems/index.js.map +1 -0
- package/package.json +121 -0
- package/web/assets/charts-vendor-D1YcbGux.js +55 -0
- package/web/assets/dnd-vendor-DmxE-_ZH.js +5 -0
- package/web/assets/editor-vendor-BxraAWts.js +279 -0
- package/web/assets/index-B77vv208.js +341 -0
- package/web/assets/index-CF_XnVLh.css +1 -0
- package/web/assets/router-vendor-BCKpRBrB.js +41 -0
- package/web/assets/ui-vendor-DUahGnbT.js +45 -0
- package/web/assets/utils-vendor-CfYKiENT.js +813 -0
- package/web/favicon.ico +0 -0
- package/web/index.html +23 -0
- package/web/logo.png +0 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Commands - Export, Import, and Status operations
|
|
3
|
+
*
|
|
4
|
+
* Provides CLI commands for JSONL sync operations:
|
|
5
|
+
* - export: Export elements to JSONL files
|
|
6
|
+
* - import: Import elements from JSONL files
|
|
7
|
+
* - status: Show sync status (dirty elements, etc.)
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync } from 'node:fs';
|
|
10
|
+
import { join, resolve } from 'node:path';
|
|
11
|
+
import { success, failure, ExitCode } from '../types.js';
|
|
12
|
+
import { getOutputMode } from '../formatter.js';
|
|
13
|
+
import { createStorage, initializeSchema } from '@stoneforge/storage';
|
|
14
|
+
import { createSyncService } from '../../sync/service.js';
|
|
15
|
+
import { resolveDatabasePath, STONEFORGE_DIR } from '../db.js';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Constants
|
|
18
|
+
// ============================================================================
|
|
19
|
+
const DEFAULT_SYNC_DIR = 'sync';
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Database Helper
|
|
22
|
+
// ============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Creates a SyncService instance from options
|
|
25
|
+
*/
|
|
26
|
+
function createSyncServiceFromOptions(options) {
|
|
27
|
+
const dbPath = resolveDatabasePath(options);
|
|
28
|
+
if (!dbPath) {
|
|
29
|
+
return {
|
|
30
|
+
syncService: null,
|
|
31
|
+
error: 'No database found. Run "sf init" to initialize a workspace, or specify --db path',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const backend = createStorage({ path: dbPath, create: true });
|
|
36
|
+
initializeSchema(backend);
|
|
37
|
+
return { syncService: createSyncService(backend) };
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
41
|
+
return {
|
|
42
|
+
syncService: null,
|
|
43
|
+
error: `Failed to open database: ${message}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolves sync directory from options or default
|
|
49
|
+
*/
|
|
50
|
+
function resolveSyncDir(options, isExport) {
|
|
51
|
+
const pathOption = isExport ? options.output : options.input;
|
|
52
|
+
if (pathOption) {
|
|
53
|
+
return resolve(pathOption);
|
|
54
|
+
}
|
|
55
|
+
// Default to .stoneforge/sync
|
|
56
|
+
const stoneforgeDir = join(process.cwd(), STONEFORGE_DIR);
|
|
57
|
+
return join(stoneforgeDir, DEFAULT_SYNC_DIR);
|
|
58
|
+
}
|
|
59
|
+
const exportOptions = [
|
|
60
|
+
{
|
|
61
|
+
name: 'output',
|
|
62
|
+
short: 'o',
|
|
63
|
+
description: 'Output directory path (default: .stoneforge/sync)',
|
|
64
|
+
hasValue: true,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'full',
|
|
68
|
+
short: 'f',
|
|
69
|
+
description: 'Full export (ignore dirty tracking)',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'include-ephemeral',
|
|
73
|
+
description: 'Include ephemeral elements (default: exclude)',
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
async function exportHandler(_args, options) {
|
|
77
|
+
const { syncService, error } = createSyncServiceFromOptions(options);
|
|
78
|
+
if (error) {
|
|
79
|
+
return failure(error, ExitCode.GENERAL_ERROR);
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const outputDir = resolveSyncDir(options, true);
|
|
83
|
+
const result = syncService.exportSync({
|
|
84
|
+
outputDir,
|
|
85
|
+
full: options.full ?? false,
|
|
86
|
+
includeEphemeral: options['include-ephemeral'] ?? false,
|
|
87
|
+
});
|
|
88
|
+
// Format output based on mode
|
|
89
|
+
const mode = getOutputMode(options);
|
|
90
|
+
if (mode === 'json') {
|
|
91
|
+
return success(result);
|
|
92
|
+
}
|
|
93
|
+
if (mode === 'quiet') {
|
|
94
|
+
return success(`${result.elementsExported}:${result.dependenciesExported}`);
|
|
95
|
+
}
|
|
96
|
+
// Human-readable output
|
|
97
|
+
const exportType = result.incremental ? 'Incremental' : 'Full';
|
|
98
|
+
const lines = [
|
|
99
|
+
`${exportType} export completed`,
|
|
100
|
+
'',
|
|
101
|
+
`Elements exported: ${result.elementsExported}`,
|
|
102
|
+
`Dependencies exported: ${result.dependenciesExported}`,
|
|
103
|
+
'',
|
|
104
|
+
`Files:`,
|
|
105
|
+
` ${result.elementsFile}`,
|
|
106
|
+
` ${result.dependenciesFile}`,
|
|
107
|
+
];
|
|
108
|
+
return success(result, lines.join('\n'));
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
112
|
+
return failure(`Export failed: ${message}`, ExitCode.GENERAL_ERROR);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export const exportCommand = {
|
|
116
|
+
name: 'export',
|
|
117
|
+
description: 'Export elements to JSONL files',
|
|
118
|
+
usage: 'sf export [options]',
|
|
119
|
+
help: `Export elements and dependencies to JSONL files for version control.
|
|
120
|
+
|
|
121
|
+
By default, only exports elements that have been modified since the last export
|
|
122
|
+
(incremental export). Use --full for a complete export.
|
|
123
|
+
|
|
124
|
+
Options:
|
|
125
|
+
-o, --output <dir> Output directory (default: .stoneforge/sync)
|
|
126
|
+
-f, --full Full export (ignore dirty tracking)
|
|
127
|
+
--include-ephemeral Include ephemeral elements (excluded by default)
|
|
128
|
+
|
|
129
|
+
Output files:
|
|
130
|
+
elements.jsonl All exported elements
|
|
131
|
+
dependencies.jsonl All exported dependencies
|
|
132
|
+
|
|
133
|
+
Examples:
|
|
134
|
+
sf export
|
|
135
|
+
sf export --full
|
|
136
|
+
sf export -o ./backup
|
|
137
|
+
sf export --include-ephemeral`,
|
|
138
|
+
options: exportOptions,
|
|
139
|
+
handler: exportHandler,
|
|
140
|
+
};
|
|
141
|
+
const importOptions = [
|
|
142
|
+
{
|
|
143
|
+
name: 'input',
|
|
144
|
+
short: 'i',
|
|
145
|
+
description: 'Input directory path (default: .stoneforge/sync)',
|
|
146
|
+
hasValue: true,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'dry-run',
|
|
150
|
+
short: 'n',
|
|
151
|
+
description: 'Show what would be imported without making changes',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'force',
|
|
155
|
+
short: 'f',
|
|
156
|
+
description: 'Force import (remote always wins conflicts)',
|
|
157
|
+
},
|
|
158
|
+
];
|
|
159
|
+
async function importHandler(_args, options) {
|
|
160
|
+
const { syncService, error } = createSyncServiceFromOptions(options);
|
|
161
|
+
if (error) {
|
|
162
|
+
return failure(error, ExitCode.GENERAL_ERROR);
|
|
163
|
+
}
|
|
164
|
+
try {
|
|
165
|
+
const inputDir = resolveSyncDir(options, false);
|
|
166
|
+
// Check if input directory exists
|
|
167
|
+
if (!existsSync(inputDir)) {
|
|
168
|
+
return failure(`Input directory not found: ${inputDir}`, ExitCode.NOT_FOUND);
|
|
169
|
+
}
|
|
170
|
+
const result = syncService.importSync({
|
|
171
|
+
inputDir,
|
|
172
|
+
dryRun: options['dry-run'] ?? false,
|
|
173
|
+
force: options.force ?? false,
|
|
174
|
+
});
|
|
175
|
+
// Format output based on mode
|
|
176
|
+
const mode = getOutputMode(options);
|
|
177
|
+
if (mode === 'json') {
|
|
178
|
+
return success(result);
|
|
179
|
+
}
|
|
180
|
+
if (mode === 'quiet') {
|
|
181
|
+
return success(`${result.elementsImported}:${result.dependenciesImported}`);
|
|
182
|
+
}
|
|
183
|
+
// Human-readable output
|
|
184
|
+
const isDryRun = options['dry-run'] ?? false;
|
|
185
|
+
const actionWord = isDryRun ? 'Would import' : 'Imported';
|
|
186
|
+
const lines = [
|
|
187
|
+
isDryRun ? 'Dry run - no changes made' : 'Import completed',
|
|
188
|
+
'',
|
|
189
|
+
`Elements:`,
|
|
190
|
+
` ${actionWord}: ${result.elementsImported}`,
|
|
191
|
+
` Skipped: ${result.elementsSkipped}`,
|
|
192
|
+
'',
|
|
193
|
+
`Dependencies:`,
|
|
194
|
+
` ${actionWord}: ${result.dependenciesImported}`,
|
|
195
|
+
` Skipped: ${result.dependenciesSkipped}`,
|
|
196
|
+
];
|
|
197
|
+
// Show conflicts if any
|
|
198
|
+
if (result.conflicts.length > 0) {
|
|
199
|
+
lines.push('');
|
|
200
|
+
lines.push(`Conflicts resolved: ${result.conflicts.length}`);
|
|
201
|
+
for (const conflict of result.conflicts.slice(0, 5)) {
|
|
202
|
+
lines.push(` ${conflict.elementId}: ${conflict.resolution}`);
|
|
203
|
+
}
|
|
204
|
+
if (result.conflicts.length > 5) {
|
|
205
|
+
lines.push(` ... and ${result.conflicts.length - 5} more`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Show errors if any
|
|
209
|
+
if (result.errors.length > 0) {
|
|
210
|
+
lines.push('');
|
|
211
|
+
lines.push(`Errors: ${result.errors.length}`);
|
|
212
|
+
for (const err of result.errors.slice(0, 5)) {
|
|
213
|
+
lines.push(` ${err.file}:${err.line}: ${err.message}`);
|
|
214
|
+
}
|
|
215
|
+
if (result.errors.length > 5) {
|
|
216
|
+
lines.push(` ... and ${result.errors.length - 5} more`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return success(result, lines.join('\n'));
|
|
220
|
+
}
|
|
221
|
+
catch (err) {
|
|
222
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
223
|
+
return failure(`Import failed: ${message}`, ExitCode.GENERAL_ERROR);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
export const importCommand = {
|
|
227
|
+
name: 'import',
|
|
228
|
+
description: 'Import elements from JSONL files',
|
|
229
|
+
usage: 'sf import [options]',
|
|
230
|
+
help: `Import elements and dependencies from JSONL files.
|
|
231
|
+
|
|
232
|
+
Uses Last-Write-Wins (LWW) merge strategy by default:
|
|
233
|
+
- Compares updatedAt timestamps
|
|
234
|
+
- Later timestamp wins
|
|
235
|
+
- Tags are merged (union)
|
|
236
|
+
- Closed status wins over open states
|
|
237
|
+
|
|
238
|
+
Options:
|
|
239
|
+
-i, --input <dir> Input directory (default: .stoneforge/sync)
|
|
240
|
+
-n, --dry-run Show what would change without importing
|
|
241
|
+
-f, --force Force import (remote always wins)
|
|
242
|
+
|
|
243
|
+
Expected files:
|
|
244
|
+
elements.jsonl Elements to import
|
|
245
|
+
dependencies.jsonl Dependencies to import
|
|
246
|
+
|
|
247
|
+
Examples:
|
|
248
|
+
sf import
|
|
249
|
+
sf import --dry-run
|
|
250
|
+
sf import -i ./backup
|
|
251
|
+
sf import --force`,
|
|
252
|
+
options: importOptions,
|
|
253
|
+
handler: importHandler,
|
|
254
|
+
};
|
|
255
|
+
// ============================================================================
|
|
256
|
+
// Status Command
|
|
257
|
+
// ============================================================================
|
|
258
|
+
async function statusHandler(_args, options) {
|
|
259
|
+
const dbPath = resolveDatabasePath(options);
|
|
260
|
+
if (!dbPath) {
|
|
261
|
+
return failure('No database found. Run "sf init" to initialize a workspace, or specify --db path', ExitCode.GENERAL_ERROR);
|
|
262
|
+
}
|
|
263
|
+
try {
|
|
264
|
+
const backend = createStorage({ path: dbPath, create: true });
|
|
265
|
+
initializeSchema(backend);
|
|
266
|
+
// Get dirty element count
|
|
267
|
+
const dirtyElements = backend.getDirtyElements();
|
|
268
|
+
const dirtyCount = dirtyElements.length;
|
|
269
|
+
// Get total element count
|
|
270
|
+
const totalResult = backend.queryOne('SELECT COUNT(*) as count FROM elements WHERE deleted_at IS NULL');
|
|
271
|
+
const totalCount = totalResult?.count ?? 0;
|
|
272
|
+
// Check sync directory
|
|
273
|
+
const syncDir = join(process.cwd(), STONEFORGE_DIR, DEFAULT_SYNC_DIR);
|
|
274
|
+
const syncDirExists = existsSync(syncDir);
|
|
275
|
+
const elementsFileExists = syncDirExists && existsSync(join(syncDir, 'elements.jsonl'));
|
|
276
|
+
const dependenciesFileExists = syncDirExists && existsSync(join(syncDir, 'dependencies.jsonl'));
|
|
277
|
+
// Build status object
|
|
278
|
+
const status = {
|
|
279
|
+
dirtyElementCount: dirtyCount,
|
|
280
|
+
totalElementCount: totalCount,
|
|
281
|
+
hasPendingChanges: dirtyCount > 0,
|
|
282
|
+
syncDirectory: syncDir,
|
|
283
|
+
syncDirectoryExists: syncDirExists,
|
|
284
|
+
elementsFileExists,
|
|
285
|
+
dependenciesFileExists,
|
|
286
|
+
};
|
|
287
|
+
// Format output based on mode
|
|
288
|
+
const mode = getOutputMode(options);
|
|
289
|
+
if (mode === 'json') {
|
|
290
|
+
return success(status);
|
|
291
|
+
}
|
|
292
|
+
if (mode === 'quiet') {
|
|
293
|
+
return success(String(dirtyCount));
|
|
294
|
+
}
|
|
295
|
+
// Human-readable output
|
|
296
|
+
const lines = [
|
|
297
|
+
'Sync Status',
|
|
298
|
+
'',
|
|
299
|
+
`Total elements: ${totalCount}`,
|
|
300
|
+
`Pending changes: ${dirtyCount}`,
|
|
301
|
+
'',
|
|
302
|
+
`Sync directory: ${syncDir}`,
|
|
303
|
+
` Directory: ${syncDirExists ? 'exists' : 'not found'}`,
|
|
304
|
+
` elements.jsonl: ${elementsFileExists ? 'exists' : 'not found'}`,
|
|
305
|
+
` dependencies.jsonl: ${dependenciesFileExists ? 'exists' : 'not found'}`,
|
|
306
|
+
];
|
|
307
|
+
if (dirtyCount > 0) {
|
|
308
|
+
lines.push('');
|
|
309
|
+
lines.push('Run "sf export" to export pending changes.');
|
|
310
|
+
}
|
|
311
|
+
return success(status, lines.join('\n'));
|
|
312
|
+
}
|
|
313
|
+
catch (err) {
|
|
314
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
315
|
+
return failure(`Failed to get status: ${message}`, ExitCode.GENERAL_ERROR);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
export const statusCommand = {
|
|
319
|
+
name: 'status',
|
|
320
|
+
description: 'Show sync status',
|
|
321
|
+
usage: 'sf status',
|
|
322
|
+
help: `Show the current sync status.
|
|
323
|
+
|
|
324
|
+
Displays:
|
|
325
|
+
- Number of elements with pending changes (dirty)
|
|
326
|
+
- Total element count
|
|
327
|
+
- Sync directory status
|
|
328
|
+
- Whether sync files exist
|
|
329
|
+
|
|
330
|
+
Examples:
|
|
331
|
+
sf status
|
|
332
|
+
sf status --json`,
|
|
333
|
+
options: [],
|
|
334
|
+
handler: statusHandler,
|
|
335
|
+
};
|
|
336
|
+
// ============================================================================
|
|
337
|
+
// Sync Parent Command (for subcommand structure)
|
|
338
|
+
// ============================================================================
|
|
339
|
+
export const syncCommand = {
|
|
340
|
+
name: 'sync',
|
|
341
|
+
description: 'Sync commands (export, import, status)',
|
|
342
|
+
usage: 'sf sync <command> [options]',
|
|
343
|
+
help: `JSONL sync commands for version control integration.
|
|
344
|
+
|
|
345
|
+
Commands:
|
|
346
|
+
export Export elements to JSONL files
|
|
347
|
+
import Import elements from JSONL files
|
|
348
|
+
status Show sync status
|
|
349
|
+
|
|
350
|
+
Examples:
|
|
351
|
+
sf sync export
|
|
352
|
+
sf sync import --dry-run
|
|
353
|
+
sf sync status`,
|
|
354
|
+
subcommands: {
|
|
355
|
+
export: exportCommand,
|
|
356
|
+
import: importCommand,
|
|
357
|
+
status: statusCommand,
|
|
358
|
+
},
|
|
359
|
+
handler: async (_args, options) => {
|
|
360
|
+
// Show help if no subcommand specified
|
|
361
|
+
const mode = getOutputMode(options);
|
|
362
|
+
if (mode === 'json') {
|
|
363
|
+
return success({
|
|
364
|
+
commands: ['export', 'import', 'status'],
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
return failure('Usage: sf sync <command>\n\nCommands: export, import, status\n\nRun "sf sync --help" for more information.', ExitCode.INVALID_ARGUMENTS);
|
|
368
|
+
},
|
|
369
|
+
};
|
|
370
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAmB,MAAM,UAAU,CAAC;AAEhF,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,4BAA4B,CAAC,OAAsB;IAI1D,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,WAAW,EAAE,IAAuD;YACpE,KAAK,EAAE,kFAAkF;SAC1F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,WAAW,EAAE,IAAuD;YACpE,KAAK,EAAE,4BAA4B,OAAO,EAAE;SAC7C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAA4C,EAAE,QAAiB;IACrF,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,8BAA8B;IAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAYD,MAAM,aAAa,GAAoB;IACrC;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,mDAAmD;QAChE,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,+CAA+C;KAC7D;CACF,CAAC;AAEF,KAAK,UAAU,aAAa,CAC1B,KAAe,EACf,OAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAiB,WAAW,CAAC,UAAU,CAAC;YAClD,SAAS;YACT,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;YAC3B,gBAAgB,EAAE,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK;SACxD,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,wBAAwB;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,KAAK,GAAG;YACZ,GAAG,UAAU,mBAAmB;YAChC,EAAE;YACF,0BAA0B,MAAM,CAAC,gBAAgB,EAAE;YACnD,0BAA0B,MAAM,CAAC,oBAAoB,EAAE;YACvD,EAAE;YACF,QAAQ;YACR,KAAK,MAAM,CAAC,YAAY,EAAE;YAC1B,KAAK,MAAM,CAAC,gBAAgB,EAAE;SAC/B,CAAC;QAEF,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,kBAAkB,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,gCAAgC;IAC7C,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE;;;;;;;;;;;;;;;;;;gCAkBwB;IAC9B,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAmC;CAC7C,CAAC;AAYF,MAAM,aAAa,GAAoB;IACrC;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,kDAAkD;QAC/D,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,GAAG;QACV,WAAW,EAAE,6CAA6C;KAC3D;CACF,CAAC;AAEF,KAAK,UAAU,aAAa,CAC1B,KAAe,EACf,OAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhD,kCAAkC;QAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,8BAA8B,QAAQ,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,GAAiB,WAAW,CAAC,UAAU,CAAC;YAClD,QAAQ;YACR,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK;YACnC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;SAC9B,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,GAAG,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,wBAAwB;QACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1D,MAAM,KAAK,GAAa;YACtB,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,kBAAkB;YAC3D,EAAE;YACF,WAAW;YACX,KAAK,UAAU,KAAK,MAAM,CAAC,gBAAgB,EAAE;YAC7C,eAAe,MAAM,CAAC,eAAe,EAAE;YACvC,EAAE;YACF,eAAe;YACf,KAAK,UAAU,KAAK,MAAM,CAAC,oBAAoB,EAAE;YACjD,eAAe,MAAM,CAAC,mBAAmB,EAAE;SAC5C,CAAC;QAEF,wBAAwB;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,kBAAkB,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,kCAAkC;IAC/C,KAAK,EAAE,qBAAqB;IAC5B,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;oBAqBY;IAClB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAmC;CAC7C,CAAC;AAEF,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,KAAK,UAAU,aAAa,CAC1B,KAAe,EACf,OAAsB;IAEtB,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CACZ,kFAAkF,EAClF,QAAQ,CAAC,aAAa,CACvB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE1B,0BAA0B;QAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC;QAExC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAClC,iEAAiE,CAClE,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;QAE3C,uBAAuB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,kBAAkB,GAAG,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;QACxF,MAAM,sBAAsB,GAAG,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAEhG,sBAAsB;QACtB,MAAM,MAAM,GAAG;YACb,iBAAiB,EAAE,UAAU;YAC7B,iBAAiB,EAAE,UAAU;YAC7B,iBAAiB,EAAE,UAAU,GAAG,CAAC;YACjC,aAAa,EAAE,OAAO;YACtB,mBAAmB,EAAE,aAAa;YAClC,kBAAkB;YAClB,sBAAsB;SACvB,CAAC;QAEF,8BAA8B;QAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAa;YACtB,aAAa;YACb,EAAE;YACF,qBAAqB,UAAU,EAAE;YACjC,qBAAqB,UAAU,EAAE;YACjC,EAAE;YACF,qBAAqB,OAAO,EAAE;YAC9B,qBAAqB,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE;YAC7D,qBAAqB,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE;YAClE,yBAAyB,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE;SAC3E,CAAC;QAEF,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,yBAAyB,OAAO,EAAE,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,kBAAkB;IAC/B,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE;;;;;;;;;;mBAUW;IACjB,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,aAAmC;CAC7C,CAAC;AAEF,+EAA+E;AAC/E,iDAAiD;AACjD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,wCAAwC;IACrD,KAAK,EAAE,6BAA6B;IACpC,IAAI,EAAE;;;;;;;;;;iBAUS;IACf,WAAW,EAAE;QACX,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;KACtB;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,uCAAuC;QACvC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;gBACb,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,4GAA4G,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC3J,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Commands - Task-specific CLI operations
|
|
3
|
+
*
|
|
4
|
+
* Provides CLI commands for task management:
|
|
5
|
+
* - ready: List tasks ready for work
|
|
6
|
+
* - blocked: List blocked tasks with reasons
|
|
7
|
+
* - close: Close a task
|
|
8
|
+
* - reopen: Reopen a closed task
|
|
9
|
+
* - assign: Assign a task to an entity
|
|
10
|
+
* - defer: Defer a task
|
|
11
|
+
* - undefer: Remove deferral from a task
|
|
12
|
+
*/
|
|
13
|
+
import type { Command } from '../types.js';
|
|
14
|
+
export declare const readyCommand: Command;
|
|
15
|
+
export declare const backlogCommand: Command;
|
|
16
|
+
export declare const blockedCommand: Command;
|
|
17
|
+
export declare const closeCommand: Command;
|
|
18
|
+
export declare const reopenCommand: Command;
|
|
19
|
+
export declare const assignCommand: Command;
|
|
20
|
+
export declare const deferCommand: Command;
|
|
21
|
+
export declare const undeferCommand: Command;
|
|
22
|
+
export declare const describeCommand: Command;
|
|
23
|
+
export declare const activateCommand: Command;
|
|
24
|
+
export declare const taskCommand: Command;
|
|
25
|
+
//# sourceMappingURL=task.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/task.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAA+C,MAAM,aAAa,CAAC;AA4JxF,eAAO,MAAM,YAAY,EAAE,OAwB1B,CAAC;AA0FF,eAAO,MAAM,cAAc,EAAE,OAkB5B,CAAC;AAyGF,eAAO,MAAM,cAAc,EAAE,OAiB5B,CAAC;AAuFF,eAAO,MAAM,YAAY,EAAE,OAiB1B,CAAC;AA6IF,eAAO,MAAM,aAAa,EAAE,OAiB3B,CAAC;AA+EF,eAAO,MAAM,aAAa,EAAE,OAkB3B,CAAC;AAkGF,eAAO,MAAM,YAAY,EAAE,OAiB1B,CAAC;AAoEF,eAAO,MAAM,cAAc,EAAE,OAa5B,CAAC;AAiLF,eAAO,MAAM,eAAe,EAAE,OA0B7B,CAAC;AA4DF,eAAO,MAAM,eAAe,EAAE,OAa7B,CAAC;AA2JF,eAAO,MAAM,WAAW,EAAE,OAuDzB,CAAC"}
|