@haaaiawd/loom 1.3.1 → 2.0.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/CHANGELOG.md +11 -86
- package/CONTRIBUTING.md +37 -0
- package/EVIL_EVAL.md +112 -0
- package/README.md +193 -445
- package/README.zh-CN.md +174 -0
- package/SECURITY.md +11 -0
- package/cli/bin/loom.js +171 -998
- package/cli/src/protocol.js +367 -0
- package/cli/src/store.js +626 -0
- package/design.md +194 -0
- package/docs/PROMPT_CATALOG.md +99 -0
- package/docs/RELEASE_CHECKLIST.md +53 -0
- package/docs/UX_FLOW.md +171 -0
- package/docs/brand/loom-mark.svg +18 -0
- package/docs/brand/loom-readme-header.svg +34 -0
- package/docs/brand/loom-readme-header.zh-CN.svg +29 -0
- package/docs/loom-eval-loop.drawio +21 -0
- package/docs/loom-eval-loop.svg +56 -0
- package/docs/loom-production-loop.drawio +41 -0
- package/docs/loom-production-loop.svg +92 -0
- package/package.json +43 -40
- package/EXTERNAL_ACQUISITION_DESIGN.md +0 -143
- package/cli/help/asset.md +0 -36
- package/cli/help/atelier.md +0 -37
- package/cli/help/atlas.md +0 -48
- package/cli/help/capability.md +0 -118
- package/cli/help/concepts.md +0 -105
- package/cli/help/doctor.md +0 -80
- package/cli/help/expertise.md +0 -52
- package/cli/help/loop.md +0 -134
- package/cli/help/patch.md +0 -33
- package/cli/help/proposals.md +0 -21
- package/cli/help/version.md +0 -136
- package/cli/help/workflow.md +0 -116
- package/cli/src/activate.js +0 -505
- package/cli/src/asset-library.js +0 -384
- package/cli/src/atelier.js +0 -331
- package/cli/src/atlas.js +0 -282
- package/cli/src/auto.js +0 -116
- package/cli/src/capability-graph.js +0 -724
- package/cli/src/capability-proposals.js +0 -225
- package/cli/src/diagnostics.js +0 -859
- package/cli/src/expertise-pack.js +0 -336
- package/cli/src/guide.js +0 -548
- package/cli/src/help.js +0 -41
- package/cli/src/init.js +0 -187
- package/cli/src/intent-draft.js +0 -303
- package/cli/src/intent-map.js +0 -747
- package/cli/src/patch.js +0 -214
- package/cli/src/philosophy.js +0 -331
- package/cli/src/shared/intent-ref.js +0 -38
- package/cli/src/shared/md-utils.js +0 -125
- package/cli/src/shared/paths.js +0 -73
- package/cli/src/shared/proof-reference.js +0 -19
- package/cli/src/shared/verification-method.js +0 -32
- package/cli/src/verify.js +0 -394
- package/cli/src/version.js +0 -134
- package/dimensions/AUTHORSHIP.md +0 -45
- package/dimensions/PART_DECOMPOSITION.md +0 -42
- package/dimensions/SEARCH_METHODOLOGY.md +0 -101
- package/dimensions/examples/AGENT_SYSTEM/README.md +0 -219
- package/dimensions/examples/CLI_TOOL/README.md +0 -163
- package/dimensions/universal/COLLABORATION_PHILOSOPHY.md +0 -28
- package/dimensions/universal/ENGINEERING_CREED.md +0 -30
- package/dimensions/universal/PRODUCT_PHILOSOPHY.md +0 -32
- package/meta/BASELINE.md +0 -91
- package/meta/INTENT_LOOP.md +0 -296
- package/meta/PHILOSOPHY_WEAVER.md +0 -110
- package/meta/ROLE_ACTIVATION.md +0 -114
- package/roles/architect.md +0 -92
- package/roles/forge.md +0 -110
- package/roles/impact-reviewer.md +0 -37
- package/roles/keeper.md +0 -113
- package/roles/visionary.md +0 -57
- package/templates/ASSET_LIBRARY_MANIFEST_TEMPLATE.json +0 -10
- package/templates/ATELIER_RECORD_TEMPLATE.json +0 -48
- package/templates/ATLAS_TEMPLATE.html +0 -104
- package/templates/CAPABILITY_BRIEF_TEMPLATE.md +0 -36
- package/templates/CAPABILITY_GRAPH_EXAMPLE.json +0 -188
- package/templates/CAPABILITY_GRAPH_TEMPLATE.json +0 -78
- package/templates/EXPERTISE_PACK_TEMPLATE.json +0 -22
- package/templates/INTENT_MAP_TEMPLATE.json +0 -85
- package/templates/PHILOSOPHY_TEMPLATE.md +0 -44
- package/templates/VISION_TEMPLATE.md +0 -44
package/cli/src/auto.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
// auto — AUTO 模式开关 + 心跳机制
|
|
2
|
-
// 存储机制:.loom/auto 文件内容 = 模式名(auto-loop / auto-design),不存在 = manual
|
|
3
|
-
// 心跳:每次 guide 调用时写 .loom/heartbeat.json(时间戳 + stage + next_command)
|
|
4
|
-
//
|
|
5
|
-
// 三种模式:
|
|
6
|
-
// manual — 每步停,所有阶段需人类 review
|
|
7
|
-
// auto-loop — 只 Intent Loop(stage 4+)自动,stage 1-3 仍需人类 review(默认)
|
|
8
|
-
// auto-design — 哲学/愿景/架构也自动,全部阶段不需人类 review
|
|
9
|
-
|
|
10
|
-
import { existsSync, writeFileSync, unlinkSync, readFileSync } from 'node:fs';
|
|
11
|
-
import { join } from 'node:path';
|
|
12
|
-
|
|
13
|
-
const VALID_MODES = ['auto-loop', 'auto-design'];
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 读取 .loom/auto 文件内容,返回模式名。
|
|
17
|
-
* 向后兼容:空文件 / 旧时间戳 / 未知内容 → auto-loop
|
|
18
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
19
|
-
* @returns {string} 'manual' | 'auto-loop' | 'auto-design'
|
|
20
|
-
*/
|
|
21
|
-
export function getAutoMode(loomRoot) {
|
|
22
|
-
const path = join(loomRoot, 'auto');
|
|
23
|
-
if (!existsSync(path)) return 'manual';
|
|
24
|
-
const content = readFileSync(path, 'utf-8').trim();
|
|
25
|
-
if (VALID_MODES.includes(content)) return content;
|
|
26
|
-
return 'auto-loop'; // 旧格式兼容
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* 检查 AUTO 模式是否开启(非 manual)。
|
|
31
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
32
|
-
* @returns {boolean}
|
|
33
|
-
*/
|
|
34
|
-
export function isAutoOn(loomRoot) {
|
|
35
|
-
return getAutoMode(loomRoot) !== 'manual';
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* 开启 AUTO 模式。
|
|
40
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
41
|
-
* @param {string} mode — 'auto-loop' | 'auto-design'
|
|
42
|
-
*/
|
|
43
|
-
export function autoOn(loomRoot, mode = 'auto-loop') {
|
|
44
|
-
if (!VALID_MODES.includes(mode)) {
|
|
45
|
-
throw new Error(`非法 AUTO 模式: "${mode}" (合法: ${VALID_MODES.join(' | ')})`);
|
|
46
|
-
}
|
|
47
|
-
writeFileSync(join(loomRoot, 'auto'), mode, 'utf-8');
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* 关闭 AUTO 模式(切换到 manual)。
|
|
52
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
53
|
-
*/
|
|
54
|
-
export function autoOff(loomRoot) {
|
|
55
|
-
const path = join(loomRoot, 'auto');
|
|
56
|
-
if (existsSync(path)) unlinkSync(path);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* 获取 AUTO 状态描述。
|
|
61
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
62
|
-
* @returns {{ mode: string, heartbeat: object|null }}
|
|
63
|
-
*/
|
|
64
|
-
export function autoStatus(loomRoot) {
|
|
65
|
-
const mode = getAutoMode(loomRoot);
|
|
66
|
-
const heartbeat = readHeartbeat(loomRoot);
|
|
67
|
-
return { mode, heartbeat };
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* 写入心跳——每次 guide 调用时记录当前状态。
|
|
72
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
73
|
-
* @param {{ stage: string, stage_num: number, next_command: string, next_action: string }} info
|
|
74
|
-
*/
|
|
75
|
-
export function writeHeartbeat(loomRoot, info) {
|
|
76
|
-
const heartbeat = {
|
|
77
|
-
timestamp: new Date().toISOString(),
|
|
78
|
-
stage: info.stage,
|
|
79
|
-
stage_num: info.stage_num,
|
|
80
|
-
next_command: info.next_command,
|
|
81
|
-
next_action: info.next_action,
|
|
82
|
-
};
|
|
83
|
-
writeFileSync(join(loomRoot, 'heartbeat.json'), JSON.stringify(heartbeat, null, 2), 'utf-8');
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* 读取心跳。
|
|
88
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
89
|
-
* @returns {object|null}
|
|
90
|
-
*/
|
|
91
|
-
export function readHeartbeat(loomRoot) {
|
|
92
|
-
const path = join(loomRoot, 'heartbeat.json');
|
|
93
|
-
if (!existsSync(path)) return null;
|
|
94
|
-
try {
|
|
95
|
-
return JSON.parse(readFileSync(path, 'utf-8'));
|
|
96
|
-
} catch {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* 判断当前阶段是否需要人类 review。
|
|
103
|
-
* manual:全部需 review
|
|
104
|
-
* auto-loop:stage 1-3 需 review,stage 4+ 自动
|
|
105
|
-
* auto-design:全部自动
|
|
106
|
-
* @param {string} loomRoot — .loom 目录路径
|
|
107
|
-
* @param {number} stageNum — 阶段号
|
|
108
|
-
* @returns {boolean} 是否需要人类 review
|
|
109
|
-
*/
|
|
110
|
-
export function needsHumanReview(loomRoot, stageNum) {
|
|
111
|
-
const mode = getAutoMode(loomRoot);
|
|
112
|
-
if (mode === 'manual') return true;
|
|
113
|
-
if (mode === 'auto-design') return false;
|
|
114
|
-
// auto-loop:stage 1-3 需 review,stage 4+ 自动
|
|
115
|
-
return stageNum > 0 && stageNum < 4;
|
|
116
|
-
}
|