@sudocode-ai/cli 0.1.4 → 0.1.6
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/cli/merge-commands.d.ts +42 -0
- package/dist/cli/merge-commands.d.ts.map +1 -0
- package/dist/cli/merge-commands.js +401 -0
- package/dist/cli/merge-commands.js.map +1 -0
- package/dist/cli/server-commands.d.ts.map +1 -1
- package/dist/cli/server-commands.js +12 -9
- package/dist/cli/server-commands.js.map +1 -1
- package/dist/cli/update-commands.d.ts +4 -0
- package/dist/cli/update-commands.d.ts.map +1 -1
- package/dist/cli/update-commands.js +21 -1
- package/dist/cli/update-commands.js.map +1 -1
- package/dist/cli.js +51 -4
- package/dist/cli.js.map +1 -1
- package/dist/import.d.ts.map +1 -1
- package/dist/import.js +2 -0
- package/dist/import.js.map +1 -1
- package/dist/merge-resolver.d.ts +85 -0
- package/dist/merge-resolver.d.ts.map +1 -0
- package/dist/merge-resolver.js +301 -0
- package/dist/merge-resolver.js.map +1 -0
- package/dist/operations/feedback.d.ts +2 -0
- package/dist/operations/feedback.d.ts.map +1 -1
- package/dist/operations/feedback.js +24 -9
- package/dist/operations/feedback.js.map +1 -1
- package/dist/operations/issues.d.ts.map +1 -1
- package/dist/operations/issues.js +29 -10
- package/dist/operations/issues.js.map +1 -1
- package/dist/operations/relationships.d.ts.map +1 -1
- package/dist/operations/relationships.js +34 -12
- package/dist/operations/relationships.js.map +1 -1
- package/dist/update-checker.d.ts +4 -0
- package/dist/update-checker.d.ts.map +1 -1
- package/dist/update-checker.js +52 -10
- package/dist/update-checker.js.map +1 -1
- package/package.json +11 -8
|
@@ -49,11 +49,19 @@ export function addRelationship(db, input) {
|
|
|
49
49
|
if (!rel) {
|
|
50
50
|
throw new Error("Failed to create relationship");
|
|
51
51
|
}
|
|
52
|
-
// Auto-update blocked status when adding a 'blocks' relationship
|
|
53
|
-
|
|
52
|
+
// Auto-update blocked status when adding a 'blocks' or 'depends-on' relationship
|
|
53
|
+
// Semantics:
|
|
54
|
+
// - blocks: from_id blocks to_id (from_id is the blocker, to_id gets blocked)
|
|
55
|
+
// - depends-on: from_id depends-on to_id (from_id gets blocked until to_id is done)
|
|
56
|
+
if ((input.relationship_type === "blocks" ||
|
|
57
|
+
input.relationship_type === "depends-on") &&
|
|
54
58
|
input.from_type === "issue" &&
|
|
55
59
|
input.to_type === "issue") {
|
|
56
|
-
|
|
60
|
+
// For 'blocks': to_id is blocked by from_id
|
|
61
|
+
// For 'depends-on': from_id is blocked by to_id
|
|
62
|
+
const blockedId = input.relationship_type === "blocks" ? input.to_id : input.from_id;
|
|
63
|
+
const blockerId = input.relationship_type === "blocks" ? input.from_id : input.to_id;
|
|
64
|
+
autoUpdateBlockedStatusOnAdd(db, blockedId, blockerId);
|
|
57
65
|
}
|
|
58
66
|
return rel;
|
|
59
67
|
}
|
|
@@ -65,7 +73,10 @@ export function addRelationship(db, input) {
|
|
|
65
73
|
}
|
|
66
74
|
}
|
|
67
75
|
/**
|
|
68
|
-
* Auto-update blocked status when adding a 'blocks' relationship
|
|
76
|
+
* Auto-update blocked status when adding a 'blocks' or 'depends-on' relationship
|
|
77
|
+
* Semantics:
|
|
78
|
+
* - blocks: blocker blocks blocked (blocker is the issue doing the blocking)
|
|
79
|
+
* - depends-on: blocked depends on blocker (blocked needs blocker to be done)
|
|
69
80
|
*/
|
|
70
81
|
function autoUpdateBlockedStatusOnAdd(db, blockedIssueId, blockerIssueId) {
|
|
71
82
|
const blockerIssue = getIssue(db, blockerIssueId);
|
|
@@ -108,12 +119,16 @@ export function removeRelationship(db, from_id, from_type, to_id, to_type, relat
|
|
|
108
119
|
`);
|
|
109
120
|
const result = stmt.run(from_id, from_type, to_id, to_type, relationship_type);
|
|
110
121
|
const removed = result.changes > 0;
|
|
111
|
-
// Auto-update blocked status when removing a 'blocks' relationship
|
|
122
|
+
// Auto-update blocked status when removing a 'blocks' or 'depends-on' relationship
|
|
123
|
+
// Semantics:
|
|
124
|
+
// - blocks: from_id blocks to_id, so to_id is the one being unblocked
|
|
125
|
+
// - depends-on: from_id depends-on to_id, so from_id is the one being unblocked
|
|
112
126
|
if (removed &&
|
|
113
|
-
relationship_type === "blocks" &&
|
|
127
|
+
(relationship_type === "blocks" || relationship_type === "depends-on") &&
|
|
114
128
|
from_type === "issue" &&
|
|
115
129
|
to_type === "issue") {
|
|
116
|
-
|
|
130
|
+
const unblockedId = relationship_type === "blocks" ? to_id : from_id;
|
|
131
|
+
autoUpdateBlockedStatusOnRemove(db, unblockedId);
|
|
117
132
|
}
|
|
118
133
|
return removed;
|
|
119
134
|
}
|
|
@@ -139,18 +154,25 @@ function autoUpdateBlockedStatusOnRemove(db, blockedIssueId) {
|
|
|
139
154
|
}
|
|
140
155
|
/**
|
|
141
156
|
* Check if an issue has any open blockers
|
|
157
|
+
* Semantics:
|
|
158
|
+
* - blocks: blocker --[blocks]--> issueId (incoming blocks)
|
|
159
|
+
* - depends-on: issueId --[depends-on]--> blocker (outgoing depends-on)
|
|
142
160
|
*/
|
|
143
161
|
function hasOpenBlockers(db, issueId) {
|
|
144
162
|
const stmt = db.prepare(`
|
|
145
163
|
SELECT COUNT(*) as count
|
|
146
164
|
FROM relationships r
|
|
147
|
-
JOIN issues blocker ON
|
|
148
|
-
|
|
149
|
-
AND r.
|
|
150
|
-
|
|
165
|
+
JOIN issues blocker ON (
|
|
166
|
+
(r.relationship_type = 'blocks' AND r.from_id = blocker.id AND r.from_type = 'issue') OR
|
|
167
|
+
(r.relationship_type = 'depends-on' AND r.to_id = blocker.id AND r.to_type = 'issue')
|
|
168
|
+
)
|
|
169
|
+
WHERE (
|
|
170
|
+
(r.relationship_type = 'blocks' AND r.to_id = ? AND r.to_type = 'issue') OR
|
|
171
|
+
(r.relationship_type = 'depends-on' AND r.from_id = ? AND r.from_type = 'issue')
|
|
172
|
+
)
|
|
151
173
|
AND blocker.status IN ('open', 'in_progress', 'blocked')
|
|
152
174
|
`);
|
|
153
|
-
const result = stmt.get(issueId);
|
|
175
|
+
const result = stmt.get(issueId, issueId);
|
|
154
176
|
return result.count > 0;
|
|
155
177
|
}
|
|
156
178
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../src/operations/relationships.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAWvC;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,KAA8B;IAE9B,4CAA4C;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClE,MAAM,UAAU,GAAG,EAAE;SAClB,OAAO,CAAC,wBAAwB,SAAS,eAAe,CAAC;SACzD,GAAG,CAAC,KAAK,CAAC,OAAO,CAA6C,CAAC;IAClE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,eAAe,KAAK,CAAC,OAAO,EAAE,CAC/E,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9D,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CAAC,wBAAwB,OAAO,eAAe,CAAC;SACvD,GAAG,CAAC,KAAK,CAAC,KAAK,CAA6C,CAAC;IAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,eAAe,KAAK,CAAC,KAAK,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,QAAQ,GAAG,eAAe,CAC9B,EAAE,EACF,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,iBAAiB,CACxB,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAMvB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,IAAI,CAAC,GAAG,CAAC;YACP,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,UAAU,CAAC,IAAI;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,QAAQ,CAAC,IAAI;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;SACjC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,eAAe,CACzB,EAAE,EACF,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,iBAAiB,CACxB,CAAC;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../src/operations/relationships.ts"],"names":[],"mappings":"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"}
|
package/dist/update-checker.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export declare function checkForUpdates(): Promise<UpdateInfo | null>;
|
|
|
16
16
|
* Check for updates and return formatted notification message
|
|
17
17
|
*/
|
|
18
18
|
export declare function getUpdateNotification(): Promise<string | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Dismiss update notifications for a version
|
|
21
|
+
*/
|
|
22
|
+
export declare function dismissUpdate(version: string): void;
|
|
19
23
|
/**
|
|
20
24
|
* Clear update cache (useful for testing)
|
|
21
25
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;CAC1B;AA+ED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAyBlE;AAqBD;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBpE;AA+BD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAiBnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAWvC"}
|
package/dist/update-checker.js
CHANGED
|
@@ -9,7 +9,9 @@ import { VERSION } from "./version.js";
|
|
|
9
9
|
const PACKAGE_NAME = "@sudocode-ai/cli";
|
|
10
10
|
const CACHE_DIR = path.join(os.tmpdir(), "sudocode-cli");
|
|
11
11
|
const CACHE_FILE = path.join(CACHE_DIR, "update-cache.json");
|
|
12
|
+
const DISMISS_FILE = path.join(CACHE_DIR, "update-dismissed.json");
|
|
12
13
|
const CACHE_DURATION = 1000 * 60 * 60 * 24; // 24 hours
|
|
14
|
+
const DISMISS_DURATION = 1000 * 60 * 60 * 24 * 30; // 30 days
|
|
13
15
|
/**
|
|
14
16
|
* Fetch latest version from npm registry
|
|
15
17
|
*/
|
|
@@ -124,16 +126,53 @@ export async function getUpdateNotification() {
|
|
|
124
126
|
if (!isOlderVersion(info.current, info.latest)) {
|
|
125
127
|
return null;
|
|
126
128
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
// Check if update notification is dismissed
|
|
130
|
+
if (isDismissed(info.latest)) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
// Compact single-line notification
|
|
134
|
+
return `Update available: ${info.current} → ${info.latest} (run 'sudocode update' or 'sudocode update --dismiss')`;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Check if update notifications are dismissed
|
|
138
|
+
*/
|
|
139
|
+
function isDismissed(version) {
|
|
140
|
+
try {
|
|
141
|
+
if (!fs.existsSync(DISMISS_FILE)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
const content = fs.readFileSync(DISMISS_FILE, "utf-8");
|
|
145
|
+
const dismissInfo = JSON.parse(content);
|
|
146
|
+
// Check if dismissed version matches
|
|
147
|
+
if (dismissInfo.version !== version) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
// Check if dismiss is still valid
|
|
151
|
+
const now = Date.now();
|
|
152
|
+
if (now - dismissInfo.timestamp > DISMISS_DURATION) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Dismiss update notifications for a version
|
|
163
|
+
*/
|
|
164
|
+
export function dismissUpdate(version) {
|
|
165
|
+
try {
|
|
166
|
+
fs.mkdirSync(CACHE_DIR, { recursive: true });
|
|
167
|
+
const dismissInfo = {
|
|
168
|
+
timestamp: Date.now(),
|
|
169
|
+
version,
|
|
170
|
+
};
|
|
171
|
+
fs.writeFileSync(DISMISS_FILE, JSON.stringify(dismissInfo, null, 2), "utf-8");
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Silently fail
|
|
175
|
+
}
|
|
137
176
|
}
|
|
138
177
|
/**
|
|
139
178
|
* Clear update cache (useful for testing)
|
|
@@ -143,6 +182,9 @@ export function clearUpdateCache() {
|
|
|
143
182
|
if (fs.existsSync(CACHE_FILE)) {
|
|
144
183
|
fs.unlinkSync(CACHE_FILE);
|
|
145
184
|
}
|
|
185
|
+
if (fs.existsSync(DISMISS_FILE)) {
|
|
186
|
+
fs.unlinkSync(DISMISS_FILE);
|
|
187
|
+
}
|
|
146
188
|
}
|
|
147
189
|
catch {
|
|
148
190
|
// Silently fail
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAC7D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../src/update-checker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudocode-ai/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Git-native spec and issue management CLI for AI-assisted software development",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -42,24 +42,27 @@
|
|
|
42
42
|
"node": ">=18.0.0"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@sudocode-ai/types": "^0.1.
|
|
46
|
-
"better-sqlite3": "^11.
|
|
45
|
+
"@sudocode-ai/types": "^0.1.6",
|
|
46
|
+
"better-sqlite3": "^11.10.0",
|
|
47
47
|
"chalk": "^5.6.2",
|
|
48
48
|
"chokidar": "^4.0.3",
|
|
49
49
|
"cli-table3": "^0.6.5",
|
|
50
|
-
"commander": "^
|
|
50
|
+
"commander": "^13.1.0",
|
|
51
51
|
"gray-matter": "^4.0.3",
|
|
52
|
-
"vite": "
|
|
52
|
+
"vite": "^6.4.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@types/better-sqlite3": "^7.6.
|
|
55
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
56
56
|
"@types/chokidar": "^1.7.5",
|
|
57
57
|
"@types/node": "^20.10.6",
|
|
58
|
-
"esbuild": "^0.
|
|
58
|
+
"esbuild": "^0.27.0",
|
|
59
59
|
"typescript": "^5.3.3",
|
|
60
60
|
"vitest": "^3.2.4"
|
|
61
61
|
},
|
|
62
62
|
"files": [
|
|
63
63
|
"dist/**/*"
|
|
64
|
-
]
|
|
64
|
+
],
|
|
65
|
+
"optionalDependencies": {
|
|
66
|
+
"bindings": "^1.5.0"
|
|
67
|
+
}
|
|
65
68
|
}
|