@ginkoai/cli 2.1.4 → 2.1.6-beta.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/dist/commands/charter.d.ts +1 -0
- package/dist/commands/charter.d.ts.map +1 -1
- package/dist/commands/charter.js +185 -30
- package/dist/commands/charter.js.map +1 -1
- package/dist/commands/diff/diff-command.d.ts +20 -0
- package/dist/commands/diff/diff-command.d.ts.map +1 -0
- package/dist/commands/diff/diff-command.js +181 -0
- package/dist/commands/diff/diff-command.js.map +1 -0
- package/dist/commands/diff/index.d.ts +20 -0
- package/dist/commands/diff/index.d.ts.map +1 -0
- package/dist/commands/diff/index.js +39 -0
- package/dist/commands/diff/index.js.map +1 -0
- package/dist/commands/epic/index.d.ts.map +1 -1
- package/dist/commands/epic/index.js +18 -1
- package/dist/commands/epic/index.js.map +1 -1
- package/dist/commands/graph/api-client.d.ts +36 -0
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js +7 -0
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/graph/index.d.ts.map +1 -1
- package/dist/commands/graph/index.js +8 -2
- package/dist/commands/graph/index.js.map +1 -1
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +12 -2
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +50 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pull/index.d.ts +21 -0
- package/dist/commands/pull/index.d.ts.map +1 -0
- package/dist/commands/pull/index.js +90 -0
- package/dist/commands/pull/index.js.map +1 -0
- package/dist/commands/pull/pull-command.d.ts +23 -0
- package/dist/commands/pull/pull-command.d.ts.map +1 -0
- package/dist/commands/pull/pull-command.js +89 -0
- package/dist/commands/pull/pull-command.js.map +1 -0
- package/dist/commands/push/index.d.ts +21 -0
- package/dist/commands/push/index.d.ts.map +1 -0
- package/dist/commands/push/index.js +120 -0
- package/dist/commands/push/index.js.map +1 -0
- package/dist/commands/push/push-command.d.ts +39 -0
- package/dist/commands/push/push-command.d.ts.map +1 -0
- package/dist/commands/push/push-command.js +451 -0
- package/dist/commands/push/push-command.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +39 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +12 -10
- package/dist/commands/sync/index.js.map +1 -1
- package/dist/commands/task/status.d.ts.map +1 -1
- package/dist/commands/task/status.js +9 -0
- package/dist/commands/task/status.js.map +1 -1
- package/dist/core/utils/paths.d.ts +4 -0
- package/dist/core/utils/paths.d.ts.map +1 -1
- package/dist/core/utils/paths.js +19 -1
- package/dist/core/utils/paths.js.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/auto-push.d.ts +32 -0
- package/dist/lib/auto-push.d.ts.map +1 -0
- package/dist/lib/auto-push.js +79 -0
- package/dist/lib/auto-push.js.map +1 -0
- package/dist/lib/charter-loader.d.ts.map +1 -1
- package/dist/lib/charter-loader.js +4 -1
- package/dist/lib/charter-loader.js.map +1 -1
- package/dist/lib/dead-letter-queue.d.ts +4 -3
- package/dist/lib/dead-letter-queue.d.ts.map +1 -1
- package/dist/lib/dead-letter-queue.js +4 -3
- package/dist/lib/dead-letter-queue.js.map +1 -1
- package/dist/lib/entity-classifier.d.ts +53 -0
- package/dist/lib/entity-classifier.d.ts.map +1 -0
- package/dist/lib/entity-classifier.js +95 -0
- package/dist/lib/entity-classifier.js.map +1 -0
- package/dist/lib/event-queue.d.ts +4 -3
- package/dist/lib/event-queue.d.ts.map +1 -1
- package/dist/lib/event-queue.js +4 -3
- package/dist/lib/event-queue.js.map +1 -1
- package/dist/lib/git-change-detector.d.ts +38 -0
- package/dist/lib/git-change-detector.d.ts.map +1 -0
- package/dist/lib/git-change-detector.js +105 -0
- package/dist/lib/git-change-detector.js.map +1 -0
- package/dist/lib/sprint-parser.d.ts.map +1 -1
- package/dist/lib/sprint-parser.js +4 -1
- package/dist/lib/sprint-parser.js.map +1 -1
- package/dist/lib/sync-state.d.ts +38 -0
- package/dist/lib/sync-state.d.ts.map +1 -0
- package/dist/lib/sync-state.js +86 -0
- package/dist/lib/sync-state.js.map +1 -0
- package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts +2 -1
- package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts.map +1 -1
- package/dist/lib/write-dispatcher/adapters/graph-adapter.js +2 -1
- package/dist/lib/write-dispatcher/adapters/graph-adapter.js.map +1 -1
- package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts +2 -1
- package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts.map +1 -1
- package/dist/lib/write-dispatcher/adapters/local-adapter.js +2 -1
- package/dist/lib/write-dispatcher/adapters/local-adapter.js.map +1 -1
- package/dist/lib/write-dispatcher/write-dispatcher.d.ts +4 -3
- package/dist/lib/write-dispatcher/write-dispatcher.d.ts.map +1 -1
- package/dist/lib/write-dispatcher/write-dispatcher.js +4 -3
- package/dist/lib/write-dispatcher/write-dispatcher.js.map +1 -1
- package/dist/templates/ai-instructions-template.d.ts.map +1 -1
- package/dist/templates/ai-instructions-template.js +48 -9
- package/dist/templates/ai-instructions-template.js.map +1 -1
- package/dist/templates/charter-template.md +17 -0
- package/dist/templates/epic-template.md +18 -6
- package/dist/templates/skills/ginko/SKILL.md +209 -0
- package/dist/templates/skills/ginko/commands-reference.md +221 -0
- package/dist/templates/skills/pull.md +56 -0
- package/dist/templates/skills/push.md +73 -0
- package/dist/templates/skills/skills/ginko/SKILL.md +209 -0
- package/dist/templates/skills/skills/ginko/commands-reference.md +221 -0
- package/dist/templates/skills/skills/pull.md +56 -0
- package/dist/templates/skills/skills/push.md +73 -0
- package/dist/utils/dispatcher-logger.d.ts +4 -3
- package/dist/utils/dispatcher-logger.d.ts.map +1 -1
- package/dist/utils/dispatcher-logger.js +4 -3
- package/dist/utils/dispatcher-logger.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [entity, classifier, push, pull, ADR-077]
|
|
6
|
+
* @related: [git-change-detector.ts, ../commands/push/push-command.ts, ../commands/graph/load.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: []
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Entity Type Classifier (ADR-077)
|
|
13
|
+
*
|
|
14
|
+
* Maps file paths to entity types for push/pull operations.
|
|
15
|
+
* Extracted from graph/load.ts for shared use.
|
|
16
|
+
*/
|
|
17
|
+
import type { DocumentUpload } from '../commands/graph/api-client.js';
|
|
18
|
+
export type EntityType = DocumentUpload['type'];
|
|
19
|
+
export interface ClassifiedFile {
|
|
20
|
+
filePath: string;
|
|
21
|
+
entityType: EntityType;
|
|
22
|
+
warning?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Classify a file path into an entity type
|
|
26
|
+
*
|
|
27
|
+
* Uses path-based detection matching the patterns in graph/load.ts:
|
|
28
|
+
* - docs/adr/ → ADR
|
|
29
|
+
* - docs/PRD/ → PRD
|
|
30
|
+
* - docs/epics/ → Epic
|
|
31
|
+
* - docs/sprints/ → Sprint (with misfiled epic detection)
|
|
32
|
+
* - PROJECT-CHARTER → Charter
|
|
33
|
+
* - *pattern* → Pattern
|
|
34
|
+
* - *gotcha* → Gotcha
|
|
35
|
+
* - .ginko/sessions → Session
|
|
36
|
+
* - everything else → ContextModule
|
|
37
|
+
*/
|
|
38
|
+
export declare function classifyFile(filePath: string, content?: string): ClassifiedFile;
|
|
39
|
+
/**
|
|
40
|
+
* Classify multiple files and group by entity type
|
|
41
|
+
*/
|
|
42
|
+
export declare function classifyFiles(filePaths: string[]): Map<EntityType, ClassifiedFile[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Filter classified files by entity type name (case-insensitive)
|
|
45
|
+
* Supports subcommand arguments like "epic", "sprint", "charter", "adr"
|
|
46
|
+
*/
|
|
47
|
+
export declare function filterByType(files: ClassifiedFile[], typeFilter: string): ClassifiedFile[];
|
|
48
|
+
/**
|
|
49
|
+
* Check if a file path matches a pushable content pattern
|
|
50
|
+
* (excludes node_modules, .git, etc.)
|
|
51
|
+
*/
|
|
52
|
+
export declare function isPushableFile(filePath: string): boolean;
|
|
53
|
+
//# sourceMappingURL=entity-classifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-classifier.d.ts","sourceRoot":"","sources":["../../src/lib/entity-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAsB/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAWpF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAG1F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgBxD"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [entity, classifier, push, pull, ADR-077]
|
|
6
|
+
* @related: [git-change-detector.ts, ../commands/push/push-command.ts, ../commands/graph/load.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: []
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Classify a file path into an entity type
|
|
13
|
+
*
|
|
14
|
+
* Uses path-based detection matching the patterns in graph/load.ts:
|
|
15
|
+
* - docs/adr/ → ADR
|
|
16
|
+
* - docs/PRD/ → PRD
|
|
17
|
+
* - docs/epics/ → Epic
|
|
18
|
+
* - docs/sprints/ → Sprint (with misfiled epic detection)
|
|
19
|
+
* - PROJECT-CHARTER → Charter
|
|
20
|
+
* - *pattern* → Pattern
|
|
21
|
+
* - *gotcha* → Gotcha
|
|
22
|
+
* - .ginko/sessions → Session
|
|
23
|
+
* - everything else → ContextModule
|
|
24
|
+
*/
|
|
25
|
+
export function classifyFile(filePath, content) {
|
|
26
|
+
// Detect misfiled epics in sprints directory
|
|
27
|
+
if (filePath.includes('/sprints/') && (filePath.includes('EPIC-') ||
|
|
28
|
+
(content && content.match(/^#\s*EPIC-\d+:/m)))) {
|
|
29
|
+
return {
|
|
30
|
+
filePath,
|
|
31
|
+
entityType: 'Epic',
|
|
32
|
+
warning: `Epic file found in sprints directory: ${filePath}. Move to docs/epics/ for correct processing.`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (filePath.includes('/adr/') || filePath.includes('/ADR/'))
|
|
36
|
+
return { filePath, entityType: 'ADR' };
|
|
37
|
+
if (filePath.includes('/PRD/'))
|
|
38
|
+
return { filePath, entityType: 'PRD' };
|
|
39
|
+
if (filePath.includes('/epics/'))
|
|
40
|
+
return { filePath, entityType: 'Epic' };
|
|
41
|
+
if (filePath.includes('/sprints/'))
|
|
42
|
+
return { filePath, entityType: 'Sprint' };
|
|
43
|
+
if (filePath.includes('PROJECT-CHARTER'))
|
|
44
|
+
return { filePath, entityType: 'Charter' };
|
|
45
|
+
if (filePath.includes('pattern'))
|
|
46
|
+
return { filePath, entityType: 'Pattern' };
|
|
47
|
+
if (filePath.includes('gotcha'))
|
|
48
|
+
return { filePath, entityType: 'Gotcha' };
|
|
49
|
+
if (filePath.includes('/sessions/'))
|
|
50
|
+
return { filePath, entityType: 'Session' };
|
|
51
|
+
return { filePath, entityType: 'ContextModule' };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Classify multiple files and group by entity type
|
|
55
|
+
*/
|
|
56
|
+
export function classifyFiles(filePaths) {
|
|
57
|
+
const groups = new Map();
|
|
58
|
+
for (const filePath of filePaths) {
|
|
59
|
+
const classified = classifyFile(filePath);
|
|
60
|
+
const existing = groups.get(classified.entityType) || [];
|
|
61
|
+
existing.push(classified);
|
|
62
|
+
groups.set(classified.entityType, existing);
|
|
63
|
+
}
|
|
64
|
+
return groups;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Filter classified files by entity type name (case-insensitive)
|
|
68
|
+
* Supports subcommand arguments like "epic", "sprint", "charter", "adr"
|
|
69
|
+
*/
|
|
70
|
+
export function filterByType(files, typeFilter) {
|
|
71
|
+
const normalized = typeFilter.toLowerCase();
|
|
72
|
+
return files.filter(f => f.entityType.toLowerCase() === normalized);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if a file path matches a pushable content pattern
|
|
76
|
+
* (excludes node_modules, .git, etc.)
|
|
77
|
+
*/
|
|
78
|
+
export function isPushableFile(filePath) {
|
|
79
|
+
// Must be a markdown file
|
|
80
|
+
if (!filePath.endsWith('.md') && !filePath.endsWith('.jsonl'))
|
|
81
|
+
return false;
|
|
82
|
+
// Exclude common non-content paths
|
|
83
|
+
if (filePath.includes('node_modules/'))
|
|
84
|
+
return false;
|
|
85
|
+
if (filePath.includes('.git/'))
|
|
86
|
+
return false;
|
|
87
|
+
if (filePath.startsWith('dist/'))
|
|
88
|
+
return false;
|
|
89
|
+
// Must be in a known content directory
|
|
90
|
+
return (filePath.startsWith('docs/') ||
|
|
91
|
+
filePath.includes('PROJECT-CHARTER') ||
|
|
92
|
+
filePath.startsWith('.ginko/sessions/') ||
|
|
93
|
+
filePath.startsWith('.ginko/context/'));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=entity-classifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-classifier.js","sourceRoot":"","sources":["../../src/lib/entity-classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileType: utility
|
|
3
|
-
* @status:
|
|
4
|
-
* @updated:
|
|
5
|
-
* @tags: [event-queue, async-sync, neo4j, adr-043]
|
|
3
|
+
* @status: deprecated
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [event-queue, async-sync, neo4j, adr-043, deprecated-by-adr-077]
|
|
6
|
+
* @deprecated Replaced by ginko push (ADR-077). Events are now pushed via documents endpoint.
|
|
6
7
|
* @related: [event-logger.ts, ../commands/graph/api-client.ts]
|
|
7
8
|
* @priority: critical
|
|
8
9
|
* @complexity: medium
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-queue.d.ts","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"event-queue.d.ts","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAuC,MAAM,mBAAmB,CAAC;AAE/E;;GAEG;AACH,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAWD;;GAEG;AACH,UAAU,UAAU;IAClB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAIzC;;OAEG;IACH,OAAO,CAAC,GAAG;IAMX;;OAEG;IACH,KAAK,IAAI,IAAI;IAyBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ElC;;OAEG;YACW,gBAAgB;IA+B9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B;;OAEG;IACH,SAAS,IAAI,UAAU;IAIvB;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAI7B;AAOD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,UAAU,CAsBzE;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,UAAU,CAKrC;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C"}
|
package/dist/lib/event-queue.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileType: utility
|
|
3
|
-
* @status:
|
|
4
|
-
* @updated:
|
|
5
|
-
* @tags: [event-queue, async-sync, neo4j, adr-043]
|
|
3
|
+
* @status: deprecated
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [event-queue, async-sync, neo4j, adr-043, deprecated-by-adr-077]
|
|
6
|
+
* @deprecated Replaced by ginko push (ADR-077). Events are now pushed via documents endpoint.
|
|
6
7
|
* @related: [event-logger.ts, ../commands/graph/api-client.ts]
|
|
7
8
|
* @priority: critical
|
|
8
9
|
* @complexity: medium
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-queue.js","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"event-queue.js","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAS,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc/E,MAAM,cAAc,GAAgB;IAClC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAG,YAAY;IAC5C,aAAa,EAAE,CAAC,EAAiB,WAAW;IAC5C,YAAY,EAAE,EAAE,EAAiB,gBAAgB;IACjD,aAAa,EAAE,CAAC,EAAiB,YAAY;IAC7C,YAAY,EAAE,IAAI,EAAe,YAAY;IAC7C,MAAM,EAAE,KAAK,CAAoB,qBAAqB;CACvD,CAAC;AAaF;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAc;IACpB,SAAS,GAA0B,IAAI,CAAC;IACxC,MAAM,GAAe;QAC3B,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;KACjB,CAAC;IACM,cAAc,GAAG,KAAK,CAAC;IAE/B,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,GAAG,CAAC,OAAe;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,+CAA+C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,iBAAiB,IAAI,CAAC,MAAM,CAAC,aAAa,UAAU,CAAC,CAAC;QAE/I,yBAAyB;QACzB,gEAAgE;QAChE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC/B,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/G,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE/B,+CAA+C;QAC/C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAEvB,wBAAwB;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAY;QAC3B,uBAAuB;QACvB,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;QAEjD,qDAAqD;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,CAAC,MAAM,CAAC,YAAY,2BAA2B,CAAC,CAAC;YACpG,gCAAgC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBAC/B,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9G,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAE7B,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,cAAc,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAEjD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YAED,eAAe;YACf,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAEpE,4BAA4B;YAC5B,IAAI,SAAS,GAAiB,IAAI,CAAC;YACnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;gBACtE,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;oBAEnC,kCAAkC;oBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBAEjC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;oBACtC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;oBAEhE,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;oBACrE,OAAO;gBACT,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtE,OAAO,CAAC,IAAI,CAAC,6BAA6B,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;oBAE7G,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;wBACxC,6CAA6C;wBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;wBAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC;wBAC5D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,OAAO,IAAI,eAAe,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;YAEjG,+BAA+B;YAC/B,IAAI,CAAC;gBACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;gBACnE,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC1B,MAAM,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,IAAI,oBAAoB,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,QAAQ,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC5H,yCAAyC;YAC3C,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAAe;QAC5C,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAE9E,qCAAqC;YACrC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvC,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC,CAAC;YAEJ,kCAAkC;YAClC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kCAAkC;YAClC,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,uBAAuB;QACpC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,aAAa;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,uBAAuB;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,oCAAoC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,iBAAiB;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,cAAc;QACd,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,gCAAgC;QAChC,2CAA2C;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,KAAK,EAAE,CAAC;IAEpB,6BAA6B;IAC7B,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACnC,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAEvC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAY;IAC3C,mCAAmC;IACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,WAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [git, change-detection, push, ADR-077]
|
|
6
|
+
* @related: [sync-state.ts, entity-classifier.ts, ../commands/push/push-command.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [simple-git]
|
|
10
|
+
*/
|
|
11
|
+
import { type ClassifiedFile } from './entity-classifier.js';
|
|
12
|
+
export interface ChangedFile {
|
|
13
|
+
filePath: string;
|
|
14
|
+
changeType: 'added' | 'modified' | 'deleted';
|
|
15
|
+
}
|
|
16
|
+
export interface ChangeDetectionResult {
|
|
17
|
+
/** Files changed since last push */
|
|
18
|
+
changedFiles: ChangedFile[];
|
|
19
|
+
/** Classified files (excluding deleted) ready for push */
|
|
20
|
+
classifiedFiles: ClassifiedFile[];
|
|
21
|
+
/** Current HEAD commit SHA */
|
|
22
|
+
headCommit: string;
|
|
23
|
+
/** Whether this is a first-time push (no lastPushCommit) */
|
|
24
|
+
isFirstPush: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Detect files changed since the given commit SHA
|
|
28
|
+
*
|
|
29
|
+
* @param lastPushCommit - The commit SHA from last push (null = first push)
|
|
30
|
+
* @param projectRoot - Project root directory
|
|
31
|
+
* @returns Changed files with classification
|
|
32
|
+
*/
|
|
33
|
+
export declare function detectChanges(lastPushCommit: string | null, projectRoot?: string): Promise<ChangeDetectionResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Get count of unpushed files (for status display)
|
|
36
|
+
*/
|
|
37
|
+
export declare function getUnpushedCount(lastPushCommit: string | null, projectRoot?: string): Promise<number>;
|
|
38
|
+
//# sourceMappingURL=git-change-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-change-detector.d.ts","sourceRoot":"","sources":["../../src/lib/git-change-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,EAAgC,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE3F,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC,CAqDhC;AAsCD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,MAAM,GAAG,IAAI,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [git, change-detection, push, ADR-077]
|
|
6
|
+
* @related: [sync-state.ts, entity-classifier.ts, ../commands/push/push-command.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [simple-git]
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Git Change Detection (ADR-077)
|
|
13
|
+
*
|
|
14
|
+
* Uses `simple-git` to detect files changed since the last push commit.
|
|
15
|
+
* When lastPushCommit is null (first push), returns all pushable content files.
|
|
16
|
+
*/
|
|
17
|
+
import { simpleGit } from 'simple-git';
|
|
18
|
+
import { isPushableFile, classifyFile } from './entity-classifier.js';
|
|
19
|
+
/**
|
|
20
|
+
* Detect files changed since the given commit SHA
|
|
21
|
+
*
|
|
22
|
+
* @param lastPushCommit - The commit SHA from last push (null = first push)
|
|
23
|
+
* @param projectRoot - Project root directory
|
|
24
|
+
* @returns Changed files with classification
|
|
25
|
+
*/
|
|
26
|
+
export async function detectChanges(lastPushCommit, projectRoot) {
|
|
27
|
+
const git = simpleGit(projectRoot || process.cwd());
|
|
28
|
+
// Get current HEAD
|
|
29
|
+
const headCommit = await git.revparse(['HEAD']);
|
|
30
|
+
if (!lastPushCommit) {
|
|
31
|
+
// First push: find all pushable content files
|
|
32
|
+
return await detectAllContentFiles(git, headCommit.trim());
|
|
33
|
+
}
|
|
34
|
+
// Check if the commit exists
|
|
35
|
+
try {
|
|
36
|
+
await git.catFile(['-t', lastPushCommit]);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Commit doesn't exist (e.g., after rebase) - treat as first push
|
|
40
|
+
return await detectAllContentFiles(git, headCommit.trim());
|
|
41
|
+
}
|
|
42
|
+
// Get diff between last push and HEAD
|
|
43
|
+
const diffSummary = await git.diffSummary([`${lastPushCommit}..HEAD`]);
|
|
44
|
+
const changedFiles = [];
|
|
45
|
+
const classifiedFiles = [];
|
|
46
|
+
for (const file of diffSummary.files) {
|
|
47
|
+
const filePath = file.file;
|
|
48
|
+
if (!isPushableFile(filePath))
|
|
49
|
+
continue;
|
|
50
|
+
// Determine change type: text files have insertions/deletions, binary/name-status don't
|
|
51
|
+
let changeType = 'modified';
|
|
52
|
+
if ('insertions' in file && 'deletions' in file) {
|
|
53
|
+
changeType =
|
|
54
|
+
file.insertions > 0 && file.deletions === 0 ? 'added' :
|
|
55
|
+
file.insertions === 0 && file.deletions > 0 ? 'deleted' :
|
|
56
|
+
'modified';
|
|
57
|
+
}
|
|
58
|
+
changedFiles.push({ filePath, changeType });
|
|
59
|
+
// Only classify non-deleted files for push
|
|
60
|
+
if (changeType !== 'deleted') {
|
|
61
|
+
classifiedFiles.push(classifyFile(filePath));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
changedFiles,
|
|
66
|
+
classifiedFiles,
|
|
67
|
+
headCommit: headCommit.trim(),
|
|
68
|
+
isFirstPush: false,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect all content files for first-time push
|
|
73
|
+
* Uses git ls-files to find all tracked files, then filters for pushable content
|
|
74
|
+
*/
|
|
75
|
+
async function detectAllContentFiles(git, headCommit) {
|
|
76
|
+
// Get all tracked files
|
|
77
|
+
const trackedRaw = await git.raw(['ls-files']);
|
|
78
|
+
const tracked = trackedRaw.split('\n').filter(Boolean);
|
|
79
|
+
// Also get untracked content files
|
|
80
|
+
const untrackedRaw = await git.raw(['ls-files', '--others', '--exclude-standard']);
|
|
81
|
+
const untracked = untrackedRaw.split('\n').filter(Boolean);
|
|
82
|
+
const allFiles = [...new Set([...tracked, ...untracked])];
|
|
83
|
+
const changedFiles = [];
|
|
84
|
+
const classifiedFiles = [];
|
|
85
|
+
for (const filePath of allFiles) {
|
|
86
|
+
if (!isPushableFile(filePath))
|
|
87
|
+
continue;
|
|
88
|
+
changedFiles.push({ filePath, changeType: 'added' });
|
|
89
|
+
classifiedFiles.push(classifyFile(filePath));
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
changedFiles,
|
|
93
|
+
classifiedFiles,
|
|
94
|
+
headCommit,
|
|
95
|
+
isFirstPush: true,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get count of unpushed files (for status display)
|
|
100
|
+
*/
|
|
101
|
+
export async function getUnpushedCount(lastPushCommit, projectRoot) {
|
|
102
|
+
const result = await detectChanges(lastPushCommit, projectRoot);
|
|
103
|
+
return result.changedFiles.length;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=git-change-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-change-detector.js","sourceRoot":"","sources":["../../src/lib/git-change-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprint-parser.d.ts","sourceRoot":"","sources":["../../src/lib/sprint-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE;QACb,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC;QAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAcjF;
|
|
1
|
+
{"version":3,"file":"sprint-parser.d.ts","sourceRoot":"","sources":["../../src/lib/sprint-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE;QACb,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC;QAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAcjF;AAiDD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+DxE;AA0LD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzE"}
|
|
@@ -85,7 +85,10 @@ async function findActiveSprint() {
|
|
|
85
85
|
*/
|
|
86
86
|
async function findGitRoot() {
|
|
87
87
|
try {
|
|
88
|
-
const gitRoot = execSync('git rev-parse --show-toplevel', {
|
|
88
|
+
const gitRoot = execSync('git rev-parse --show-toplevel', {
|
|
89
|
+
encoding: 'utf-8',
|
|
90
|
+
stdio: ['pipe', 'pipe', 'ignore'] // Suppress stderr for non-git directories
|
|
91
|
+
}).trim();
|
|
89
92
|
return gitRoot;
|
|
90
93
|
}
|
|
91
94
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprint-parser.js","sourceRoot":"","sources":["../../src/lib/sprint-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAqCzC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAmB;IAClD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,IAAI,MAAM,gBAAgB,EAAE,CAAC;QAExD,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oDAAoD;QACpD,4CAA4C;QAC5C,WAAW,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,+BAA+B,EAAE,
|
|
1
|
+
{"version":3,"file":"sprint-parser.js","sourceRoot":"","sources":["../../src/lib/sprint-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [sync, state, push, pull, ADR-077]
|
|
6
|
+
* @related: [git-change-detector.ts, ../commands/push/push-command.ts, ../commands/pull/pull-command.ts]
|
|
7
|
+
* @priority: critical
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [fs-extra]
|
|
10
|
+
*/
|
|
11
|
+
export interface SyncState {
|
|
12
|
+
/** Git commit SHA at last push (null = never pushed, push all) */
|
|
13
|
+
lastPushCommit: string | null;
|
|
14
|
+
/** ISO timestamp of last push */
|
|
15
|
+
lastPushTimestamp: string | null;
|
|
16
|
+
/** ISO timestamp of last pull */
|
|
17
|
+
lastPullTimestamp: string | null;
|
|
18
|
+
/** Record of file paths to their last-pushed content hashes */
|
|
19
|
+
pushedFiles: Record<string, string>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Read current sync state from disk
|
|
23
|
+
* Returns default state if file doesn't exist
|
|
24
|
+
*/
|
|
25
|
+
export declare function readSyncState(): Promise<SyncState>;
|
|
26
|
+
/**
|
|
27
|
+
* Write sync state to disk
|
|
28
|
+
*/
|
|
29
|
+
export declare function writeSyncState(state: SyncState): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Update lastPushCommit and timestamp after a successful push
|
|
32
|
+
*/
|
|
33
|
+
export declare function recordPush(commitSha: string, files?: Record<string, string>): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Update lastPullTimestamp after a successful pull
|
|
36
|
+
*/
|
|
37
|
+
export declare function recordPull(): Promise<void>;
|
|
38
|
+
//# sourceMappingURL=sync-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-state.d.ts","sourceRoot":"","sources":["../../src/lib/sync-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iCAAiC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAiBD;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAkBxD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjG;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAIhD"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-30
|
|
5
|
+
* @tags: [sync, state, push, pull, ADR-077]
|
|
6
|
+
* @related: [git-change-detector.ts, ../commands/push/push-command.ts, ../commands/pull/pull-command.ts]
|
|
7
|
+
* @priority: critical
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [fs-extra]
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Sync State Module (ADR-077)
|
|
13
|
+
*
|
|
14
|
+
* Manages `.ginko/sync-state.json` which tracks:
|
|
15
|
+
* - lastPushCommit: git commit SHA at last push (for change detection)
|
|
16
|
+
* - lastPullTimestamp: ISO timestamp of last pull (for staleness)
|
|
17
|
+
* - lastPushTimestamp: ISO timestamp of last push
|
|
18
|
+
* - pushedFiles: record of files pushed with their hashes
|
|
19
|
+
*/
|
|
20
|
+
import fs from 'fs-extra';
|
|
21
|
+
import path from 'path';
|
|
22
|
+
import { getGinkoDir } from '../utils/helpers.js';
|
|
23
|
+
const DEFAULT_STATE = {
|
|
24
|
+
lastPushCommit: null,
|
|
25
|
+
lastPushTimestamp: null,
|
|
26
|
+
lastPullTimestamp: null,
|
|
27
|
+
pushedFiles: {},
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Get path to sync state file
|
|
31
|
+
*/
|
|
32
|
+
async function getSyncStatePath() {
|
|
33
|
+
const ginkoDir = await getGinkoDir();
|
|
34
|
+
return path.join(ginkoDir, 'sync-state.json');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Read current sync state from disk
|
|
38
|
+
* Returns default state if file doesn't exist
|
|
39
|
+
*/
|
|
40
|
+
export async function readSyncState() {
|
|
41
|
+
const statePath = await getSyncStatePath();
|
|
42
|
+
if (!await fs.pathExists(statePath)) {
|
|
43
|
+
return { ...DEFAULT_STATE };
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const data = await fs.readJson(statePath);
|
|
47
|
+
return {
|
|
48
|
+
lastPushCommit: data.lastPushCommit ?? null,
|
|
49
|
+
lastPushTimestamp: data.lastPushTimestamp ?? null,
|
|
50
|
+
lastPullTimestamp: data.lastPullTimestamp ?? null,
|
|
51
|
+
pushedFiles: data.pushedFiles ?? {},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { ...DEFAULT_STATE };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Write sync state to disk
|
|
60
|
+
*/
|
|
61
|
+
export async function writeSyncState(state) {
|
|
62
|
+
const statePath = await getSyncStatePath();
|
|
63
|
+
await fs.ensureDir(path.dirname(statePath));
|
|
64
|
+
await fs.writeJson(statePath, state, { spaces: 2 });
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Update lastPushCommit and timestamp after a successful push
|
|
68
|
+
*/
|
|
69
|
+
export async function recordPush(commitSha, files) {
|
|
70
|
+
const state = await readSyncState();
|
|
71
|
+
state.lastPushCommit = commitSha;
|
|
72
|
+
state.lastPushTimestamp = new Date().toISOString();
|
|
73
|
+
if (files) {
|
|
74
|
+
state.pushedFiles = { ...state.pushedFiles, ...files };
|
|
75
|
+
}
|
|
76
|
+
await writeSyncState(state);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Update lastPullTimestamp after a successful pull
|
|
80
|
+
*/
|
|
81
|
+
export async function recordPull() {
|
|
82
|
+
const state = await readSyncState();
|
|
83
|
+
state.lastPullTimestamp = new Date().toISOString();
|
|
84
|
+
await writeSyncState(state);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=sync-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-state.js","sourceRoot":"","sources":["../../src/lib/sync-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAalD,MAAM,aAAa,GAAc;IAC/B,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,IAAI;IACvB,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;YAC3C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;YACjD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI;YACjD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;SACpC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAgB;IACnD,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,KAA8B;IAChF,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;IACjC,KAAK,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,KAAK,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileType: adapter
|
|
3
|
-
* @status:
|
|
3
|
+
* @status: deprecated
|
|
4
|
+
* @deprecated: true
|
|
4
5
|
* @updated: 2025-11-02
|
|
5
6
|
* @tags: [write-adapter, graph, neo4j, cloud, multi-tenant, adr-041]
|
|
6
7
|
* @related: [../write-dispatcher.ts, ../../api/v1/graph/_cloud-graph-client.ts, local-adapter.ts]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/write-dispatcher/adapters/graph-adapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"graph-adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/write-dispatcher/adapters/graph-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,SAAW;IACf,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAStC;;OAEG;IACH,OAAO,IAAI,OAAO;IAMlB;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwB9D;;OAEG;YACW,UAAU;IAiDxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwC7B;;OAEG;IACH,SAAS,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;CAOpE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,YAAY,CAOxD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileType: adapter
|
|
3
|
-
* @status:
|
|
3
|
+
* @status: deprecated
|
|
4
|
+
* @deprecated: true
|
|
4
5
|
* @updated: 2025-11-02
|
|
5
6
|
* @tags: [write-adapter, graph, neo4j, cloud, multi-tenant, adr-041]
|
|
6
7
|
* @related: [../write-dispatcher.ts, ../../api/v1/graph/_cloud-graph-client.ts, local-adapter.ts]
|