@dommaker/harness 1.8.0 → 1.8.1
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 +8 -1
- package/dist/cli/commands/check.d.ts +8 -0
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +10 -11
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/status.d.ts +8 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +5 -7
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/state-io.d.ts +34 -0
- package/dist/cli/state-io.d.ts.map +1 -0
- package/dist/cli/state-io.js +71 -0
- package/dist/cli/state-io.js.map +1 -0
- package/dist/hooks/pipeline.d.ts +19 -1
- package/dist/hooks/pipeline.d.ts.map +1 -1
- package/dist/hooks/pipeline.js +40 -0
- package/dist/hooks/pipeline.js.map +1 -1
- package/dist/hooks/types.d.ts +2 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/CONTEXT.md +1 -1
- package/src/cli/__tests__/state-io.test.ts +50 -0
- package/src/cli/commands/CONTEXT.md +1 -0
- package/src/cli/commands/__tests__/check-read-count.test.ts +3 -0
- package/src/cli/commands/__tests__/check.test.ts +20 -8
- package/src/cli/commands/__tests__/status-extra.test.ts +25 -8
- package/src/cli/commands/__tests__/status.test.ts +46 -18
- package/src/cli/commands/check.ts +20 -18
- package/src/cli/commands/status.ts +12 -7
- package/src/cli/state-io.ts +53 -0
- package/src/hooks/CONTEXT.md +1 -1
- package/src/hooks/__tests__/pipeline.test.ts +105 -0
- package/src/hooks/pipeline.ts +47 -0
- package/src/hooks/types.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,9 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
## [1.8.
|
|
9
|
+
## [1.8.1] - 2026-09-17
|
|
10
10
|
|
|
11
11
|
### Changes
|
|
12
|
+
- feat(hooks): `HookPipeline` 新增 `runOne(name, context)`——按名执行单个 hook 的公共入口(#167,#159 的 studio 侧随动遗留;票下 grilling 裁决 Q1–Q6)——原缺口:管线执行粒度是**时机**(`run(phase)` 一次跑该时机全部 enabled hook),consumer 按名直调单个函数的场景(studio 唯一生产调用点)无入口可委托,`enabled` / env 开关在直调路径上不配不生效。落地:方法挂在已导出类 `HookPipeline` 上,采样与错误隔离复用 `executeOne` 单路径(判定与错误策略的实现体只有一份),enabled / errorStrategy 值来源仍是注册环节填充的 `EffectiveHook`(唯一声明点 HookConfig,#159)。语义三面(裁决 Q2/Q3/Q5):`enabled:false` → 实现体零调用、返回 `skipped:true / passed:true` 记录(`HookExecutionRecord` 加性新字段,镜像 `sampled` 先例:未执行 = 记录上一面旗);`errorStrategy:'block'` 且失败(实现体抛或返回 `passed:false`)→ 抛裸 `Error`,message 形如 `[harness] hook "<name>" blocked: <原文>`(不新设 `HookBlockedError`,裁决明确不做);`'warn'` 且失败 → resolve、返回 `passed:false` 带 `error` 的记录;未知 hook 名 → 抛错(与 `assertHookRegistryClosed` 闭环口径一致,拒绝静默缺失)。**对外行为变化 1 处**(定级**非 breaking / minor**,ADR-0022 加性判据):已导出类加一个方法、已冻结类型加一个可选字段,无符号增删——`public-exports` / `public-type-surface` / `public-value-surface` 三套闸清单零变更(裁决预期核实成立)。测试:`src/hooks/__tests__/pipeline.test.ts` 新增「runOne 按名执行」describe 7 项——反证三形各一条(enabled:false 零调用 + skipped 记录;block 实现体抛 / 返回 passed:false 两形均抛且 message 含 hook 名与原文;warn 失败 resolve 且记录 passed:false 带 error)、未知名抛错、sampleRate 采样语义与 `run` 路径一致(未抽中零调用 + sampled 记录、抽中执行)。**先红后绿**:实现前 TS2339「runOne 不存在」令套件红。文档:`src/hooks/CONTEXT.md` 核心导出行补 `runOne` 与 `skipped` 语义。studio 侧随动(删本地判定读取点、委托 `runOne`)另开下游票,本仓发版后执行(照 #159 拆分模式)。
|
|
13
|
+
- feat(cli): 新立可注入状态文件接缝 `StateIO`,收编 `.harness/.state.json` 全部读写并修复智能提示去重失效(#148,#140 C 票;决策 ADR-0026)——原状两个写者裸调同步 `fs`、无注入缝,且 `status` 不读就整文件重写,把 `check` 写入的 `shownHints` 抹掉,「记录已足够,运行 harness status 查看统计」提示的「首次达到阈值」去重机制因此实面失效(每两次 `check` 夹一次 `status` 就再响一次)。落地:新增 `src/cli/state-io.ts`(cli 层,不进包根导出面,零公共面变化)——`HarnessState` 具名类型(`shownHints?` / `lastStatusRun?`;凭想象留下的 `lastDiagnoseRun` 按 ADR-0022 口径删除,旧落盘文件残留该键无害不迁移)、`StateIO` 接口(`read()` 文件缺失/空返 `{}` / 损坏照现状抛 / `write()`)、缺省真实 fs 实现 `fileStateIO(projectPath)`(状态文件路径知识单点化);`check` / `status` 两命令加**可选** `stateIO` 注入参数(照 `CommandIO` 模式,不扩 `CommandIO`、不动 `RunEnv` 只读契约),写语义统一为**读-改-写**。**对外行为变化 2 处**(均定级**非 breaking / patch**,ADR-0022 判据同 #138「恢复的是声明语义、修掉的是缺陷状态」先例):① 智能提示去重从此真生效——`shownHints` 跨 `status` 存活,提示出现频次由「夹一次 status 再响一次」恢复为设计口径「首次达到阈值一次」;② `.state.json` 损坏时 `harness status` 由「不读直接整文件覆盖重写」变为 `JSON.parse` 抛错(读-改-写决策 2 与「损坏抛即抛不兜底」决策 4 的合并后果,ADR-0026 已裁;`check` 侧原本就是这语义,未变);命令语法、输出文案、退出码、`.state.json` 路径与键名零变化。测试:状态相关用例全部改经注入内存假件、不再碰真文件系统(`check.test.ts` 智能提示组、`status.test.ts` 全部调用点);`status.test.ts` 新增「读-改-写:shownHints 不被抹掉」用例(**反证已做**:退回整文件重写该例转红并还原);计数闸 `check-read-count.test.ts` 夹具补 `.harness/.state.json`、冻结表新增「一次 check 运行内状态文件恰读一次」行(**反证已做**:`fileStateIO.read` 改双读 → 冻结表与「至多读一次」两例同红并还原)。文档:`src/CONTEXT.md` StateIO 条目由「代码未落」改为落地口径。
|
|
14
|
+
|
|
15
|
+
## [1.8.0] - 2026-09-16
|
|
16
|
+
|
|
12
17
|
### BREAKING
|
|
13
18
|
发版前只看这一节即可拿到本车全部 breaking 判定(#162 复审遗留项 5 设立;细节与迁移路径见 `### Changes` 对应条目):
|
|
14
19
|
- **#134 ①**:包根公开类 `KnowledgeAudit` 构造签名由 `new KnowledgeAudit({ baseDir, … })` 变为 `new KnowledgeAudit(store, { 阈值 })`(`AuditOptions` 去掉 `baseDir` 与 `autoFix`)。
|
|
@@ -16,6 +21,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
|
16
21
|
- **#135**:包根公开类型 `CommandGateConfig` 收缩两字段(`strict` / `customBlacklist` 删除,现只剩 `ignoreCategories`)、`harness command` 删除 `--strict` 选项;多重命中输入上 `harness command --level` 报告的等级可能由低变高(与同一条目的裁决一致)。
|
|
17
22
|
- **#159**(晚于本批复审批次,同车 breaking,一并汇总以免漏级):包根公开类型 `HookDefinition` 收缩 `enabled` / `errorStrategy` 两字段、`HookErrorStrategy` 取值收窄为 `'block' | 'warn'`、`HookRegistry.register` / `registerAll` 签名变化(配置表成为必填配对)、`bootstrapHarness` / `bootstrapHarnessSync` 加第三参 `hookConfigs`。
|
|
18
23
|
发布级别随本车 ship 时统一裁决,判据同 ADR-0022 / ADR-0024「breaking 内容按 minor 号发布」先例。
|
|
24
|
+
|
|
25
|
+
### Changes
|
|
19
26
|
- fix(knowledge): 三处声明与执法背离对齐正本——absent 静默跳过、外部 marking 接线、rule 降级边界取 <=(#161,commit `c9e42cf`;本条为 #164 复审遗留项 1 的补记——该 commit 落地时 Unreleased 无条目,同批 #154/#156/#157/#159/#163 均带,本票独缺)——① `migrateKnowledgeEntries`:frontmatter 缺失('absent')的 .md 不再写入 `result.errors`(`no frontmatter found` 假阳性),按 #89 裁决 2 的非条目语义改计 `skipped`,`MigrationResult` 形状不变;② `KnowledgeInjector`:`origin === 'external'` 条目的注入与格式化输出带 `EXTERNAL_SOURCE_MARKER` 前缀——三层防御第二层 retrieval marking 此前只有声明未接线,本票接通,标记唯一正本收在 `knowledge/query.ts` 并与 `formatForPrompt` 共用,注入 metadata 增 `origin` 字段;③ lifecycle rule 降级条件由 `<` 改 `<=`——成功率恰 0.5(失败率 >= 50%)的 rule 条目由不降级变为降级,与方法注释/CONTEXT.md 的既有声明一致。**对外行为变化 3 处**(定级**非 breaking / patch**,ADR-0022 判据同 #138「恢复的是声明语义、修掉的是缺陷状态」先例):三处均把可观察行为对齐到已声明口径——公开符号零删除、签名零变化,`EXTERNAL_SOURCE_MARKER` 为加性导出;受影响的只有依赖旧误报(errors 里的 absent 条目)与旧边界(恰 50% 不降级)的用法。测试:migration / knowledge-injector / lifecycle 三套件各补边界反证用例(absent 计 skipped 不进 errors、external 条目带标记、恰 50% 触发降级),随 commit `c9e42cf` 同车落地。
|
|
20
27
|
- chore(cleanup+perf): 复审遗留项合并票的代码面两项(#162,ticket-loop #134–#147 统一复审)——① `utils/exec.ts` 删 `runCommand()`:#137 头注记它「有生产消费者」实为两处**注释**引用,非测试代码调用点为 0 且不在包公共面(`src/index.ts` 与五个 exports 入口均无),按 ADR-0022 同判据删除(`execAsync` 保留,判据与头注全文见 `src/__tests__/exec.test.ts`);② `spec-baseline-check` 共享索引加驻留上限 `SOURCE_INDEX_MAX_ENTRIES = 5000` / `SOURCE_INDEX_MAX_BYTES = 64MB`,超任一上限即放弃驻留、回落逐文件流式读——峰值内存由 O(全仓源码) 回到 O(单文件),正常规模仓保留 #146「一次遍历」收益(本仓 146 个源文件的规模测不出大仓峰值,故走上限+回落而非折叠重构)。**对外行为变化 0 处**(非 breaking):判定、证据文案、stdout、退出码、包公共面零变化;`runCommand` 外部不可达故零迁移成本。测试:`exec.test.ts` 收缩记录改写(`runCommand` 列入已删名单,`@ts-expect-error` + 运行时键双钉);新增 `spec-baseline-index-cap.test.ts` 4 项驻留上界闸(上限内驻留重放每文件至多读一遍、超条目/字节上限回落流式且判定不变——反证已做:摘掉回落分支 2 例转红并还原)。文档:`src/cli/commands/CONTEXT.md` 记名回落路径。
|
|
21
28
|
- refactor(hooks)!: `HookConfig` 成为 `enabled` / `errorStrategy` 唯一声明点——`HookDefinition` 删除同名字段,注册环节由配置表填充有效值(#159,harness#142 核对出的「同一语义两处声明」根治票,triage 裁路线 1 配置表唯一化)——原缺陷:配置表两字段为必填却零读取点,执行链只读 `HookDefinition` 同名字段,`assertHookRegistryClosed` 只按 `name` 配对,consumer 写 `{ enabled: false, errorStrategy: 'block' }` 而注册定义是 `{ errorStrategy: 'warn' }` 时 hook 照样执行、按 warn 继续,闭环断言全绿。落地:`HookDefinition` 类型上不再有 `enabled` / `errorStrategy`(编译期 `@ts-expect-error` 双钉冻结新形状);`HookRegistry.register(hook, config)` 注册即配对(名称不一致 / `registerAll` 有实现缺配置声明均抛错),填充出 `EffectiveHook`(新公开类型 = 定义 + 有效 enabled / errorStrategy),`getEnabled` / `get` / `listAll` 返回它,管线 block/warn 分派与启用过滤的判定语义不变、只换值来源;`bootstrapHarness` / `bootstrapHarnessSync` 加第三参 `hookConfigs`,给定义不给配置表即抛错。有效策略集合收敛为 `'block' | 'warn'`——`HookErrorStrategy` 收窄、原 `'ignore'` 与「未声明 strategy 静默跳过」形态退出有效面(仓内核实零生产消费者,唯一引用是一份测试,已随新形状重写);`toErrorStrategy` 语义不变、返回类型随收窄。studio 侧随动(`callHook` 自建判定层拆除、委托 harness 管线)另开下游票,须在本仓发版后执行。**对外行为变化**(**breaking**,发布级别随本车 ship 时裁决,判据同 ADR-0022 / ADR-0024「breaking 内容按 minor 号发布」先例):包根公开类型 `HookDefinition` 收缩两必填语义词字段、`HookErrorStrategy` 取值收窄、`HookRegistry.register`/`registerAll` 签名变化(配置表成为必填配对)、`bootstrapHarness*` 加参;迁移路径 = 把定义上的 `enabled` / `errorStrategy` 挪进 `HookConfig` 声明表并随注册传入。测试:`src/hooks/__tests__/registry.test.ts` 新增「注册即配对」4 项(配置填充有效值、名称不一致抛错、缺声明抛错、编译期钉)、`pipeline.test.ts` 改写为配置驱动并新增「配置 enabled:false 不进管线」反证、`bootstrap.test.ts` 补「给定义不给表即抛错」×2、`src/__tests__/hooks-pipeline.test.ts` 全量改用新 API(原 'ignore' 用例随有效面收缩删除)、`public-type-surface.test.ts` 类型清单 +`EffectiveHook`。**先红后绿**:新测试对旧实现全红(TS2554 签名不匹配 + 行为断言失败)。文档:`src/hooks/CONTEXT.md` 已知偏差条删除、「配置归一/唯一真相」表述改为与实现一致。
|
|
@@ -11,6 +11,7 @@ import { type GitEvidence } from '../../core/constraints/git-evidence';
|
|
|
11
11
|
import { type RunEnv } from '../../core/constraints/run-env';
|
|
12
12
|
import type { ConstraintTrigger } from '../../types/constraint';
|
|
13
13
|
import { type CommandIO, type CommandResult } from '../command-contract';
|
|
14
|
+
import { type StateIO } from '../state-io';
|
|
14
15
|
export interface CheckOptions {
|
|
15
16
|
/** 预设名称;**不传 = 按项目 `.harness/config.yml` 的 preset**(CLI 不给缺省值,见 commands/definitions.ts) */
|
|
16
17
|
preset?: string;
|
|
@@ -34,6 +35,13 @@ export interface CheckOptions {
|
|
|
34
35
|
* 测试据此断言「同一次运行内同一项目文件至多读一次」。
|
|
35
36
|
*/
|
|
36
37
|
runEnv?: RunEnv;
|
|
38
|
+
/**
|
|
39
|
+
* 状态文件接缝(非 CLI flag;ADR-0026)
|
|
40
|
+
*
|
|
41
|
+
* 缺省 = 真实 fs 实现(fileStateIO)。注入则 `.harness/.state.json` 的读写
|
|
42
|
+
* 走替身,测试据此不碰真文件系统。
|
|
43
|
+
*/
|
|
44
|
+
stateIO?: StateIO;
|
|
37
45
|
}
|
|
38
46
|
/**
|
|
39
47
|
* 执行约束检查
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAM3E,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAkB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AA4BxD,MAAM,WAAW,YAAY;IAC3B,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,YAAY,EACrB,EAAE,GAAE,SAAqB,GACxB,OAAO,CAAC,aAAa,CAAC,CAyJxB;AA6CD;;GAEG;AACH,yDAAyD;AACzD,wBAAgB,QAAQ,CAAC,QAAQ,GAAE,OAAO,CAAC,YAAY,CAAM,EAAE,EAAE,GAAE,SAAqB,GAAG,aAAa,CA8BvG"}
|
|
@@ -48,7 +48,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
48
48
|
exports.check = check;
|
|
49
49
|
exports.listLaws = listLaws;
|
|
50
50
|
const chalk_1 = __importDefault(require("chalk"));
|
|
51
|
-
const fs = __importStar(require("fs"));
|
|
52
51
|
const path = __importStar(require("path"));
|
|
53
52
|
const checker_1 = require("../../core/constraints/checker");
|
|
54
53
|
const definitions_1 = require("../../core/constraints/definitions");
|
|
@@ -62,6 +61,7 @@ const traces_1 = require("../../monitoring/traces");
|
|
|
62
61
|
const jsonl_1 = require("../../utils/jsonl");
|
|
63
62
|
const trace_1 = require("../../types/trace");
|
|
64
63
|
const command_contract_1 = require("../command-contract");
|
|
64
|
+
const state_io_1 = require("../state-io");
|
|
65
65
|
/** 证据行着色(与调用处所属结论块一致) */
|
|
66
66
|
const EVIDENCE_PAINT = {
|
|
67
67
|
red: chalk_1.default.red,
|
|
@@ -92,6 +92,7 @@ async function check(options, io = command_contract_1.processIO) {
|
|
|
92
92
|
// 一次 run 一份证据与观察面(#87 / ADR-0023):入口构造,沿生效集、context、checker 向下传
|
|
93
93
|
const evidence = options.evidence ?? (0, git_evidence_1.createGitEvidence)(projectPath);
|
|
94
94
|
const runEnv = options.runEnv ?? (0, run_env_1.createRunEnv)(projectPath);
|
|
95
|
+
const stateIO = options.stateIO ?? (0, state_io_1.fileStateIO)(projectPath);
|
|
95
96
|
// 生效约束集(ADR-0001):内置 → preset → config.yml 禁用 → custom 追加 → scenes 过滤。
|
|
96
97
|
// --preset 仅在没有项目自定义配置时覆盖 config.yml 的 preset(工单 23 语义:
|
|
97
98
|
// 项目自定义配置优先于 CLI 预设),优先级规则收在 getMergedConstraintsConfig 一处。
|
|
@@ -211,7 +212,7 @@ async function check(options, io = command_contract_1.processIO) {
|
|
|
211
212
|
(0, command_contract_1.log)(io);
|
|
212
213
|
(0, command_contract_1.log)(io, chalk_1.default.green('✅ 约束检查通过'));
|
|
213
214
|
// 智能提示
|
|
214
|
-
const hint = await getSmartHint(projectPath);
|
|
215
|
+
const hint = await getSmartHint(projectPath, stateIO);
|
|
215
216
|
if (hint) {
|
|
216
217
|
(0, command_contract_1.log)(io);
|
|
217
218
|
(0, command_contract_1.log)(io, chalk_1.default.gray('────────────────────────────────────'));
|
|
@@ -230,10 +231,12 @@ async function check(options, io = command_contract_1.processIO) {
|
|
|
230
231
|
const TRACE_HINT_THRESHOLD = 50;
|
|
231
232
|
/**
|
|
232
233
|
* 智能提示:检查是否需要提示用户下一步操作
|
|
234
|
+
*
|
|
235
|
+
* 状态读写经 StateIO(ADR-0026):读-改-写,`status` 不再把 `shownHints` 抹掉,
|
|
236
|
+
* 「首次达到阈值」的去重自此真生效。
|
|
233
237
|
*/
|
|
234
|
-
async function getSmartHint(projectPath) {
|
|
238
|
+
async function getSmartHint(projectPath, stateIO) {
|
|
235
239
|
const tracesPath = path.join(projectPath, trace_1.DEFAULT_TRACE_FILE);
|
|
236
|
-
const statePath = path.join(projectPath, '.harness', '.state.json');
|
|
237
240
|
// 只读够 TRACE_HINT_THRESHOLD 行即停(坏行照旧占位,条数口径与改前的纯计数逐字一致)——
|
|
238
241
|
// traces.log 是 append-only 无上限文件,为一个比较符整读不成立
|
|
239
242
|
// 计数去向:豁免(harness#100)——本消费面只输出「够不够」的提示行,没有可挂坏行计数的输出位
|
|
@@ -244,11 +247,8 @@ async function getSmartHint(projectPath) {
|
|
|
244
247
|
if (traceCount === 0) {
|
|
245
248
|
return null;
|
|
246
249
|
}
|
|
247
|
-
//
|
|
248
|
-
|
|
249
|
-
if (fs.existsSync(statePath)) {
|
|
250
|
-
state = JSON.parse(fs.readFileSync(statePath, 'utf-8'));
|
|
251
|
-
}
|
|
250
|
+
// 读取状态(经接缝;文件缺失 → {})
|
|
251
|
+
const state = stateIO.read();
|
|
252
252
|
state.shownHints = state.shownHints || [];
|
|
253
253
|
const hints = [];
|
|
254
254
|
// 条件 1: 记录数首次达到阈值
|
|
@@ -258,8 +258,7 @@ async function getSmartHint(projectPath) {
|
|
|
258
258
|
}
|
|
259
259
|
// 保存状态
|
|
260
260
|
if (hints.length > 0) {
|
|
261
|
-
|
|
262
|
-
fs.writeFileSync(statePath, JSON.stringify(state, null, 2));
|
|
261
|
+
stateIO.write(state);
|
|
263
262
|
return hints.join('\n');
|
|
264
263
|
}
|
|
265
264
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEH,sBA2JC;AAuDD,4BA8BC;AAvTD,kDAA0B;AAC1B,uCAAyB;AACzB,2CAA6B;AAC7B,4DAAmE;AACnE,oEAAoF;AACpF,4EAAqG;AACrG,4EAAgF;AAChF,sEAA0F;AAC1F,4DAA2E;AAC3E,4EAA8E;AAC9E,8EAA6E;AAC7E,oDAAyD;AACzD,6CAA8C;AAC9C,6CAA4E;AAE5E,0DAAyF;AAEzF,yBAAyB;AACzB,MAAM,cAAc,GAAG;IACrB,GAAG,EAAE,eAAK,CAAC,GAAG;IACd,MAAM,EAAE,eAAK,CAAC,MAAM;IACpB,IAAI,EAAE,eAAK,CAAC,IAAI;CACR,CAAC;AAEX;;;;;;GAMG;AACH,SAAS,WAAW,CAClB,EAAa,EACb,MAAwB,EACxB,KAAkC,EAClC,EAAW;IAEX,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9C,IAAA,sBAAG,EAAC,EAAE,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC;AA2BD;;GAEG;AACI,KAAK,UAAU,KAAK,CACzB,OAAqB,EACrB,KAAgB,4BAAS;IAEzB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAClC,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,IAAI,4BAA4B,EAAE,CAAC,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzD,gEAAgE;QAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAA,gCAAiB,EAAC,WAAW,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAA,sBAAY,EAAC,WAAW,CAAC,CAAC;QAE3D,uEAAuE;QACvE,wDAAwD;QACxD,4DAA4D;QAC5D,gEAAgE;QAChE,MAAM,MAAM,GAAG,IAAA,kDAA0B,EAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,8BAA8B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED,6DAA6D;QAC7D,0DAA0D;QAC1D,wDAAwD;QACxD,MAAM,OAAO,GAAG,MAAM,IAAA,wCAAsB,EAAC;YAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;QAChD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjG,yDAAyD;QACzD,iDAAiD;QACjD,yDAAyD;QACzD,MAAM,OAAO,GAAG,IAAI,2BAAiB,CAAC,IAAI,uBAAc,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEjF,OAAO;QACP,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;QAER,qDAAqD;QACrD,MAAM,cAAc,GAAG;YACrB,GAAG,MAAM,CAAC,QAAQ;YAClB,GAAG,MAAM,CAAC,UAAU;SACrB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzB,YAAY;QACZ,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnE,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,KAAK,CAAC,eAAe,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,WAAW,iBAAiB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAC5D,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC5B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBACvE,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAChD,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;YACR,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACxC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,sBAAsB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACrG,CAAC;QACJ,CAAC;QAED,aAAa;QACb,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,eAAe,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACtD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC1E,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAC7E,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,KAAK,CAAC,WAAW,gBAAgB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,8CAA8C;QAC9C,kCAAkC;QAClC,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAC7D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAChE,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;YAC1D,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,qCAAqC;QACrC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,aAAa,cAAc,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC;YACjF,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACzB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,oDAAoD;QACpD,sCAAsC;QACtC,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,KAAK,GAAG,IAAA,sCAAoB,EAAC,MAAM,EAAE,SAAS,EAAE,IAAA,6CAAqB,EAAC,MAAM,CAAC,CAAC,CAAC;YACrF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;gBACR,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,aAAa,IAAI,MAAM,mBAAmB,CAAC,CAAC,CAAC;gBACnF,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,kBAAkB,KAAK,CAAC,YAAY,CAAC,MAAM,uBAAuB,KAAK,CAAC,YAAY,CAAC,QAAQ,mCAAmC,CAAC,CAAC,CAAC;gBAC1J,CAAC;gBACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,eAAe,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,WAAW,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,uCAAuC,CAAC,CAAC,CAAC;gBAC3J,CAAC;gBACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBAC3B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,cAAc,qCAAkB,MAAM,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;QACR,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAEjC,OAAO;QACP,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE,CAAC;YACT,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;YACR,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAC5D,IAAA,sBAAG,EAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACd,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;QACR,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,aAAa,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,WAAmB;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAAkB,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IAEpE,yDAAyD;IACzD,6CAA6C;IAC7C,sDAAsD;IACtD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAA,iBAAS,EAAiB,UAAU,EAAE,MAAM,EAAE;QAC9E,IAAI,EAAE,oBAAoB;KAC3B,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;IACjD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;IACP,IAAI,KAAK,GAIL,EAAE,CAAC;IACP,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,kBAAkB;IAClB,IAAI,UAAU,IAAI,oBAAoB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;IACP,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,yDAAyD;AACzD,SAAgB,QAAQ,CAAC,WAAkC,EAAE,EAAE,KAAgB,4BAAS;IACtF,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAEpC,YAAY;IACZ,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,uBAAS,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC5C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,MAAM,CAAC,wBAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC7C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,qBAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC1C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAA,sBAAG,EAAC,EAAE,EAAE,eAAK,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,IAAA,sBAAG,EAAC,EAAE,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* 显示 Harness 状态、统计、异常检测 + 智能建议
|
|
5
5
|
*/
|
|
6
6
|
import { type CommandIO, type CommandResult } from '../command-contract';
|
|
7
|
+
import { type StateIO } from '../state-io';
|
|
7
8
|
export interface StatusOptions {
|
|
8
9
|
/** 项目路径 */
|
|
9
10
|
projectPath?: string;
|
|
@@ -13,6 +14,13 @@ export interface StatusOptions {
|
|
|
13
14
|
anomalies?: boolean;
|
|
14
15
|
/** 时间范围(小时) */
|
|
15
16
|
hours?: number;
|
|
17
|
+
/**
|
|
18
|
+
* 状态文件接缝(非 CLI flag;ADR-0026)
|
|
19
|
+
*
|
|
20
|
+
* 缺省 = 真实 fs 实现(fileStateIO)。注入则 `.harness/.state.json` 的读写
|
|
21
|
+
* 走替身,测试据此不碰真文件系统。
|
|
22
|
+
*/
|
|
23
|
+
stateIO?: StateIO;
|
|
16
24
|
}
|
|
17
25
|
/**
|
|
18
26
|
* 显示 Harness 状态
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAA4B,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAA4B,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,GAAE,SAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CA6HtG"}
|
|
@@ -49,6 +49,7 @@ const trace_analyzer_1 = require("../../monitoring/trace-analyzer");
|
|
|
49
49
|
const jsonl_1 = require("../../utils/jsonl");
|
|
50
50
|
const trace_1 = require("../../types/trace");
|
|
51
51
|
const command_contract_1 = require("../command-contract");
|
|
52
|
+
const state_io_1 = require("../state-io");
|
|
52
53
|
/**
|
|
53
54
|
* 显示 Harness 状态
|
|
54
55
|
*/
|
|
@@ -56,7 +57,7 @@ async function status(options, io = command_contract_1.processIO) {
|
|
|
56
57
|
const projectPath = options.projectPath || process.cwd();
|
|
57
58
|
const harnessDir = path.join(projectPath, '.harness');
|
|
58
59
|
const tracesPath = path.join(projectPath, trace_1.DEFAULT_TRACE_FILE);
|
|
59
|
-
const
|
|
60
|
+
const stateIO = options.stateIO ?? (0, state_io_1.fileStateIO)(projectPath);
|
|
60
61
|
(0, command_contract_1.log)(io, chalk_1.default.blue('📊 Harness 状态'));
|
|
61
62
|
(0, command_contract_1.log)(io);
|
|
62
63
|
// 检查是否初始化
|
|
@@ -150,12 +151,9 @@ async function status(options, io = command_contract_1.processIO) {
|
|
|
150
151
|
});
|
|
151
152
|
(0, command_contract_1.log)(io);
|
|
152
153
|
}
|
|
153
|
-
//
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
};
|
|
157
|
-
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
158
|
-
fs.writeFileSync(statePath, JSON.stringify(state, null, 2));
|
|
154
|
+
// 更新状态文件:读-改-写(ADR-0026 决策 2)——不再整文件重写,
|
|
155
|
+
// 否则 check 写入的 shownHints 会被抹掉、智能提示去重失效
|
|
156
|
+
stateIO.write({ ...stateIO.read(), lastStatusRun: new Date().toISOString() });
|
|
159
157
|
// 下一步建议
|
|
160
158
|
(0, command_contract_1.log)(io, chalk_1.default.blue('💡 下一步建议:'));
|
|
161
159
|
if (anomalies.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 状态文件 IO 接缝(StateIO,ADR-0026 / harness#148)
|
|
3
|
+
*
|
|
4
|
+
* `.harness/.state.json` 是 harness **自身**的运行期状态(与 RunEnv 观察的项目上行
|
|
5
|
+
* 数据不是一类东西,RunEnv 保持 ADR-0023 的只读契约)。本模块是它读-改-写的唯一
|
|
6
|
+
* 入口:`check` 的智能提示与 `status` 两个写者都经本接缝,命令函数以可选参数注入,
|
|
7
|
+
* 缺省 = 真实 fs 实现(照 `CommandIO` 的注入模式,但不扩 `CommandIO`——输出面与
|
|
8
|
+
* 状态面是两个概念)。
|
|
9
|
+
*
|
|
10
|
+
* 落点 cli 层:两个消费者都在 cli,不进 core、不进包根导出面(零公共面变化)。
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* `.harness/.state.json` 的具名类型(从 check.ts 内联类型提出,ADR-0026 决策 1)。
|
|
14
|
+
* `lastDiagnoseRun` 字段已删除——全仓零生产者零消费者(ADR-0022 口径);
|
|
15
|
+
* 已落盘旧文件里残留该键无害,不做迁移。
|
|
16
|
+
*/
|
|
17
|
+
export interface HarnessState {
|
|
18
|
+
/** 已展示过的智能提示 id(去重依据) */
|
|
19
|
+
shownHints?: string[];
|
|
20
|
+
/** 最近一次 `harness status` 运行时刻(ISO 串) */
|
|
21
|
+
lastStatusRun?: string;
|
|
22
|
+
}
|
|
23
|
+
/** harness 自身运行期状态文件的可注入接缝(读-改-写的唯一入口) */
|
|
24
|
+
export interface StateIO {
|
|
25
|
+
/** 文件缺失/空 → `{}`;损坏 → 现状语义(JSON.parse 抛即抛,不兜底,ADR-0026 决策 4) */
|
|
26
|
+
read(): HarnessState;
|
|
27
|
+
write(state: HarnessState): void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 缺省真实 fs 实现:锚 projectPath(与 trace 落点同锚,#139),
|
|
31
|
+
* 状态文件路径知识只在本模块一份。
|
|
32
|
+
*/
|
|
33
|
+
export declare function fileStateIO(projectPath: string): StateIO;
|
|
34
|
+
//# sourceMappingURL=state-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-io.d.ts","sourceRoot":"","sources":["../../src/cli/state-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,OAAO;IACtB,gEAAgE;IAChE,IAAI,IAAI,YAAY,CAAC;IACrB,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAcxD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 状态文件 IO 接缝(StateIO,ADR-0026 / harness#148)
|
|
4
|
+
*
|
|
5
|
+
* `.harness/.state.json` 是 harness **自身**的运行期状态(与 RunEnv 观察的项目上行
|
|
6
|
+
* 数据不是一类东西,RunEnv 保持 ADR-0023 的只读契约)。本模块是它读-改-写的唯一
|
|
7
|
+
* 入口:`check` 的智能提示与 `status` 两个写者都经本接缝,命令函数以可选参数注入,
|
|
8
|
+
* 缺省 = 真实 fs 实现(照 `CommandIO` 的注入模式,但不扩 `CommandIO`——输出面与
|
|
9
|
+
* 状态面是两个概念)。
|
|
10
|
+
*
|
|
11
|
+
* 落点 cli 层:两个消费者都在 cli,不进 core、不进包根导出面(零公共面变化)。
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.fileStateIO = fileStateIO;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
/**
|
|
51
|
+
* 缺省真实 fs 实现:锚 projectPath(与 trace 落点同锚,#139),
|
|
52
|
+
* 状态文件路径知识只在本模块一份。
|
|
53
|
+
*/
|
|
54
|
+
function fileStateIO(projectPath) {
|
|
55
|
+
const statePath = path.join(projectPath, '.harness', '.state.json');
|
|
56
|
+
return {
|
|
57
|
+
read() {
|
|
58
|
+
if (!fs.existsSync(statePath))
|
|
59
|
+
return {};
|
|
60
|
+
const content = fs.readFileSync(statePath, 'utf-8');
|
|
61
|
+
if (content.trim() === '')
|
|
62
|
+
return {};
|
|
63
|
+
return JSON.parse(content);
|
|
64
|
+
},
|
|
65
|
+
write(state) {
|
|
66
|
+
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
67
|
+
fs.writeFileSync(statePath, JSON.stringify(state, null, 2));
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=state-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-io.js","sourceRoot":"","sources":["../../src/cli/state-io.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BH,kCAcC;AAxCD,uCAAyB;AACzB,2CAA6B;AAqB7B;;;GAGG;AACH,SAAgB,WAAW,CAAC,WAAmB;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACpE,OAAO;QACL,IAAI;YACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,KAAmB;YACvB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/hooks/pipeline.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 执行顺序:before hooks → consumer operation → after hooks
|
|
5
5
|
* 每个 hook 独立 try/catch,单个 hook 失败不影���其他 hook。
|
|
6
6
|
*/
|
|
7
|
-
import type { HookPhase, PipelineResult } from './types';
|
|
7
|
+
import type { HookPhase, HookExecutionRecord, PipelineResult } from './types';
|
|
8
8
|
import type { HookRegistry } from './registry';
|
|
9
9
|
export declare class HookPipeline<C = unknown> {
|
|
10
10
|
private registry;
|
|
@@ -17,6 +17,24 @@ export declare class HookPipeline<C = unknown> {
|
|
|
17
17
|
* @returns 管线执行结果
|
|
18
18
|
*/
|
|
19
19
|
run(phase: HookPhase, context: C): Promise<PipelineResult>;
|
|
20
|
+
/**
|
|
21
|
+
* 按名执行单个 hook(#167)
|
|
22
|
+
*
|
|
23
|
+
* 与 run() 共用 executeOne 的采样与错误隔离路径(判定与错误策略的实现体
|
|
24
|
+
* 只有一份);enabled / errorStrategy 的值来源仍是注册环节填充的
|
|
25
|
+
* EffectiveHook(唯一声明点 HookConfig,#159)。
|
|
26
|
+
*
|
|
27
|
+
* - enabled:false → 实现体零调用,返回 skipped:true / passed:true 记录
|
|
28
|
+
* (镜像 sampled 先例:未执行 = 记录上一面旗,不是异常)
|
|
29
|
+
* - errorStrategy 'block' 且失败 → 抛 Error(message 含 hook 名与原文);
|
|
30
|
+
* 'warn' 且失败 → resolve,返回 passed:false 带 error 的记录
|
|
31
|
+
* - 未知名 → 抛错(与 assertHookRegistryClosed 闭环口径一致,拒绝静默缺失)
|
|
32
|
+
*
|
|
33
|
+
* @param name hook 名称(须已注册)
|
|
34
|
+
* @param context 传递给 hook 的上下文
|
|
35
|
+
* @returns 管线观测记录
|
|
36
|
+
*/
|
|
37
|
+
runOne(name: string, context: C): Promise<HookExecutionRecord>;
|
|
20
38
|
/**
|
|
21
39
|
* 执行 before + after 全套管线
|
|
22
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/hooks/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,SAAS,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/hooks/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,SAAS,EACT,mBAAmB,EACnB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,qBAAa,YAAY,CAAC,CAAC,GAAG,OAAO;IACnC,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;IAI9C;;;;;;OAMG;IACG,GAAG,CACP,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,cAAc,CAAC;IAyB1B;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA8BpE;;;;;;OAMG;IACG,OAAO,CAAC,CAAC,EACb,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,eAAe,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC;IAwCnE;;OAEG;YACW,UAAU;CA4CzB"}
|
package/dist/hooks/pipeline.js
CHANGED
|
@@ -40,6 +40,46 @@ class HookPipeline {
|
|
|
40
40
|
}
|
|
41
41
|
return { passed, records, blockedBy, warnings };
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* 按名执行单个 hook(#167)
|
|
45
|
+
*
|
|
46
|
+
* 与 run() 共用 executeOne 的采样与错误隔离路径(判定与错误策略的实现体
|
|
47
|
+
* 只有一份);enabled / errorStrategy 的值来源仍是注册环节填充的
|
|
48
|
+
* EffectiveHook(唯一声明点 HookConfig,#159)。
|
|
49
|
+
*
|
|
50
|
+
* - enabled:false → 实现体零调用,返回 skipped:true / passed:true 记录
|
|
51
|
+
* (镜像 sampled 先例:未执行 = 记录上一面旗,不是异常)
|
|
52
|
+
* - errorStrategy 'block' 且失败 → 抛 Error(message 含 hook 名与原文);
|
|
53
|
+
* 'warn' 且失败 → resolve,返回 passed:false 带 error 的记录
|
|
54
|
+
* - 未知名 → 抛错(与 assertHookRegistryClosed 闭环口径一致,拒绝静默缺失)
|
|
55
|
+
*
|
|
56
|
+
* @param name hook 名称(须已注册)
|
|
57
|
+
* @param context 传递给 hook 的上下文
|
|
58
|
+
* @returns 管线观测记录
|
|
59
|
+
*/
|
|
60
|
+
async runOne(name, context) {
|
|
61
|
+
const hook = this.registry.get(name);
|
|
62
|
+
if (!hook) {
|
|
63
|
+
throw new Error(`[harness] hook 执行失败:hook "${name}" 未注册。请注册同名 HookDefinition 与 HookConfig 声明。`);
|
|
64
|
+
}
|
|
65
|
+
if (!hook.enabled) {
|
|
66
|
+
const now = Date.now();
|
|
67
|
+
return {
|
|
68
|
+
hookName: hook.name,
|
|
69
|
+
phase: hook.phase,
|
|
70
|
+
startedAt: now,
|
|
71
|
+
completedAt: now,
|
|
72
|
+
durationMs: 0,
|
|
73
|
+
passed: true,
|
|
74
|
+
skipped: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const record = await this.executeOne(hook, context);
|
|
78
|
+
if (!record.passed && hook.errorStrategy === 'block') {
|
|
79
|
+
throw new Error(`[harness] hook "${hook.name}" blocked: ${record.error ?? '未知错误'}`);
|
|
80
|
+
}
|
|
81
|
+
return record;
|
|
82
|
+
}
|
|
43
83
|
/**
|
|
44
84
|
* 执行 before + after 全套管线
|
|
45
85
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/hooks/pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/hooks/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,UAAU;IACzB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACtD,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACjD;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,UAAU;IACzB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACtD,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACjD;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW;IACX,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB;IAClB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
|
package/package.json
CHANGED
package/src/CONTEXT.md
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
| 飞轮指标(flywheel) | 知识条目的引用与消费度量(refCoverage / avgRefs / consumptionHitRate);唯一实现 `knowledge/flywheel-metrics.ts`(包内,不进导出面),canonical 分子为过滤 synthetic 后的 genuine refs,audit D6 / knowledge stats / knowledge health 共消费(ADR-0013,#81) |
|
|
48
48
|
| 测试夹具(project fixture) | 临时项目根 + 落盘声明;唯一实现 `test-setup/project-fixture.ts`(测试层,不进导出面)——`config` 槽是 `.harness/config.yml` 落点唯一正本(字符串原样落盘,畸形/脏配置用例依赖此口径),`traces` 槽/`writeProjectTraces` 是 trace 落盘唯一正本(路径锚定 `DEFAULT_TRACE_FILE`、序列化走 `appendJsonl` 生产写链,harness#108),其余文件走 `files` 相对路径;非缺省根必须经 `parentDir` **显式** opt-out(cwd 锚定用例语义),回收经 `mkdtemp-cleanup` 劫持(harness#90) |
|
|
49
49
|
| 运行级观察面(run env) | 一次 `harness check` 运行内对项目上行数据的只读视图,口径 = **同一文件至多读一次、跑完即弃、不做进程级全局**;唯一实现 `core/constraints/run-env.ts`,承载 `rawConfig()` / `customConstraints(file)` / `capabilities(population)` / `traceTail(limit)` / `sourceRoots()` 五个观察口(配置与能力表的读取原进程级缓存已按 ADR-0023 决策 2 撤销),与 git 证据(#87/ADR-0021)同形:入口构造、沿调用链显式传递。与 `CheckEnv` 的分工是构造顺序决定的——`CheckEnv` 含 `context`,而 `context` 是经本观察面读文件算出的产物,故观察面只承载「不需要 context 就能造」的部分,`CheckEnv` 以 `extends RunEnv` 从它派生(ADR-0023);`RunEnv` / `RunTarget`(= `RunEnv \| 项目根路径`)经 `./core` 以类型面导出,供消费方共享同一份读取。**只读是硬契约**:运行期状态文件的写口不走本面,走 StateIO(#148) |
|
|
50
|
-
| 状态文件 IO(StateIO) | harness 自身运行期状态文件(`.harness/.state.json`)读写的可注入接缝:`read()`/`write()` 两方法、默认真实 fs
|
|
50
|
+
| 状态文件 IO(StateIO) | harness 自身运行期状态文件(`.harness/.state.json`)读写的可注入接缝:`read()`/`write()` 两方法、默认真实 fs 实现 `fileStateIO(projectPath)`、命令可选参数注入(照 `CommandIO` 模式,但不扩 `CommandIO`);唯一实现 `src/cli/state-io.ts`(cli 层,不进包根导出面),收编 check 智能提示与 status 两个写者,写语义统一为**读-改-写**(此前 `status` 不读就整文件重写、把 `check` 写的 `shownHints` 抹掉致提示去重失效,ADR-0026 已修)。决策 = **ADR-0026**,实现票 #148;与运行级观察面(只读、项目上行数据)分工:本面管 harness 自身状态、含写 |
|
|
51
51
|
|
|
52
52
|
## 注意事项
|
|
53
53
|
- 公共包,禁止硬编码业务路径
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fileStateIO 直测(ADR-0026):真实 fs、临时目录,不 mock。
|
|
3
|
+
*
|
|
4
|
+
* 命令侧注入面见 check.test.ts / status.test.ts 的内存假件;
|
|
5
|
+
* 本套件只钉缺省实现自身的语义:缺失 → {}、写-读回环、损坏照现状抛、路径锚 projectPath。
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import * as os from 'os';
|
|
10
|
+
import * as path from 'path';
|
|
11
|
+
import { fileStateIO } from '../state-io';
|
|
12
|
+
|
|
13
|
+
describe('fileStateIO(真实 fs 缺省实现,ADR-0026)', () => {
|
|
14
|
+
let dir: string;
|
|
15
|
+
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
dir = fs.mkdtempSync(path.join(os.tmpdir(), 'harness-state-io-'));
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
afterEach(() => {
|
|
21
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('文件缺失 → read() 返回 {}', () => {
|
|
25
|
+
expect(fileStateIO(dir).read()).toEqual({});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('空文件(0 字节)→ read() 返回 {}(ADR-0026 决策 1「缺失/空」口径)', () => {
|
|
29
|
+
fs.mkdirSync(path.join(dir, '.harness'), { recursive: true });
|
|
30
|
+
fs.writeFileSync(path.join(dir, '.harness', '.state.json'), '');
|
|
31
|
+
|
|
32
|
+
expect(fileStateIO(dir).read()).toEqual({});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('写-读回环:write() 自动建目录,落点锚 projectPath 下的 .harness/.state.json', () => {
|
|
36
|
+
const stateIO = fileStateIO(dir);
|
|
37
|
+
stateIO.write({ shownHints: ['trace_50'], lastStatusRun: '2026-09-17T00:00:00.000Z' });
|
|
38
|
+
|
|
39
|
+
const onDisk = path.join(dir, '.harness', '.state.json');
|
|
40
|
+
expect(fs.existsSync(onDisk)).toBe(true);
|
|
41
|
+
expect(stateIO.read()).toEqual({ shownHints: ['trace_50'], lastStatusRun: '2026-09-17T00:00:00.000Z' });
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('损坏文件照现状抛(不兜底成 {},ADR-0026 决策 4)', () => {
|
|
45
|
+
fs.mkdirSync(path.join(dir, '.harness'), { recursive: true });
|
|
46
|
+
fs.writeFileSync(path.join(dir, '.harness', '.state.json'), 'not json');
|
|
47
|
+
|
|
48
|
+
expect(() => fileStateIO(dir).read()).toThrow();
|
|
49
|
+
});
|
|
50
|
+
});
|