@applica-software-guru/sdd-core 1.3.3 → 1.4.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/errors.d.ts +7 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +17 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/dist/prompt/apply-prompt-generator.d.ts +2 -1
- package/dist/prompt/apply-prompt-generator.d.ts.map +1 -1
- package/dist/prompt/apply-prompt-generator.js +51 -2
- package/dist/prompt/apply-prompt-generator.js.map +1 -1
- package/dist/prompt/draft-prompt-generator.d.ts +8 -0
- package/dist/prompt/draft-prompt-generator.d.ts.map +1 -0
- package/dist/prompt/draft-prompt-generator.js +59 -0
- package/dist/prompt/draft-prompt-generator.js.map +1 -0
- package/dist/remote/api-client.d.ts +38 -0
- package/dist/remote/api-client.d.ts.map +1 -0
- package/dist/remote/api-client.js +101 -0
- package/dist/remote/api-client.js.map +1 -0
- package/dist/remote/state.d.ts +4 -0
- package/dist/remote/state.d.ts.map +1 -0
- package/dist/remote/state.js +35 -0
- package/dist/remote/state.js.map +1 -0
- package/dist/remote/sync-engine.d.ts +7 -0
- package/dist/remote/sync-engine.d.ts.map +1 -0
- package/dist/remote/sync-engine.js +257 -0
- package/dist/remote/sync-engine.js.map +1 -0
- package/dist/remote/types.d.ts +93 -0
- package/dist/remote/types.d.ts.map +1 -0
- package/dist/remote/types.js +3 -0
- package/dist/remote/types.js.map +1 -0
- package/dist/sdd.d.ts +13 -0
- package/dist/sdd.d.ts.map +1 -1
- package/dist/sdd.js +99 -6
- package/dist/sdd.js.map +1 -1
- package/dist/types.d.ts +9 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/errors.ts +16 -0
- package/src/index.ts +23 -1
- package/src/prompt/apply-prompt-generator.ts +61 -2
- package/src/prompt/draft-prompt-generator.ts +74 -0
- package/src/remote/api-client.ts +138 -0
- package/src/remote/state.ts +35 -0
- package/src/remote/sync-engine.ts +296 -0
- package/src/remote/types.ts +102 -0
- package/src/sdd.ts +114 -6
- package/src/types.ts +10 -4
- package/tests/api-client.test.ts +198 -0
- package/tests/cr.test.ts +27 -10
- package/tests/remote-state.test.ts +90 -0
- package/tests/sync-engine.test.ts +341 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.pushToRemote = pushToRemote;
|
|
7
|
+
exports.pullFromRemote = pullFromRemote;
|
|
8
|
+
exports.pullCRsFromRemote = pullCRsFromRemote;
|
|
9
|
+
exports.pullBugsFromRemote = pullBugsFromRemote;
|
|
10
|
+
exports.getRemoteStatus = getRemoteStatus;
|
|
11
|
+
const promises_1 = require("node:fs/promises");
|
|
12
|
+
const node_fs_1 = require("node:fs");
|
|
13
|
+
const node_path_1 = require("node:path");
|
|
14
|
+
const node_crypto_1 = require("node:crypto");
|
|
15
|
+
const gray_matter_1 = __importDefault(require("gray-matter"));
|
|
16
|
+
const config_manager_js_1 = require("../config/config-manager.js");
|
|
17
|
+
const story_parser_js_1 = require("../parser/story-parser.js");
|
|
18
|
+
const api_client_js_1 = require("./api-client.js");
|
|
19
|
+
const state_js_1 = require("./state.js");
|
|
20
|
+
function sha256(content) {
|
|
21
|
+
return (0, node_crypto_1.createHash)('sha256').update(content, 'utf-8').digest('hex');
|
|
22
|
+
}
|
|
23
|
+
/** Normalize path separators to forward slash for remote consistency */
|
|
24
|
+
function normalizePath(p) {
|
|
25
|
+
return p.split('\\').join('/');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build a markdown file with frontmatter for a pulled document.
|
|
29
|
+
*/
|
|
30
|
+
function buildStoryMarkdown(title, body, version, status = 'synced') {
|
|
31
|
+
const fm = {
|
|
32
|
+
title,
|
|
33
|
+
status,
|
|
34
|
+
author: 'remote',
|
|
35
|
+
'last-modified': new Date().toISOString(),
|
|
36
|
+
version: `${version}.0`,
|
|
37
|
+
};
|
|
38
|
+
return gray_matter_1.default.stringify(body, fm);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build a markdown file for a pulled change request.
|
|
42
|
+
*/
|
|
43
|
+
function buildCRMarkdown(title, body, createdAt, status = 'draft') {
|
|
44
|
+
const fm = {
|
|
45
|
+
title,
|
|
46
|
+
status,
|
|
47
|
+
author: 'remote',
|
|
48
|
+
'created-at': createdAt,
|
|
49
|
+
};
|
|
50
|
+
return gray_matter_1.default.stringify(body, fm);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Build a markdown file for a pulled bug.
|
|
54
|
+
*/
|
|
55
|
+
function buildBugMarkdown(title, body, createdAt, status = 'open') {
|
|
56
|
+
const fm = {
|
|
57
|
+
title,
|
|
58
|
+
status,
|
|
59
|
+
author: 'remote',
|
|
60
|
+
'created-at': createdAt,
|
|
61
|
+
};
|
|
62
|
+
return gray_matter_1.default.stringify(body, fm);
|
|
63
|
+
}
|
|
64
|
+
// ─── Push ────────────────────────────────────────────────────────────────
|
|
65
|
+
async function pushToRemote(root, paths) {
|
|
66
|
+
const config = await (0, config_manager_js_1.readConfig)(root);
|
|
67
|
+
const api = (0, api_client_js_1.buildApiConfig)(config);
|
|
68
|
+
const files = await (0, story_parser_js_1.parseAllStoryFiles)(root);
|
|
69
|
+
const toPush = files.filter((f) => {
|
|
70
|
+
if (paths && paths.length > 0)
|
|
71
|
+
return paths.includes(f.relativePath);
|
|
72
|
+
return f.frontmatter.status !== 'synced';
|
|
73
|
+
});
|
|
74
|
+
if (toPush.length === 0) {
|
|
75
|
+
return { created: 0, updated: 0, pushed: [] };
|
|
76
|
+
}
|
|
77
|
+
const documents = toPush.map((f) => ({
|
|
78
|
+
path: normalizePath(f.relativePath),
|
|
79
|
+
title: f.frontmatter.title,
|
|
80
|
+
content: f.body,
|
|
81
|
+
}));
|
|
82
|
+
const result = await (0, api_client_js_1.pushDocs)(api, documents);
|
|
83
|
+
// Update remote state
|
|
84
|
+
const state = await (0, state_js_1.readRemoteState)(root);
|
|
85
|
+
for (const doc of result.documents) {
|
|
86
|
+
const localPath = doc.path;
|
|
87
|
+
const absPath = (0, node_path_1.resolve)(root, localPath);
|
|
88
|
+
const rawContent = (0, node_fs_1.existsSync)(absPath) ? await (0, promises_1.readFile)(absPath, 'utf-8') : '';
|
|
89
|
+
state.documents[localPath] = {
|
|
90
|
+
remoteId: doc.id,
|
|
91
|
+
remoteVersion: doc.version,
|
|
92
|
+
localHash: sha256(rawContent),
|
|
93
|
+
lastSynced: new Date().toISOString(),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
state.lastPush = new Date().toISOString();
|
|
97
|
+
await (0, state_js_1.writeRemoteState)(root, state);
|
|
98
|
+
// Mark local files as synced (drafts are excluded — they need AI enrichment first)
|
|
99
|
+
for (const f of toPush) {
|
|
100
|
+
if (f.frontmatter.status === 'draft')
|
|
101
|
+
continue;
|
|
102
|
+
const absPath = (0, node_path_1.resolve)(root, f.relativePath);
|
|
103
|
+
const content = await (0, promises_1.readFile)(absPath, 'utf-8');
|
|
104
|
+
const updated = content.replace(/^status:\s*(new|changed)/m, 'status: synced');
|
|
105
|
+
if (updated !== content) {
|
|
106
|
+
await (0, promises_1.writeFile)(absPath, updated, 'utf-8');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
created: result.created,
|
|
111
|
+
updated: result.updated,
|
|
112
|
+
pushed: toPush.map((f) => f.relativePath),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// ─── Pull Documents ──────────────────────────────────────────────────────
|
|
116
|
+
async function pullFromRemote(root) {
|
|
117
|
+
const config = await (0, config_manager_js_1.readConfig)(root);
|
|
118
|
+
const api = (0, api_client_js_1.buildApiConfig)(config);
|
|
119
|
+
const remoteDocs = await (0, api_client_js_1.pullDocs)(api);
|
|
120
|
+
const state = await (0, state_js_1.readRemoteState)(root);
|
|
121
|
+
const created = [];
|
|
122
|
+
const updated = [];
|
|
123
|
+
const conflicts = [];
|
|
124
|
+
for (const doc of remoteDocs) {
|
|
125
|
+
const localPath = doc.path;
|
|
126
|
+
const absPath = (0, node_path_1.resolve)(root, localPath);
|
|
127
|
+
const tracked = state.documents[localPath];
|
|
128
|
+
if (!(0, node_fs_1.existsSync)(absPath)) {
|
|
129
|
+
// New file — create locally, preserving remote status
|
|
130
|
+
const dir = (0, node_path_1.dirname)(absPath);
|
|
131
|
+
if (!(0, node_fs_1.existsSync)(dir)) {
|
|
132
|
+
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
133
|
+
}
|
|
134
|
+
const localStatus = doc.status === 'draft' ? 'draft' : 'synced';
|
|
135
|
+
const markdown = buildStoryMarkdown(doc.title, doc.content, doc.version, localStatus);
|
|
136
|
+
await (0, promises_1.writeFile)(absPath, markdown, 'utf-8');
|
|
137
|
+
created.push(localPath);
|
|
138
|
+
updateDocState(state, doc, localPath, markdown);
|
|
139
|
+
}
|
|
140
|
+
else if (!tracked || doc.version > tracked.remoteVersion) {
|
|
141
|
+
// Remote is newer — check for local changes
|
|
142
|
+
const localContent = await (0, promises_1.readFile)(absPath, 'utf-8');
|
|
143
|
+
const localHash = sha256(localContent);
|
|
144
|
+
if (tracked && localHash !== tracked.localHash) {
|
|
145
|
+
// Local file changed since last sync AND remote changed → conflict
|
|
146
|
+
conflicts.push({
|
|
147
|
+
path: localPath,
|
|
148
|
+
localVersion: tracked.remoteVersion.toString(),
|
|
149
|
+
remoteVersion: doc.version,
|
|
150
|
+
reason: 'Both local and remote have changes since last sync',
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Local unchanged — safe to overwrite
|
|
155
|
+
const localStatus = doc.status === 'draft' ? 'draft' : 'synced';
|
|
156
|
+
const markdown = buildStoryMarkdown(doc.title, doc.content, doc.version, localStatus);
|
|
157
|
+
await (0, promises_1.writeFile)(absPath, markdown, 'utf-8');
|
|
158
|
+
updated.push(localPath);
|
|
159
|
+
updateDocState(state, doc, localPath, markdown);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// If versions match, skip
|
|
163
|
+
}
|
|
164
|
+
state.lastPull = new Date().toISOString();
|
|
165
|
+
await (0, state_js_1.writeRemoteState)(root, state);
|
|
166
|
+
return { created, updated, conflicts };
|
|
167
|
+
}
|
|
168
|
+
function updateDocState(state, doc, localPath, markdownContent) {
|
|
169
|
+
state.documents[localPath] = {
|
|
170
|
+
remoteId: doc.id,
|
|
171
|
+
remoteVersion: doc.version,
|
|
172
|
+
localHash: sha256(markdownContent),
|
|
173
|
+
lastSynced: new Date().toISOString(),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// ─── Pull CRs ────────────────────────────────────────────────────────────
|
|
177
|
+
async function pullCRsFromRemote(root) {
|
|
178
|
+
const config = await (0, config_manager_js_1.readConfig)(root);
|
|
179
|
+
const api = (0, api_client_js_1.buildApiConfig)(config);
|
|
180
|
+
const remoteCRs = await (0, api_client_js_1.fetchPendingCRs)(api);
|
|
181
|
+
const crDir = (0, node_path_1.resolve)(root, 'change-requests');
|
|
182
|
+
if (!(0, node_fs_1.existsSync)(crDir)) {
|
|
183
|
+
await (0, promises_1.mkdir)(crDir, { recursive: true });
|
|
184
|
+
}
|
|
185
|
+
let created = 0;
|
|
186
|
+
let updated = 0;
|
|
187
|
+
for (const cr of remoteCRs) {
|
|
188
|
+
const filename = `CR-${cr.id.substring(0, 8)}.md`;
|
|
189
|
+
const absPath = (0, node_path_1.resolve)(crDir, filename);
|
|
190
|
+
const crStatus = cr.status === 'draft' ? 'draft' : 'pending';
|
|
191
|
+
const markdown = buildCRMarkdown(cr.title, cr.body, cr.created_at, crStatus);
|
|
192
|
+
if ((0, node_fs_1.existsSync)(absPath)) {
|
|
193
|
+
updated++;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
created++;
|
|
197
|
+
}
|
|
198
|
+
await (0, promises_1.writeFile)(absPath, markdown, 'utf-8');
|
|
199
|
+
}
|
|
200
|
+
return { created, updated };
|
|
201
|
+
}
|
|
202
|
+
// ─── Pull Bugs ───────────────────────────────────────────────────────────
|
|
203
|
+
async function pullBugsFromRemote(root) {
|
|
204
|
+
const config = await (0, config_manager_js_1.readConfig)(root);
|
|
205
|
+
const api = (0, api_client_js_1.buildApiConfig)(config);
|
|
206
|
+
const remoteBugs = await (0, api_client_js_1.fetchOpenBugs)(api);
|
|
207
|
+
const bugsDir = (0, node_path_1.resolve)(root, 'bugs');
|
|
208
|
+
if (!(0, node_fs_1.existsSync)(bugsDir)) {
|
|
209
|
+
await (0, promises_1.mkdir)(bugsDir, { recursive: true });
|
|
210
|
+
}
|
|
211
|
+
let created = 0;
|
|
212
|
+
let updated = 0;
|
|
213
|
+
for (const bug of remoteBugs) {
|
|
214
|
+
const filename = `BUG-${bug.id.substring(0, 8)}.md`;
|
|
215
|
+
const absPath = (0, node_path_1.resolve)(bugsDir, filename);
|
|
216
|
+
const bugStatus = bug.status === 'draft' ? 'draft' : 'open';
|
|
217
|
+
const markdown = buildBugMarkdown(bug.title, bug.body, bug.created_at, bugStatus);
|
|
218
|
+
if ((0, node_fs_1.existsSync)(absPath)) {
|
|
219
|
+
updated++;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
created++;
|
|
223
|
+
}
|
|
224
|
+
await (0, promises_1.writeFile)(absPath, markdown, 'utf-8');
|
|
225
|
+
}
|
|
226
|
+
return { created, updated };
|
|
227
|
+
}
|
|
228
|
+
// ─── Remote Status ───────────────────────────────────────────────────────
|
|
229
|
+
async function getRemoteStatus(root) {
|
|
230
|
+
const config = await (0, config_manager_js_1.readConfig)(root);
|
|
231
|
+
if (!config.remote?.url) {
|
|
232
|
+
return { configured: false, url: null, connected: false, localPending: 0, remoteDocs: 0 };
|
|
233
|
+
}
|
|
234
|
+
const files = await (0, story_parser_js_1.parseAllStoryFiles)(root);
|
|
235
|
+
const localPending = files.filter((f) => f.frontmatter.status !== 'synced').length;
|
|
236
|
+
try {
|
|
237
|
+
const api = (0, api_client_js_1.buildApiConfig)(config);
|
|
238
|
+
const docs = await (0, api_client_js_1.pullDocs)(api);
|
|
239
|
+
return {
|
|
240
|
+
configured: true,
|
|
241
|
+
url: config.remote.url,
|
|
242
|
+
connected: true,
|
|
243
|
+
localPending,
|
|
244
|
+
remoteDocs: docs.length,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return {
|
|
249
|
+
configured: true,
|
|
250
|
+
url: config.remote.url,
|
|
251
|
+
connected: false,
|
|
252
|
+
localPending,
|
|
253
|
+
remoteDocs: 0,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=sync-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../src/remote/sync-engine.ts"],"names":[],"mappings":";;;;;AAsEA,oCAsDC;AAID,wCAwDC;AAkBD,8CA4BC;AAID,gDA4BC;AAID,0CA6BC;AAvSD,+CAA8D;AAC9D,qCAAqC;AACrC,yCAAoD;AACpD,6CAAyC;AACzC,8DAAiC;AAEjC,mEAAyD;AACzD,+DAA+D;AAC/D,mDAAqG;AACrG,yCAA+D;AAU/D,SAAS,MAAM,CAAC,OAAe;IAC7B,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe,EAAE,SAAiB,QAAQ;IACjG,MAAM,EAAE,GAAG;QACT,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;QAChB,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzC,OAAO,EAAE,GAAG,OAAO,IAAI;KACxB,CAAC;IACF,OAAO,qBAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB,EAAE,SAAiB,OAAO;IAC/F,MAAM,EAAE,GAAG;QACT,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,SAAS;KACxB,CAAC;IACF,OAAO,qBAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB,EAAE,SAAiB,MAAM;IAC/F,MAAM,EAAE,GAAG;QACT,KAAK;QACL,MAAM;QACN,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,SAAS;KACxB,CAAC;IACF,OAAO,qBAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,4EAA4E;AAErE,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,KAAgB;IAC/D,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAU,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAChC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;QACnC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK;QAC1B,OAAO,EAAE,CAAC,CAAC,IAAI;KAChB,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAQ,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE9C,sBAAsB;IACtB,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAe,EAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;YAC3B,QAAQ,EAAE,GAAG,CAAC,EAAE;YAChB,aAAa,EAAE,GAAG,CAAC,OAAO;YAC1B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;YAC7B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,IAAA,2BAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEpC,mFAAmF;IACnF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;YAAE,SAAS;QAC/C,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,CAAC;QAC/E,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,4EAA4E;AAErE,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAU,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,MAAM,IAAA,wBAAQ,EAAC,GAAG,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,IAAA,0BAAe,EAAC,IAAI,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACzB,sDAAsD;YACtD,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAA,oBAAU,EAAC,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAA,gBAAK,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAChE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACtF,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAC3D,4CAA4C;YAC5C,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;YAEvC,IAAI,OAAO,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC/C,mEAAmE;gBACnE,SAAS,CAAC,IAAI,CAAC;oBACb,IAAI,EAAE,SAAS;oBACf,YAAY,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAC9C,aAAa,EAAE,GAAG,CAAC,OAAO;oBAC1B,MAAM,EAAE,oDAAoD;iBAC7D,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAChE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBACtF,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,0BAA0B;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,IAAA,2BAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,cAAc,CACrB,KAAwH,EACxH,GAAsB,EACtB,SAAiB,EACjB,eAAuB;IAEvB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG;QAC3B,QAAQ,EAAE,GAAG,CAAC,EAAE;QAChB,aAAa,EAAE,GAAG,CAAC,OAAO;QAC1B,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC;QAClC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,4EAA4E;AAErE,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAClD,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAU,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,MAAM,IAAA,+BAAe,EAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAA,oBAAU,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAA,gBAAK,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;QAClD,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE7E,IAAI,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,4EAA4E;AAErE,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAU,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAa,EAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAA,gBAAK,EAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAElF,IAAI,IAAA,oBAAU,EAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,4EAA4E;AAErE,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAU,EAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACxB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IAEnF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,8BAAc,EAAC,MAAM,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAQ,EAAC,GAAG,CAAC,CAAC;QACjC,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG;YACtB,SAAS,EAAE,IAAI;YACf,YAAY;YACZ,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG;YACtB,SAAS,EAAE,KAAK;YAChB,YAAY;YACZ,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/** Mirrors the sdd-flow API response for documents */
|
|
2
|
+
export interface RemoteDocResponse {
|
|
3
|
+
id: string;
|
|
4
|
+
project_id: string;
|
|
5
|
+
path: string;
|
|
6
|
+
title: string;
|
|
7
|
+
status: string;
|
|
8
|
+
version: number;
|
|
9
|
+
content: string;
|
|
10
|
+
last_modified_by: string | null;
|
|
11
|
+
created_at: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}
|
|
14
|
+
/** Bulk push response from POST /cli/push-docs */
|
|
15
|
+
export interface RemoteDocBulkResponse {
|
|
16
|
+
created: number;
|
|
17
|
+
updated: number;
|
|
18
|
+
documents: RemoteDocResponse[];
|
|
19
|
+
}
|
|
20
|
+
/** Mirrors the sdd-flow API response for change requests */
|
|
21
|
+
export interface RemoteCRResponse {
|
|
22
|
+
id: string;
|
|
23
|
+
project_id: string;
|
|
24
|
+
title: string;
|
|
25
|
+
body: string;
|
|
26
|
+
status: string;
|
|
27
|
+
author_id: string;
|
|
28
|
+
assignee_id: string | null;
|
|
29
|
+
target_files: string[] | null;
|
|
30
|
+
closed_at: string | null;
|
|
31
|
+
created_at: string;
|
|
32
|
+
updated_at: string;
|
|
33
|
+
}
|
|
34
|
+
/** Mirrors the sdd-flow API response for bugs */
|
|
35
|
+
export interface RemoteBugResponse {
|
|
36
|
+
id: string;
|
|
37
|
+
project_id: string;
|
|
38
|
+
title: string;
|
|
39
|
+
body: string;
|
|
40
|
+
status: string;
|
|
41
|
+
severity: string;
|
|
42
|
+
author_id: string;
|
|
43
|
+
assignee_id: string | null;
|
|
44
|
+
closed_at: string | null;
|
|
45
|
+
created_at: string;
|
|
46
|
+
updated_at: string;
|
|
47
|
+
}
|
|
48
|
+
/** Tracks per-document remote sync state */
|
|
49
|
+
export interface RemoteDocState {
|
|
50
|
+
remoteId: string;
|
|
51
|
+
remoteVersion: number;
|
|
52
|
+
localHash: string;
|
|
53
|
+
lastSynced: string;
|
|
54
|
+
}
|
|
55
|
+
/** Persisted to .sdd/remote-state.json */
|
|
56
|
+
export interface RemoteState {
|
|
57
|
+
lastPull?: string;
|
|
58
|
+
lastPush?: string;
|
|
59
|
+
documents: Record<string, RemoteDocState>;
|
|
60
|
+
}
|
|
61
|
+
/** Result of a push operation */
|
|
62
|
+
export interface PushResult {
|
|
63
|
+
created: number;
|
|
64
|
+
updated: number;
|
|
65
|
+
pushed: string[];
|
|
66
|
+
}
|
|
67
|
+
/** A conflict detected during pull */
|
|
68
|
+
export interface PullConflict {
|
|
69
|
+
path: string;
|
|
70
|
+
localVersion: string;
|
|
71
|
+
remoteVersion: number;
|
|
72
|
+
reason: string;
|
|
73
|
+
}
|
|
74
|
+
/** Result of a pull operation */
|
|
75
|
+
export interface PullResult {
|
|
76
|
+
created: string[];
|
|
77
|
+
updated: string[];
|
|
78
|
+
conflicts: PullConflict[];
|
|
79
|
+
}
|
|
80
|
+
/** Result of a pull CRs/Bugs operation */
|
|
81
|
+
export interface PullEntitiesResult {
|
|
82
|
+
created: number;
|
|
83
|
+
updated: number;
|
|
84
|
+
}
|
|
85
|
+
/** Result of remote status check */
|
|
86
|
+
export interface RemoteStatusResult {
|
|
87
|
+
configured: boolean;
|
|
88
|
+
url: string | null;
|
|
89
|
+
connected: boolean;
|
|
90
|
+
localPending: number;
|
|
91
|
+
remoteDocs: number;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/remote/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/remote/types.ts"],"names":[],"mappings":""}
|
package/dist/sdd.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { StoryStatus, ValidationResult, SDDConfig, ChangeRequest, Bug } from "./types.js";
|
|
2
2
|
import type { ProjectInfo } from "./scaffold/templates.js";
|
|
3
3
|
import { type SyncAdaptersOptions, type SyncAdaptersResult } from "./scaffold/skill-adapters.js";
|
|
4
|
+
import type { PushResult, PullResult, PullEntitiesResult, RemoteStatusResult } from "./remote/types.js";
|
|
4
5
|
export declare class SDD {
|
|
5
6
|
private root;
|
|
6
7
|
constructor(options: {
|
|
@@ -22,6 +23,18 @@ export declare class SDD {
|
|
|
22
23
|
bugs(): Promise<Bug[]>;
|
|
23
24
|
openBugs(): Promise<Bug[]>;
|
|
24
25
|
markBugResolved(paths?: string[]): Promise<string[]>;
|
|
26
|
+
drafts(): Promise<{
|
|
27
|
+
docs: import("./types.js").StoryFile[];
|
|
28
|
+
crs: ChangeRequest[];
|
|
29
|
+
bugs: Bug[];
|
|
30
|
+
}>;
|
|
31
|
+
draftEnrichmentPrompt(): Promise<string | null>;
|
|
32
|
+
markDraftsEnriched(paths?: string[]): Promise<string[]>;
|
|
33
|
+
remoteStatus(): Promise<RemoteStatusResult>;
|
|
34
|
+
push(paths?: string[]): Promise<PushResult>;
|
|
35
|
+
pull(): Promise<PullResult>;
|
|
36
|
+
pullCRs(): Promise<PullEntitiesResult>;
|
|
37
|
+
pullBugs(): Promise<PullEntitiesResult>;
|
|
25
38
|
private ensureInitialized;
|
|
26
39
|
}
|
|
27
40
|
//# sourceMappingURL=sdd.d.ts.map
|
package/dist/sdd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdd.d.ts","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"sdd.d.ts","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAW/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAExG,qBAAa,GAAG;IACd,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAI/B,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3C,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK9E,iBAAiB,IAAI,MAAM,EAAE;IAIvB,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAK5B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAc9B,OAAO,IAAI,OAAO,CAAC,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;IAMpD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcrC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMrC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6B/C,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK1C,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKjD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBlD,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKtB,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAK1B,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBpD,MAAM,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;QAAC,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAchG,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS/C,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6CvD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAK3C,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAK3C,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAK3B,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAKtC,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAK7C,OAAO,CAAC,iBAAiB;CAK1B"}
|
package/dist/sdd.js
CHANGED
|
@@ -7,12 +7,14 @@ const errors_js_1 = require("./errors.js");
|
|
|
7
7
|
const story_parser_js_1 = require("./parser/story-parser.js");
|
|
8
8
|
const prompt_generator_js_1 = require("./prompt/prompt-generator.js");
|
|
9
9
|
const apply_prompt_generator_js_1 = require("./prompt/apply-prompt-generator.js");
|
|
10
|
+
const draft_prompt_generator_js_1 = require("./prompt/draft-prompt-generator.js");
|
|
10
11
|
const validator_js_1 = require("./validate/validator.js");
|
|
11
12
|
const init_js_1 = require("./scaffold/init.js");
|
|
12
13
|
const config_manager_js_1 = require("./config/config-manager.js");
|
|
13
14
|
const cr_parser_js_1 = require("./parser/cr-parser.js");
|
|
14
15
|
const bug_parser_js_1 = require("./parser/bug-parser.js");
|
|
15
16
|
const skill_adapters_js_1 = require("./scaffold/skill-adapters.js");
|
|
17
|
+
const sync_engine_js_1 = require("./remote/sync-engine.js");
|
|
16
18
|
class SDD {
|
|
17
19
|
root;
|
|
18
20
|
constructor(options) {
|
|
@@ -47,7 +49,7 @@ class SDD {
|
|
|
47
49
|
async pending() {
|
|
48
50
|
this.ensureInitialized();
|
|
49
51
|
const files = await (0, story_parser_js_1.parseAllStoryFiles)(this.root);
|
|
50
|
-
return files.filter((f) => f.frontmatter.status !== "synced");
|
|
52
|
+
return files.filter((f) => f.frontmatter.status !== "synced" && f.frontmatter.status !== "draft");
|
|
51
53
|
}
|
|
52
54
|
async sync() {
|
|
53
55
|
const pending = await this.pending();
|
|
@@ -55,12 +57,16 @@ class SDD {
|
|
|
55
57
|
}
|
|
56
58
|
async applyPrompt() {
|
|
57
59
|
this.ensureInitialized();
|
|
58
|
-
const [bugs, changeRequests, pendingFiles] = await Promise.all([
|
|
60
|
+
const [bugs, changeRequests, pendingFiles, drafts, allFiles, config] = await Promise.all([
|
|
59
61
|
this.openBugs(),
|
|
60
62
|
this.pendingChangeRequests(),
|
|
61
63
|
this.pending(),
|
|
64
|
+
this.drafts(),
|
|
65
|
+
(0, story_parser_js_1.parseAllStoryFiles)(this.root),
|
|
66
|
+
(0, config_manager_js_1.readConfig)(this.root),
|
|
62
67
|
]);
|
|
63
|
-
|
|
68
|
+
const projectContext = allFiles.filter((f) => f.frontmatter.status !== "draft");
|
|
69
|
+
return (0, apply_prompt_generator_js_1.generateApplyPrompt)(bugs, changeRequests, pendingFiles, this.root, drafts, projectContext, config.description);
|
|
64
70
|
}
|
|
65
71
|
async validate() {
|
|
66
72
|
this.ensureInitialized();
|
|
@@ -100,20 +106,20 @@ class SDD {
|
|
|
100
106
|
}
|
|
101
107
|
async pendingChangeRequests() {
|
|
102
108
|
const all = await this.changeRequests();
|
|
103
|
-
return all.filter((cr) => cr.frontmatter.status === "
|
|
109
|
+
return all.filter((cr) => cr.frontmatter.status === "pending");
|
|
104
110
|
}
|
|
105
111
|
async markCRApplied(paths) {
|
|
106
112
|
this.ensureInitialized();
|
|
107
113
|
const all = await this.changeRequests();
|
|
108
114
|
const marked = [];
|
|
109
115
|
for (const cr of all) {
|
|
110
|
-
if (cr.frontmatter.status
|
|
116
|
+
if (cr.frontmatter.status !== "pending")
|
|
111
117
|
continue;
|
|
112
118
|
if (paths && paths.length > 0 && !paths.includes(cr.relativePath))
|
|
113
119
|
continue;
|
|
114
120
|
const absPath = (0, node_path_1.resolve)(this.root, cr.relativePath);
|
|
115
121
|
const content = await (0, promises_1.readFile)(absPath, "utf-8");
|
|
116
|
-
const updated = content.replace(/^status:\s*
|
|
122
|
+
const updated = content.replace(/^status:\s*pending/m, "status: applied");
|
|
117
123
|
await (0, promises_1.writeFile)(absPath, updated, "utf-8");
|
|
118
124
|
marked.push(cr.relativePath);
|
|
119
125
|
}
|
|
@@ -144,6 +150,93 @@ class SDD {
|
|
|
144
150
|
}
|
|
145
151
|
return marked;
|
|
146
152
|
}
|
|
153
|
+
// ── Drafts ───────────────────────────────────────────────────────────
|
|
154
|
+
async drafts() {
|
|
155
|
+
this.ensureInitialized();
|
|
156
|
+
const [files, crs, bugs] = await Promise.all([
|
|
157
|
+
(0, story_parser_js_1.parseAllStoryFiles)(this.root),
|
|
158
|
+
this.changeRequests(),
|
|
159
|
+
this.bugs(),
|
|
160
|
+
]);
|
|
161
|
+
return {
|
|
162
|
+
docs: files.filter((f) => f.frontmatter.status === "draft"),
|
|
163
|
+
crs: crs.filter((cr) => cr.frontmatter.status === "draft"),
|
|
164
|
+
bugs: bugs.filter((b) => b.frontmatter.status === "draft"),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
async draftEnrichmentPrompt() {
|
|
168
|
+
this.ensureInitialized();
|
|
169
|
+
const drafts = await this.drafts();
|
|
170
|
+
const allFiles = await (0, story_parser_js_1.parseAllStoryFiles)(this.root);
|
|
171
|
+
const projectContext = allFiles.filter((f) => f.frontmatter.status !== "draft");
|
|
172
|
+
const config = await (0, config_manager_js_1.readConfig)(this.root);
|
|
173
|
+
return (0, draft_prompt_generator_js_1.generateDraftEnrichmentPrompt)(drafts, projectContext, config.description);
|
|
174
|
+
}
|
|
175
|
+
async markDraftsEnriched(paths) {
|
|
176
|
+
this.ensureInitialized();
|
|
177
|
+
const marked = [];
|
|
178
|
+
// Story files: draft → new
|
|
179
|
+
const files = await (0, story_parser_js_1.parseAllStoryFiles)(this.root);
|
|
180
|
+
for (const file of files) {
|
|
181
|
+
if (file.frontmatter.status !== "draft")
|
|
182
|
+
continue;
|
|
183
|
+
if (paths && paths.length > 0 && !paths.includes(file.relativePath))
|
|
184
|
+
continue;
|
|
185
|
+
const absPath = (0, node_path_1.resolve)(this.root, file.relativePath);
|
|
186
|
+
const content = await (0, promises_1.readFile)(absPath, "utf-8");
|
|
187
|
+
const updated = content.replace(/^status:\s*draft/m, "status: new");
|
|
188
|
+
await (0, promises_1.writeFile)(absPath, updated, "utf-8");
|
|
189
|
+
marked.push(file.relativePath);
|
|
190
|
+
}
|
|
191
|
+
// CRs: draft → pending
|
|
192
|
+
const crs = await this.changeRequests();
|
|
193
|
+
for (const cr of crs) {
|
|
194
|
+
if (cr.frontmatter.status !== "draft")
|
|
195
|
+
continue;
|
|
196
|
+
if (paths && paths.length > 0 && !paths.includes(cr.relativePath))
|
|
197
|
+
continue;
|
|
198
|
+
const absPath = (0, node_path_1.resolve)(this.root, cr.relativePath);
|
|
199
|
+
const content = await (0, promises_1.readFile)(absPath, "utf-8");
|
|
200
|
+
const updated = content.replace(/^status:\s*draft/m, "status: pending");
|
|
201
|
+
await (0, promises_1.writeFile)(absPath, updated, "utf-8");
|
|
202
|
+
marked.push(cr.relativePath);
|
|
203
|
+
}
|
|
204
|
+
// Bugs: draft → open
|
|
205
|
+
const allBugs = await this.bugs();
|
|
206
|
+
for (const bug of allBugs) {
|
|
207
|
+
if (bug.frontmatter.status !== "draft")
|
|
208
|
+
continue;
|
|
209
|
+
if (paths && paths.length > 0 && !paths.includes(bug.relativePath))
|
|
210
|
+
continue;
|
|
211
|
+
const absPath = (0, node_path_1.resolve)(this.root, bug.relativePath);
|
|
212
|
+
const content = await (0, promises_1.readFile)(absPath, "utf-8");
|
|
213
|
+
const updated = content.replace(/^status:\s*draft/m, "status: open");
|
|
214
|
+
await (0, promises_1.writeFile)(absPath, updated, "utf-8");
|
|
215
|
+
marked.push(bug.relativePath);
|
|
216
|
+
}
|
|
217
|
+
return marked;
|
|
218
|
+
}
|
|
219
|
+
// ── Remote sync ──────────────────────────────────────────────────────
|
|
220
|
+
async remoteStatus() {
|
|
221
|
+
this.ensureInitialized();
|
|
222
|
+
return (0, sync_engine_js_1.getRemoteStatus)(this.root);
|
|
223
|
+
}
|
|
224
|
+
async push(paths) {
|
|
225
|
+
this.ensureInitialized();
|
|
226
|
+
return (0, sync_engine_js_1.pushToRemote)(this.root, paths);
|
|
227
|
+
}
|
|
228
|
+
async pull() {
|
|
229
|
+
this.ensureInitialized();
|
|
230
|
+
return (0, sync_engine_js_1.pullFromRemote)(this.root);
|
|
231
|
+
}
|
|
232
|
+
async pullCRs() {
|
|
233
|
+
this.ensureInitialized();
|
|
234
|
+
return (0, sync_engine_js_1.pullCRsFromRemote)(this.root);
|
|
235
|
+
}
|
|
236
|
+
async pullBugs() {
|
|
237
|
+
this.ensureInitialized();
|
|
238
|
+
return (0, sync_engine_js_1.pullBugsFromRemote)(this.root);
|
|
239
|
+
}
|
|
147
240
|
ensureInitialized() {
|
|
148
241
|
if (!(0, config_manager_js_1.isSDDProject)(this.root)) {
|
|
149
242
|
throw new errors_js_1.ProjectNotInitializedError(this.root);
|
package/dist/sdd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdd.js","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,yCAAoC;AAEpC,2CAAyD;AACzD,8DAA8D;AAC9D,sEAA8D;AAC9D,kFAAyE;AACzE,0DAAmD;AACnD,gDAAiD;AACjD,kEAAmF;AACnF,wDAAwD;AACxD,0DAA0D;AAE1D,oEAKsC;
|
|
1
|
+
{"version":3,"file":"sdd.js","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type StoryFileStatus = 'new' | 'changed' | 'deleted' | 'synced';
|
|
1
|
+
export type StoryFileStatus = 'draft' | 'new' | 'changed' | 'deleted' | 'synced';
|
|
2
2
|
export interface StoryFrontmatter {
|
|
3
3
|
title: string;
|
|
4
4
|
status: StoryFileStatus;
|
|
@@ -41,18 +41,23 @@ export interface ValidationIssue {
|
|
|
41
41
|
export interface StoryStatus {
|
|
42
42
|
files: Array<{
|
|
43
43
|
relativePath: string;
|
|
44
|
-
status:
|
|
44
|
+
status: StoryFileStatus;
|
|
45
45
|
version: string;
|
|
46
46
|
lastModified: string;
|
|
47
47
|
}>;
|
|
48
48
|
}
|
|
49
|
+
export interface RemoteConfig {
|
|
50
|
+
url: string;
|
|
51
|
+
'api-key'?: string;
|
|
52
|
+
}
|
|
49
53
|
export interface SDDConfig {
|
|
50
54
|
description: string;
|
|
51
55
|
'last-sync-commit'?: string;
|
|
52
56
|
agent?: string;
|
|
53
57
|
agents?: Record<string, string>;
|
|
58
|
+
remote?: RemoteConfig;
|
|
54
59
|
}
|
|
55
|
-
export type ChangeRequestStatus = 'draft' | 'applied';
|
|
60
|
+
export type ChangeRequestStatus = 'draft' | 'pending' | 'applied';
|
|
56
61
|
export interface ChangeRequestFrontmatter {
|
|
57
62
|
title: string;
|
|
58
63
|
status: ChangeRequestStatus;
|
|
@@ -64,7 +69,7 @@ export interface ChangeRequest {
|
|
|
64
69
|
frontmatter: ChangeRequestFrontmatter;
|
|
65
70
|
body: string;
|
|
66
71
|
}
|
|
67
|
-
export type BugStatus = 'open' | 'resolved';
|
|
72
|
+
export type BugStatus = 'draft' | 'open' | 'resolved';
|
|
68
73
|
export interface BugFrontmatter {
|
|
69
74
|
title: string;
|
|
70
75
|
status: BugStatus;
|