@chenmk/superflow 0.5.10 → 0.5.12
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/INSTALL.en.md +7 -1
- package/INSTALL.md +12 -2
- package/README.md +7 -2
- package/README.zh-CN.md +7 -3
- package/assets/scripts/superflow-archive-command-hook.sh +4 -0
- package/assets/scripts/superflow-contract-hooks.sh +4 -0
- package/assets/scripts/superflow-delivery-check.sh +4 -0
- package/assets/scripts/superflow-dependency-update-hook.sh +4 -17
- package/assets/scripts/superflow-enforce-hook.sh +4 -0
- package/assets/scripts/superflow-hook-guard.sh +4 -0
- package/assets/scripts/superflow-integration-evidence-hook.sh +4 -0
- package/assets/scripts/superflow-managed-work-guard.sh +4 -0
- package/assets/scripts/superflow-sql-sync-hook.py +10 -0
- package/dist/app/cli.js +1 -0
- package/dist/app/cli.js.map +1 -1
- package/dist/app/commands/doctor.js +9 -3
- package/dist/app/commands/doctor.js.map +1 -1
- package/dist/app/commands/init.js +18 -1
- package/dist/app/commands/init.js.map +1 -1
- package/dist/app/commands/uninstall.js +119 -25
- package/dist/app/commands/uninstall.js.map +1 -1
- package/dist/app/commands/update.js +86 -29
- package/dist/app/commands/update.js.map +1 -1
- package/dist/domains/config/cli-help.js +4 -2
- package/dist/domains/config/cli-help.js.map +1 -1
- package/dist/domains/deps.js +62 -30
- package/dist/domains/deps.js.map +1 -1
- package/dist/domains/state.js +64 -0
- package/dist/domains/state.js.map +1 -1
- package/package.json +1 -1
package/dist/domains/deps.js
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
|
-
import { existsSync, promises as fs,
|
|
1
|
+
import { existsSync, promises as fs, readdirSync, statSync, } from 'fs';
|
|
2
2
|
import { homedir } from 'os';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { runCommand } from '../platform/process.js';
|
|
5
5
|
import { ASSETS_DIR } from '../platform/assets.js';
|
|
6
|
-
export const CODEX_SUPERPOWERS_PLUGIN = 'superpowers@openai-
|
|
6
|
+
export const CODEX_SUPERPOWERS_PLUGIN = 'superpowers@openai-curated-remote';
|
|
7
|
+
const CODEX_SUPERPOWERS_MARKETS = ['openai-curated-remote', 'openai-api-curated'];
|
|
8
|
+
export function selectCodexSuperpowers(catalog) {
|
|
9
|
+
const plugins = [...(catalog.available ?? []), ...(catalog.installed ?? [])].filter((plugin) => plugin.name === 'superpowers' &&
|
|
10
|
+
CODEX_SUPERPOWERS_MARKETS.includes(plugin.marketplaceName) &&
|
|
11
|
+
plugin.pluginId === `superpowers@${plugin.marketplaceName}` &&
|
|
12
|
+
/^\d+\.\d+\.\d+$/.test(plugin.version));
|
|
13
|
+
plugins.sort((a, b) => compareVersions(b.version, a.version));
|
|
14
|
+
if (!plugins[0])
|
|
15
|
+
throw new Error('Cannot confirm the latest official Superpowers plugin; run codex plugin list --available --json');
|
|
16
|
+
return plugins[0];
|
|
17
|
+
}
|
|
18
|
+
function compareVersions(a, b) {
|
|
19
|
+
const left = a.split('.').map(Number);
|
|
20
|
+
const right = b.split('.').map(Number);
|
|
21
|
+
return left[0] - right[0] || left[1] - right[1] || left[2] - right[2];
|
|
22
|
+
}
|
|
7
23
|
export const REQUIRED_CODEX_SUPERPOWER_SKILLS = [
|
|
8
24
|
'verification-before-completion',
|
|
9
25
|
'requesting-code-review',
|
|
10
26
|
'finishing-a-development-branch',
|
|
11
27
|
];
|
|
12
|
-
export function hasCodexSuperpowerSkill(skill, root
|
|
13
|
-
if (!existsSync(root))
|
|
28
|
+
export function hasCodexSuperpowerSkill(skill, root) {
|
|
29
|
+
if (!root || !existsSync(root))
|
|
14
30
|
return false;
|
|
15
31
|
const expected = path.join('skills', skill, 'SKILL.md');
|
|
16
32
|
const stack = [root];
|
|
@@ -40,22 +56,23 @@ export function hasCodexSuperpowerSkill(skill, root = path.join(homedir(), '.cod
|
|
|
40
56
|
}
|
|
41
57
|
return false;
|
|
42
58
|
}
|
|
43
|
-
export function
|
|
44
|
-
if (!existsSync(configPath))
|
|
45
|
-
return false;
|
|
59
|
+
export async function inspectCodexSuperpowers(run = runCommand, cacheRoot = path.join(homedir(), '.codex/plugins/cache')) {
|
|
46
60
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
61
|
+
// Remote plugin enablement is account-backed, not necessarily in config.toml.
|
|
62
|
+
const result = await run('codex', ['plugin', 'list', '--json']);
|
|
63
|
+
if (result.code !== 0)
|
|
64
|
+
throw new Error(result.stderr || result.stdout);
|
|
65
|
+
const installed = JSON.parse(result.stdout).installed;
|
|
66
|
+
if (!Array.isArray(installed))
|
|
67
|
+
throw new Error('Invalid Codex plugin inventory');
|
|
68
|
+
const plugin = selectCodexSuperpowers({ installed: installed.filter((item) => item.installed === true && item.enabled === true) });
|
|
69
|
+
const root = path.join(cacheRoot, plugin.marketplaceName, 'superpowers', plugin.version);
|
|
70
|
+
const missing = REQUIRED_CODEX_SUPERPOWER_SKILLS.filter((skill) => !hasCodexSuperpowerSkill(skill, root));
|
|
71
|
+
return { plugin, missing };
|
|
52
72
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (!isCodexSuperpowersEnabled()) {
|
|
56
|
-
return [...REQUIRED_CODEX_SUPERPOWER_SKILLS];
|
|
73
|
+
catch (error) {
|
|
74
|
+
return { missing: [...REQUIRED_CODEX_SUPERPOWER_SKILLS], error: error.message };
|
|
57
75
|
}
|
|
58
|
-
return REQUIRED_CODEX_SUPERPOWER_SKILLS.filter((skill) => !hasCodexSuperpowerSkill(skill));
|
|
59
76
|
}
|
|
60
77
|
function alreadyInstalled(output) {
|
|
61
78
|
return /already\s+(installed|exists)|is\s+already\s+installed|already\s+added/i.test(output);
|
|
@@ -118,23 +135,38 @@ export async function installSuperpowers() {
|
|
|
118
135
|
* 它是 verify 阶段的硬依赖;已装视为成功,安装失败必须阻止初始化或更新。
|
|
119
136
|
*/
|
|
120
137
|
export async function installCodexSuperpowers(verifySkills = false) {
|
|
121
|
-
|
|
122
|
-
'plugin',
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
138
|
+
try {
|
|
139
|
+
const catalog = await runCommand('codex', ['plugin', 'list', '--available', '--json']);
|
|
140
|
+
if (catalog.code !== 0)
|
|
141
|
+
return { ok: false, error: catalog.stderr || catalog.stdout };
|
|
142
|
+
const plugin = selectCodexSuperpowers(JSON.parse(catalog.stdout));
|
|
143
|
+
const result = await runCommand('codex', ['plugin', 'add', plugin.pluginId, '--json']);
|
|
144
|
+
if (result.code !== 0)
|
|
145
|
+
return { ok: false, error: result.stderr || result.stdout };
|
|
146
|
+
const installed = JSON.parse(result.stdout);
|
|
147
|
+
if (installed.pluginId !== plugin.pluginId || !/^\d+\.\d+\.\d+$/.test(installed.version ?? '') ||
|
|
148
|
+
compareVersions(installed.version, plugin.version) < 0) {
|
|
149
|
+
return { ok: false, error: `Superpowers installation did not confirm ${plugin.pluginId}@${plugin.version}` };
|
|
150
|
+
}
|
|
151
|
+
return verifiedCodexSuperpowers(verifySkills);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
return { ok: false, error: error.message };
|
|
131
155
|
}
|
|
132
|
-
return verifiedCodexSuperpowers(verifySkills);
|
|
133
156
|
}
|
|
134
|
-
function
|
|
157
|
+
export async function updateClaudeSuperpowers() {
|
|
158
|
+
const installed = await installSuperpowers();
|
|
159
|
+
if (!installed.ok)
|
|
160
|
+
return installed;
|
|
161
|
+
const result = await runCommand('claude', ['plugin', 'update', 'superpowers@superpowers-marketplace']);
|
|
162
|
+
return result.code === 0 ? { ok: true } : { ok: false, error: result.stderr || result.stdout };
|
|
163
|
+
}
|
|
164
|
+
async function verifiedCodexSuperpowers(verifySkills) {
|
|
135
165
|
if (!verifySkills)
|
|
136
166
|
return { ok: true };
|
|
137
|
-
const missing =
|
|
167
|
+
const { missing, error } = await inspectCodexSuperpowers();
|
|
168
|
+
if (error)
|
|
169
|
+
return { ok: false, error };
|
|
138
170
|
if (missing.length === 0)
|
|
139
171
|
return { ok: true };
|
|
140
172
|
return { ok: false, error: `required skills missing: ${missing.join(', ')}` };
|
package/dist/domains/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/domains/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,IAAI,EAAE,EACd,
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/domains/deps.ts"],"names":[],"mappings":"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"}
|
package/dist/domains/state.js
CHANGED
|
@@ -50,4 +50,68 @@ export function initState(version, _agent, language = 'zh') {
|
|
|
50
50
|
previousVersion: null,
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
+
function isManagedProjectEntry(value) {
|
|
54
|
+
if (!value || typeof value !== 'object')
|
|
55
|
+
return false;
|
|
56
|
+
const entry = value;
|
|
57
|
+
return typeof entry.root === 'string' && entry.root.length > 0
|
|
58
|
+
&& Array.isArray(entry.agents)
|
|
59
|
+
&& (entry.scope === 'global' || entry.scope === 'project')
|
|
60
|
+
&& Array.isArray(entry.hooks)
|
|
61
|
+
&& typeof entry.registeredAt === 'string';
|
|
62
|
+
}
|
|
63
|
+
/** 读取受管项目清单;缺失/损坏按空清单处理并通过 warn 上报,不抛错。 */
|
|
64
|
+
export function readManagedProjects(state, warn = () => { }) {
|
|
65
|
+
const managed = state?.managedProjects;
|
|
66
|
+
if (!managed)
|
|
67
|
+
return [];
|
|
68
|
+
if (!Array.isArray(managed.projects)) {
|
|
69
|
+
warn('managedProjects format invalid; treating as empty list');
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
const projects = [];
|
|
73
|
+
for (const raw of managed.projects) {
|
|
74
|
+
if (isManagedProjectEntry(raw)) {
|
|
75
|
+
projects.push(raw);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
warn('managedProjects contains an invalid entry; skipping it');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return projects;
|
|
82
|
+
}
|
|
83
|
+
/** 登记或更新受管项目(按 root 幂等去重)。 */
|
|
84
|
+
export function upsertManagedProject(state, entry) {
|
|
85
|
+
if (!state.managedProjects || !Array.isArray(state.managedProjects.projects)) {
|
|
86
|
+
state.managedProjects = { projects: [] };
|
|
87
|
+
}
|
|
88
|
+
const existing = state.managedProjects.projects.find((p) => p.root === entry.root);
|
|
89
|
+
if (existing) {
|
|
90
|
+
Object.assign(existing, entry);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
state.managedProjects.projects.push(entry);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** 按 root 移除受管项目;root 不存在时无副作用。 */
|
|
97
|
+
export function removeManagedProject(state, root) {
|
|
98
|
+
const projects = state.managedProjects?.projects;
|
|
99
|
+
if (!Array.isArray(projects))
|
|
100
|
+
return;
|
|
101
|
+
state.managedProjects.projects = projects.filter((p) => p.root !== root);
|
|
102
|
+
}
|
|
103
|
+
/** 遍历清单:目录存在的进 targets,目录已消失的进 staleRoots(由调用方移除条目)。 */
|
|
104
|
+
export function collectManagedProjectTargets(projects) {
|
|
105
|
+
const targets = [];
|
|
106
|
+
const staleRoots = [];
|
|
107
|
+
for (const project of projects) {
|
|
108
|
+
if (existsSync(project.root)) {
|
|
109
|
+
targets.push(project);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
staleRoots.push(project.root);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return { targets, staleRoots };
|
|
116
|
+
}
|
|
53
117
|
//# sourceMappingURL=state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/domains/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/domains/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,IAAI,MAAM,MAAM,CAAC;AASxB,MAAM,gBAAgB,GAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;QACpD,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,oBAAoB,CAAC,MAAkB,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAe;IAC3C,MAAM,aAAa,GAAG,GAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACpF,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,aAAa,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAe;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAa,EAAE,WAAqB,IAAI;IACjF,MAAM,aAAa,GAAkB,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5E,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,QAAQ;QACR,cAAc,EAAE,EAAE;QAClB,SAAS,EAAE;YACT,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE;YAC5B,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE;SAC5B;QACD,OAAO,EAAE;YACP,aAAa,EAAE,EAAE;YACjB,MAAM,EAAE,EAAE;SACX;QACD,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,KAAqC,CAAC;IACpD,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;WACzD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;WAC3B,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;WACvD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;WAC1B,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC;AAC9C,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,mBAAmB,CACjC,KAAsB,EACtB,OAAkC,GAAG,EAAE,GAAE,CAAC;IAE1C,MAAM,OAAO,GAAG,KAAK,EAAE,eAAqD,CAAC;IAC7E,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,oBAAoB,CAAC,KAAe,EAAE,KAA0B;IAC9E,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7E,KAAK,CAAC,eAAe,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,oBAAoB,CAAC,KAAe,EAAE,IAAY;IAChE,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO;IACrC,KAAK,CAAC,eAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,4BAA4B,CAAC,QAA+B;IAI1E,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC"}
|