mister-wolf 2.25.1 → 2.27.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/adapters/cli/cli-entry.d.ts.map +1 -1
- package/dist/adapters/cli/cli-entry.js +11 -0
- package/dist/adapters/cli/cli-entry.js.map +1 -1
- package/dist/adapters/cli/commands/git-inspect.d.ts +7 -0
- package/dist/adapters/cli/commands/git-inspect.d.ts.map +1 -0
- package/dist/adapters/cli/commands/git-inspect.js +20 -0
- package/dist/adapters/cli/commands/git-inspect.js.map +1 -0
- package/dist/app/use-cases/git-inspect.d.ts +105 -0
- package/dist/app/use-cases/git-inspect.d.ts.map +1 -0
- package/dist/app/use-cases/git-inspect.js +359 -0
- package/dist/app/use-cases/git-inspect.js.map +1 -0
- package/package.json +1 -1
- package/templates/base/agents/executor-lead.md +5 -3
- package/templates/base/skills/using-skills/references/contracts.md +11 -2
- package/templates/base/skills/wolf-execute/SKILL.md +2 -0
- package/templates/base/skills/wolf-git/SKILL.md +3 -1
- package/templates/base/skills/wolf-handoff/SKILL.md +2 -1
- package/templates/base/skills/wolf-sdd/SKILL.md +1 -1
- package/update-map.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AA0BpD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AA0BpD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WAAW,EAuWjC,CAAC;AAEF,wBAAgB,SAAS,IAAI,OAAO,CAuFnC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAQhC;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1D"}
|
|
@@ -372,6 +372,17 @@ export const COMMANDS = [
|
|
|
372
372
|
usage: '',
|
|
373
373
|
load: () => import('./commands/projects.js').then((m) => m.projectsCommand()),
|
|
374
374
|
},
|
|
375
|
+
{
|
|
376
|
+
// B0.5 (roadmap v4 §11, ADR-5): единственный структурный сборщик
|
|
377
|
+
// Git-состояния — read-only JSON-вердикт для L1/B0 (wolf-git).
|
|
378
|
+
// Agent-facing plumbing (как scan/think): hidden — не тратит бюджет
|
|
379
|
+
// help-листинга P224, остаётся в CLI-справочнике.
|
|
380
|
+
name: 'git-inspect',
|
|
381
|
+
description: 'Inspect git state (read-only) and print a JSON report with a PASS|VIOLATION|UNKNOWN verdict',
|
|
382
|
+
usage: '[options]',
|
|
383
|
+
hidden: true,
|
|
384
|
+
load: () => import('./commands/git-inspect.js').then((m) => m.gitInspectCommand()),
|
|
385
|
+
},
|
|
375
386
|
];
|
|
376
387
|
export function createCli() {
|
|
377
388
|
const program = new Command('wolf');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* B0.5: обвязка git-inspect. Вывод — единственный JSON-объект в stdout;
|
|
4
|
+
* exit-код кодирует вердикт (ADR-3), поэтому process.exitCode, а не throw.
|
|
5
|
+
*/
|
|
6
|
+
export declare function gitInspectCommand(): Command;
|
|
7
|
+
//# sourceMappingURL=git-inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-inspect.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/git-inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAiB3C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { createExecFileGitRunner, gitInspectExitCode, runGitInspect } from '../../../app/use-cases/git-inspect.js';
|
|
4
|
+
/**
|
|
5
|
+
* B0.5: обвязка git-inspect. Вывод — единственный JSON-объект в stdout;
|
|
6
|
+
* exit-код кодирует вердикт (ADR-3), поэтому process.exitCode, а не throw.
|
|
7
|
+
*/
|
|
8
|
+
export function gitInspectCommand() {
|
|
9
|
+
return new Command('git-inspect')
|
|
10
|
+
.description('Inspect git state (read-only) and print a JSON report with a PASS|VIOLATION|UNKNOWN verdict')
|
|
11
|
+
.option('--baseline <sha>', 'baseline commit SHA the task started from')
|
|
12
|
+
.option('--target <ref>', 'task target recorded as a fact; requires remote observation (comparison uses the branch upstream)')
|
|
13
|
+
.option('--owner <id>', 'branch owner identity passed through into the report')
|
|
14
|
+
.action(async (options) => {
|
|
15
|
+
const report = await runGitInspect({ runner: createExecFileGitRunner(), exists: existsSync, now: () => new Date() }, { cwd: process.cwd(), baseline: options.baseline, target: options.target, owner: options.owner });
|
|
16
|
+
console.log(JSON.stringify(report, null, 2));
|
|
17
|
+
process.exitCode = gitInspectExitCode(report.verdict);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=git-inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-inspect.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/git-inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEnH;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;SAC9B,WAAW,CAAC,6FAA6F,CAAC;SAC1G,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;SACvE,MAAM,CACL,gBAAgB,EAChB,mGAAmG,CACpG;SACA,MAAM,CAAC,cAAc,EAAE,sDAAsD,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,OAA+D,EAAE,EAAE;QAChF,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,EAChF,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACjG,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B0.5 (roadmap v4 §11): единственный структурный сборщик Git-состояния
|
|
3
|
+
* (ADR-5). Read-only: только читающие git-команды, refs не меняются, память
|
|
4
|
+
* Wolf не читается. Вердикт — чистая функция computeVerdict по таблице
|
|
5
|
+
* решений design; сбор фактов — через внедрённый GitRunner/fs/now.
|
|
6
|
+
*/
|
|
7
|
+
/** Порт запуска git (design §Глоссарий): без shell, опциональный таймаут. */
|
|
8
|
+
export type GitRunnerResult = {
|
|
9
|
+
code: number;
|
|
10
|
+
stdout: string;
|
|
11
|
+
stderr: string;
|
|
12
|
+
};
|
|
13
|
+
export type GitRunner = (args: string[], opts: {
|
|
14
|
+
cwd: string;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}) => Promise<GitRunnerResult>;
|
|
17
|
+
export type GitVerdict = 'PASS' | 'VIOLATION' | 'UNKNOWN';
|
|
18
|
+
export type BaselineRelationship = 'equal' | 'ancestor-of-head' | 'diverged' | 'unresolved';
|
|
19
|
+
export type RemoteRelation = 'in-sync' | 'ahead' | 'behind' | 'diverged' | 'remote-ahead-unfetched' | 'no-remote' | 'no-upstream';
|
|
20
|
+
export type RemoteObservationMethod = 'ls-remote' | 'tracking-ref' | 'none';
|
|
21
|
+
/** NFR-02: сетевое ls-remote ограничено 10 с, после чего remote недоступен. */
|
|
22
|
+
export declare const LS_REMOTE_TIMEOUT_MS = 10000;
|
|
23
|
+
export interface LocalVsRemote {
|
|
24
|
+
upstream: string | null;
|
|
25
|
+
remote: string | null;
|
|
26
|
+
relation: RemoteRelation;
|
|
27
|
+
ahead: number | null;
|
|
28
|
+
behind: number | null;
|
|
29
|
+
remote_head: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface FreshnessOfRemoteObservation {
|
|
32
|
+
observed_at: string | null;
|
|
33
|
+
method: RemoteObservationMethod;
|
|
34
|
+
reachable: boolean | null;
|
|
35
|
+
}
|
|
36
|
+
export interface GitFacts {
|
|
37
|
+
repository: {
|
|
38
|
+
root: string | null;
|
|
39
|
+
is_bare: boolean | null;
|
|
40
|
+
origin_url_sanitized: string | null;
|
|
41
|
+
};
|
|
42
|
+
worktree: {
|
|
43
|
+
path: string | null;
|
|
44
|
+
kind: 'main' | 'linked' | null;
|
|
45
|
+
};
|
|
46
|
+
branch: string | null;
|
|
47
|
+
head: string | null;
|
|
48
|
+
baseline: {
|
|
49
|
+
sha: string;
|
|
50
|
+
relationship: BaselineRelationship;
|
|
51
|
+
} | null;
|
|
52
|
+
target: string | null;
|
|
53
|
+
dirty: {
|
|
54
|
+
value: boolean;
|
|
55
|
+
entries: number;
|
|
56
|
+
};
|
|
57
|
+
unfinished_git_operation: 'merge' | 'rebase' | 'cherry-pick' | 'revert' | null;
|
|
58
|
+
local_vs_remote: LocalVsRemote;
|
|
59
|
+
branch_owner: string | null;
|
|
60
|
+
freshness_of_remote_observation: FreshnessOfRemoteObservation;
|
|
61
|
+
/** Внутренний маркер строки 1 таблицы решений («не репозиторий / git упал»); в JSON-отчёт не входит. */
|
|
62
|
+
collection_error: string | null;
|
|
63
|
+
}
|
|
64
|
+
export type GitInspectReport = Omit<GitFacts, 'collection_error'> & {
|
|
65
|
+
schema_version: 1;
|
|
66
|
+
observed_at: string;
|
|
67
|
+
verdict: GitVerdict;
|
|
68
|
+
reasons: string[];
|
|
69
|
+
allowed_next_actions: string[];
|
|
70
|
+
};
|
|
71
|
+
export interface GitInspectDeps {
|
|
72
|
+
runner: GitRunner;
|
|
73
|
+
/** fs-порт: проверка незавершённых git-операций по служебным файлам git-каталога. */
|
|
74
|
+
exists: (path: string) => boolean;
|
|
75
|
+
now: () => Date;
|
|
76
|
+
}
|
|
77
|
+
export interface GitInspectOptions {
|
|
78
|
+
cwd: string;
|
|
79
|
+
/** baseline SHA — вход задачи; отсутствие входа = отсутствие проверки (§6 requirements). */
|
|
80
|
+
baseline?: string;
|
|
81
|
+
target?: string;
|
|
82
|
+
/** branch_owner — только из входа (ADR-1), память Wolf не читается. */
|
|
83
|
+
owner?: string;
|
|
84
|
+
}
|
|
85
|
+
/** NFR-01: встроенные учётные данные (user:token@) замещаются целиком — ни логина, ни токена в выводе. */
|
|
86
|
+
export declare function sanitizeGitUrl(url: string): string;
|
|
87
|
+
/**
|
|
88
|
+
* Вердикт/reasons/actions по таблице решений design (порядок строк — сверху
|
|
89
|
+
* вниз, первое сработавшее определяет вердикт). Чистая функция — тестируется
|
|
90
|
+
* без git.
|
|
91
|
+
*/
|
|
92
|
+
export declare function computeVerdict(facts: GitFacts): {
|
|
93
|
+
verdict: GitVerdict;
|
|
94
|
+
reasons: string[];
|
|
95
|
+
allowed_next_actions: string[];
|
|
96
|
+
};
|
|
97
|
+
/** Сбор фактов: только читающие команды (design §Контракты). */
|
|
98
|
+
export declare function collectGitFacts(deps: GitInspectDeps, opts: GitInspectOptions): Promise<GitFacts>;
|
|
99
|
+
/** Полный отчёт: факты + вердикт; внутренние поля в JSON не попадают. */
|
|
100
|
+
export declare function runGitInspect(deps: GitInspectDeps, opts: GitInspectOptions): Promise<GitInspectReport>;
|
|
101
|
+
/** Адаптер порта GitRunner: execFile('git') без shell; таймаут — опцией execFile (NFR-02). */
|
|
102
|
+
export declare function createExecFileGitRunner(): GitRunner;
|
|
103
|
+
/** ADR-3: exit-код кодирует вердикт — UNKNOWN не возвращает 0. */
|
|
104
|
+
export declare function gitInspectExitCode(verdict: GitVerdict): 0 | 1 | 2;
|
|
105
|
+
//# sourceMappingURL=git-inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-inspect.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/git-inspect.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/E,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAEhH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,kBAAkB,GAAG,UAAU,GAAG,YAAY,CAAC;AAC5F,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,OAAO,GACP,QAAQ,GACR,UAAU,GACV,wBAAwB,GACxB,WAAW,GACX,aAAa,CAAC;AAClB,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;AAE5E,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAClG,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAA;KAAE,CAAC;IAClE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,oBAAoB,CAAA;KAAE,GAAG,IAAI,CAAC;IACrE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,wBAAwB,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC/E,eAAe,EAAE,aAAa,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+BAA+B,EAAE,4BAA4B,CAAC;IAC9D,wGAAwG;IACxG,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG;IAClE,cAAc,EAAE,CAAC,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,qFAAqF;IACrF,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,GAAG,EAAE,MAAM,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,0GAA0G;AAC1G,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG;IAC/C,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAqGA;AAED,gEAAgE;AAChE,wBAAsB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgMtG;AA8BD,yEAAyE;AACzE,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAK5G;AAID,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,SAAS,CAoBnD;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAEjE"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { isAbsolute, join, resolve } from 'node:path';
|
|
4
|
+
/** NFR-02: сетевое ls-remote ограничено 10 с, после чего remote недоступен. */
|
|
5
|
+
export const LS_REMOTE_TIMEOUT_MS = 10_000;
|
|
6
|
+
/** NFR-01: встроенные учётные данные (user:token@) замещаются целиком — ни логина, ни токена в выводе. */
|
|
7
|
+
export function sanitizeGitUrl(url) {
|
|
8
|
+
return url
|
|
9
|
+
.replace(/(^[a-zA-Z][a-zA-Z0-9+.-]*:\/\/)[^/@\s]+@/, '$1***@')
|
|
10
|
+
.replace(/(^|[\s/])([^/@\s:]+):([^/@\s]+)@/, '$1***@'); // scp-синтаксис user:token@host:path
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Вердикт/reasons/actions по таблице решений design (порядок строк — сверху
|
|
14
|
+
* вниз, первое сработавшее определяет вердикт). Чистая функция — тестируется
|
|
15
|
+
* без git.
|
|
16
|
+
*/
|
|
17
|
+
export function computeVerdict(facts) {
|
|
18
|
+
const { local_vs_remote: lvr, freshness_of_remote_observation: freshness } = facts;
|
|
19
|
+
// строка 1: не репозиторий / git-команда упала
|
|
20
|
+
if (facts.collection_error !== null) {
|
|
21
|
+
return {
|
|
22
|
+
verdict: 'UNKNOWN',
|
|
23
|
+
reasons: [facts.collection_error],
|
|
24
|
+
allowed_next_actions: ['verify the working directory is a git repository'],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const reasons = [];
|
|
28
|
+
const actions = [];
|
|
29
|
+
const upstreamMissing = lvr.relation === 'no-remote' || lvr.relation === 'no-upstream';
|
|
30
|
+
// по одной причине на выполненную проверку (REQ-02)
|
|
31
|
+
reasons.push(facts.dirty.value ? `dirty: ${facts.dirty.entries} uncommitted change(s)` : 'dirty: clean');
|
|
32
|
+
if (facts.dirty.value)
|
|
33
|
+
actions.push('commit or discard changes before handoff (if authorized)');
|
|
34
|
+
reasons.push(facts.unfinished_git_operation !== null
|
|
35
|
+
? `unfinished git operation: ${facts.unfinished_git_operation} in progress`
|
|
36
|
+
: 'unfinished git operation: none');
|
|
37
|
+
if (facts.unfinished_git_operation !== null) {
|
|
38
|
+
actions.push('complete or abort the unfinished git operation before handoff');
|
|
39
|
+
}
|
|
40
|
+
if (facts.baseline !== null) {
|
|
41
|
+
reasons.push(`baseline ${facts.baseline.sha}: ${facts.baseline.relationship}`);
|
|
42
|
+
if (facts.baseline.relationship === 'diverged') {
|
|
43
|
+
actions.push('reconcile baseline with head via rebase or merge (if authorized)');
|
|
44
|
+
}
|
|
45
|
+
if (facts.baseline.relationship === 'unresolved') {
|
|
46
|
+
actions.push('verify the baseline commit exists in this repository');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (lvr.upstream !== null && freshness.reachable === false) {
|
|
50
|
+
// строка 2: remote существует, но ls-remote недоступен
|
|
51
|
+
reasons.push(`remote unreachable: ls-remote failed for ${lvr.remote ?? 'remote'}`);
|
|
52
|
+
actions.push('verify network/remote access; do not assume clean');
|
|
53
|
+
}
|
|
54
|
+
else if (upstreamMissing && facts.target !== null) {
|
|
55
|
+
// вход --target требует remote-сравнения, а оно неприменимо
|
|
56
|
+
reasons.push(`remote comparison required by --target ${facts.target} but no upstream/remote is configured`);
|
|
57
|
+
actions.push('verify remote/upstream configuration');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
switch (lvr.relation) {
|
|
61
|
+
case 'no-remote':
|
|
62
|
+
reasons.push('remote comparison not applicable: no remote configured');
|
|
63
|
+
break;
|
|
64
|
+
case 'no-upstream':
|
|
65
|
+
reasons.push('remote comparison not applicable: no upstream branch');
|
|
66
|
+
break;
|
|
67
|
+
case 'in-sync':
|
|
68
|
+
reasons.push(`local vs remote: in sync with ${lvr.upstream}`);
|
|
69
|
+
break;
|
|
70
|
+
case 'ahead':
|
|
71
|
+
reasons.push(`unpublished commits present: ahead of ${lvr.upstream} by ${lvr.ahead}`);
|
|
72
|
+
break;
|
|
73
|
+
case 'behind':
|
|
74
|
+
reasons.push(`local vs remote: behind ${lvr.upstream} by ${lvr.behind}`);
|
|
75
|
+
break;
|
|
76
|
+
case 'diverged':
|
|
77
|
+
reasons.push(`local vs remote: diverged from ${lvr.upstream} (ahead ${lvr.ahead}, behind ${lvr.behind})`);
|
|
78
|
+
break;
|
|
79
|
+
case 'remote-ahead-unfetched':
|
|
80
|
+
reasons.push(`local vs remote: remote ${lvr.upstream} ahead with unfetched commits (count unknown)`);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
if (lvr.relation === 'diverged' || lvr.relation === 'behind' || lvr.relation === 'remote-ahead-unfetched') {
|
|
84
|
+
actions.push('sync with the remote before handoff (if authorized)');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// вердикт — строго по таблице design сверху вниз: unreachable-строка 2,
|
|
88
|
+
// затем violations (3–6), затем unknown-строки (baseline unresolved,
|
|
89
|
+
// target при отсутствующем remote), иначе PASS
|
|
90
|
+
let verdict;
|
|
91
|
+
if (lvr.upstream !== null && freshness.reachable === false)
|
|
92
|
+
verdict = 'UNKNOWN';
|
|
93
|
+
else if (facts.dirty.value)
|
|
94
|
+
verdict = 'VIOLATION';
|
|
95
|
+
else if (facts.unfinished_git_operation !== null)
|
|
96
|
+
verdict = 'VIOLATION';
|
|
97
|
+
else if (facts.baseline?.relationship === 'diverged')
|
|
98
|
+
verdict = 'VIOLATION';
|
|
99
|
+
else if (lvr.relation === 'diverged' || lvr.relation === 'behind' || lvr.relation === 'remote-ahead-unfetched') {
|
|
100
|
+
verdict = 'VIOLATION';
|
|
101
|
+
}
|
|
102
|
+
else if (facts.baseline?.relationship === 'unresolved')
|
|
103
|
+
verdict = 'UNKNOWN';
|
|
104
|
+
else if (upstreamMissing && facts.target !== null)
|
|
105
|
+
verdict = 'UNKNOWN';
|
|
106
|
+
else
|
|
107
|
+
verdict = 'PASS';
|
|
108
|
+
if (verdict === 'PASS') {
|
|
109
|
+
return {
|
|
110
|
+
verdict,
|
|
111
|
+
reasons,
|
|
112
|
+
allowed_next_actions: lvr.relation === 'ahead'
|
|
113
|
+
? ['publish if authorized']
|
|
114
|
+
: ['read-only observation complete; no git action required'],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return { verdict, reasons, allowed_next_actions: actions };
|
|
118
|
+
}
|
|
119
|
+
/** Сбор фактов: только читающие команды (design §Контракты). */
|
|
120
|
+
export async function collectGitFacts(deps, opts) {
|
|
121
|
+
const run = async (args, timeoutMs) => deps.runner(args, { cwd: opts.cwd, timeoutMs });
|
|
122
|
+
const emptyRemote = {
|
|
123
|
+
upstream: null,
|
|
124
|
+
remote: null,
|
|
125
|
+
relation: 'no-remote',
|
|
126
|
+
ahead: null,
|
|
127
|
+
behind: null,
|
|
128
|
+
remote_head: null,
|
|
129
|
+
};
|
|
130
|
+
const noFreshness = { observed_at: null, method: 'none', reachable: null };
|
|
131
|
+
const emptyFacts = (message) => ({
|
|
132
|
+
repository: { root: null, is_bare: null, origin_url_sanitized: null },
|
|
133
|
+
worktree: { path: null, kind: null },
|
|
134
|
+
branch: null,
|
|
135
|
+
head: null,
|
|
136
|
+
baseline: opts.baseline !== undefined ? { sha: opts.baseline, relationship: 'unresolved' } : null,
|
|
137
|
+
target: opts.target ?? null,
|
|
138
|
+
dirty: { value: false, entries: 0 },
|
|
139
|
+
unfinished_git_operation: null,
|
|
140
|
+
local_vs_remote: { ...emptyRemote },
|
|
141
|
+
branch_owner: opts.owner ?? null,
|
|
142
|
+
freshness_of_remote_observation: { ...noFreshness },
|
|
143
|
+
collection_error: message,
|
|
144
|
+
});
|
|
145
|
+
const gitDirRes = await run(['rev-parse', '--git-dir']);
|
|
146
|
+
if (gitDirRes.code !== 0)
|
|
147
|
+
return emptyFacts('not a git repository: git rev-parse --git-dir failed');
|
|
148
|
+
const gitDirRaw = gitDirRes.stdout.trim();
|
|
149
|
+
const gitDir = isAbsolute(gitDirRaw) ? gitDirRaw : resolve(opts.cwd, gitDirRaw);
|
|
150
|
+
const [toplevel, bareRes, headRes, branchRes, statusRes, worktreeRes, remoteRes] = await Promise.all([
|
|
151
|
+
run(['rev-parse', '--show-toplevel']),
|
|
152
|
+
run(['rev-parse', '--is-bare-repository']),
|
|
153
|
+
run(['rev-parse', 'HEAD']),
|
|
154
|
+
run(['branch', '--show-current']),
|
|
155
|
+
run(['status', '--porcelain']),
|
|
156
|
+
run(['worktree', 'list', '--porcelain']),
|
|
157
|
+
run(['remote', '-v']),
|
|
158
|
+
]);
|
|
159
|
+
const isBare = bareRes.code === 0 ? bareRes.stdout.trim() === 'true' : null;
|
|
160
|
+
const root = toplevel.code === 0 ? toplevel.stdout.trim() : isBare ? resolve(gitDir) : null;
|
|
161
|
+
const head = headRes.code === 0 ? headRes.stdout.trim() : null;
|
|
162
|
+
const branchRaw = branchRes.code === 0 ? branchRes.stdout.trim() : '';
|
|
163
|
+
const statusLines = statusRes.code === 0 ? statusRes.stdout.split('\n').filter((l) => l.trim() !== '') : [];
|
|
164
|
+
// kind: ищем cwd среди блоков worktree list (первый блок — main worktree);
|
|
165
|
+
// запасной признак linked — gitDir вида .git/worktrees/<name>
|
|
166
|
+
const worktreePaths = worktreeRes.code === 0
|
|
167
|
+
? worktreeRes.stdout
|
|
168
|
+
.split('\n')
|
|
169
|
+
.filter((l) => l.startsWith('worktree '))
|
|
170
|
+
.map((l) => resolve(l.slice('worktree '.length).trim()))
|
|
171
|
+
: [];
|
|
172
|
+
const worktreeIndex = worktreePaths.indexOf(resolve(opts.cwd));
|
|
173
|
+
const kind = worktreeIndex === 0
|
|
174
|
+
? 'main'
|
|
175
|
+
: worktreeIndex > 0
|
|
176
|
+
? 'linked'
|
|
177
|
+
: worktreeRes.code === 0
|
|
178
|
+
? resolve(gitDir).includes(`${join('.git', 'worktrees')}`)
|
|
179
|
+
? 'linked'
|
|
180
|
+
: 'main'
|
|
181
|
+
: null;
|
|
182
|
+
// origin URL (fetch-строка) с санитизацией учётных данных (NFR-01)
|
|
183
|
+
const remoteLines = remoteRes.code === 0 ? remoteRes.stdout.split('\n').filter((l) => l.includes('\t')) : [];
|
|
184
|
+
const originLine = remoteLines.find((l) => l.startsWith('origin\t') && l.endsWith('(fetch)')) ??
|
|
185
|
+
remoteLines.find((l) => l.endsWith('(fetch)'));
|
|
186
|
+
const originUrl = originLine !== undefined ? sanitizeGitUrl(originLine.split('\t')[1]?.replace(/\s+\(fetch\)$/, '') ?? '') : null;
|
|
187
|
+
const hasRemote = remoteLines.length > 0;
|
|
188
|
+
// незавершённые операции — служебные файлы в git-каталоге (порядок design)
|
|
189
|
+
const UNFINISHED = [
|
|
190
|
+
['MERGE_HEAD', 'merge'],
|
|
191
|
+
['rebase-merge', 'rebase'],
|
|
192
|
+
['rebase-apply', 'rebase'],
|
|
193
|
+
['CHERRY_PICK_HEAD', 'cherry-pick'],
|
|
194
|
+
['REVERT_HEAD', 'revert'],
|
|
195
|
+
];
|
|
196
|
+
let unfinished = null;
|
|
197
|
+
for (const [name, op] of UNFINISHED) {
|
|
198
|
+
if (deps.exists(join(gitDir, name))) {
|
|
199
|
+
unfinished = op;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// baseline — вход задачи; разрешаем SHA и сравниваем ancestry
|
|
204
|
+
let baseline = null;
|
|
205
|
+
if (opts.baseline !== undefined) {
|
|
206
|
+
const verify = await run(['rev-parse', '--verify', '--quiet', `${opts.baseline}^{commit}`]);
|
|
207
|
+
if (verify.code !== 0) {
|
|
208
|
+
baseline = { sha: opts.baseline, relationship: 'unresolved' };
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
const resolved = verify.stdout.trim();
|
|
212
|
+
if (head !== null && resolved === head) {
|
|
213
|
+
baseline = { sha: resolved, relationship: 'equal' };
|
|
214
|
+
}
|
|
215
|
+
else if (head !== null) {
|
|
216
|
+
const ancestor = await run(['merge-base', '--is-ancestor', resolved, head]);
|
|
217
|
+
baseline = { sha: resolved, relationship: ancestor.code === 0 ? 'ancestor-of-head' : 'diverged' };
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
baseline = { sha: resolved, relationship: 'unresolved' };
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// remote-наблюдение (ADR-2/ADR-4): живое ls-remote с таймаутом, без fetch
|
|
225
|
+
const upstreamRes = await run(['rev-parse', '--symbolic-full-name', '@{u}']);
|
|
226
|
+
const upstream = upstreamRes.code === 0 && upstreamRes.stdout.trim().startsWith('refs/remotes/') ? upstreamRes.stdout.trim() : null;
|
|
227
|
+
const branch = branchRaw !== '' ? branchRaw : null;
|
|
228
|
+
// Q-2: имя remote может содержать '/' — надёжный источник %(upstream:remotename);
|
|
229
|
+
// разбор upstream по первому '/' остаётся только запасной эвристикой
|
|
230
|
+
let remote = null;
|
|
231
|
+
if (upstream !== null && branch !== null) {
|
|
232
|
+
const nameRes = await run(['for-each-ref', '--format=%(upstream:remotename)', `refs/heads/${branch}`]);
|
|
233
|
+
const remoteName = nameRes.code === 0 ? nameRes.stdout.trim() : '';
|
|
234
|
+
remote = remoteName !== '' ? remoteName : (upstream.split('/')[2] ?? null);
|
|
235
|
+
}
|
|
236
|
+
let localVsRemote;
|
|
237
|
+
let freshness;
|
|
238
|
+
if (upstream === null) {
|
|
239
|
+
localVsRemote = { ...emptyRemote, relation: hasRemote ? 'no-upstream' : 'no-remote' };
|
|
240
|
+
freshness = { ...noFreshness };
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
const remotePrefix = remote !== null ? `refs/remotes/${remote}/` : null;
|
|
244
|
+
const remoteRef = remotePrefix !== null && upstream.startsWith(remotePrefix)
|
|
245
|
+
? `refs/heads/${upstream.slice(remotePrefix.length)}`
|
|
246
|
+
: `refs/heads/${upstream.split('/').slice(3).join('/')}`;
|
|
247
|
+
const tracking = await run(['rev-parse', '--verify', '--quiet', upstream]);
|
|
248
|
+
const trackingSha = tracking.code === 0 ? tracking.stdout.trim() : null;
|
|
249
|
+
let liveHead = null;
|
|
250
|
+
let reachable = false;
|
|
251
|
+
let observedAt = null;
|
|
252
|
+
try {
|
|
253
|
+
const ls = await run(['ls-remote', remote ?? '.', remoteRef], LS_REMOTE_TIMEOUT_MS);
|
|
254
|
+
if (ls.code === 0) {
|
|
255
|
+
reachable = true;
|
|
256
|
+
observedAt = deps.now().toISOString();
|
|
257
|
+
const match = ls.stdout
|
|
258
|
+
.split('\n')
|
|
259
|
+
.map((l) => l.trim())
|
|
260
|
+
.find((l) => l !== '');
|
|
261
|
+
liveHead = match !== undefined ? match.split('\t')[0] : null;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
reachable = false; // раннер упал (например, процесс убит таймаутом)
|
|
266
|
+
}
|
|
267
|
+
if (!reachable) {
|
|
268
|
+
// недоступен → UNKNOWN (строка 2); relation считаем по tracking-ref, это наблюдение помечаем none
|
|
269
|
+
freshness = { observed_at: null, method: 'none', reachable: false };
|
|
270
|
+
const cmp = await compareWithRemote(run, head, trackingSha);
|
|
271
|
+
localVsRemote = { upstream, remote, ...cmp, remote_head: null };
|
|
272
|
+
}
|
|
273
|
+
else if (liveHead !== null) {
|
|
274
|
+
freshness = { observed_at: observedAt, method: 'ls-remote', reachable: true };
|
|
275
|
+
const cmp = await compareWithRemote(run, head, liveHead);
|
|
276
|
+
localVsRemote = { upstream, remote, ...cmp, remote_head: liveHead };
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
// remote доступен, но ref на нём нет — деградация до tracking-ref (REQ-04)
|
|
280
|
+
freshness = { observed_at: observedAt, method: 'tracking-ref', reachable: true };
|
|
281
|
+
const cmp = await compareWithRemote(run, head, trackingSha);
|
|
282
|
+
localVsRemote = { upstream, remote, ...cmp, remote_head: null };
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
repository: { root, is_bare: isBare, origin_url_sanitized: originUrl },
|
|
287
|
+
worktree: { path: opts.cwd, kind },
|
|
288
|
+
branch,
|
|
289
|
+
head,
|
|
290
|
+
baseline,
|
|
291
|
+
target: opts.target ?? null,
|
|
292
|
+
dirty: { value: statusLines.length > 0, entries: statusLines.length },
|
|
293
|
+
unfinished_git_operation: unfinished,
|
|
294
|
+
local_vs_remote: localVsRemote,
|
|
295
|
+
branch_owner: opts.owner ?? null,
|
|
296
|
+
freshness_of_remote_observation: freshness,
|
|
297
|
+
collection_error: null,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
/** Сравнение HEAD с известным SHA remote: ancestry локально, без fetch (ADR-2). */
|
|
301
|
+
async function compareWithRemote(run, head, remoteSha) {
|
|
302
|
+
if (head === null || remoteSha === null || remoteSha === '') {
|
|
303
|
+
// без head/remote-SHA счёт невозможен; ближайшее честное отношение — remote впереди
|
|
304
|
+
return { relation: 'remote-ahead-unfetched', ahead: null, behind: null };
|
|
305
|
+
}
|
|
306
|
+
if (remoteSha === head)
|
|
307
|
+
return { relation: 'in-sync', ahead: 0, behind: 0 };
|
|
308
|
+
const present = await run(['rev-parse', '--verify', '--quiet', `${remoteSha}^{commit}`]);
|
|
309
|
+
if (present.code !== 0)
|
|
310
|
+
return { relation: 'remote-ahead-unfetched', ahead: null, behind: null };
|
|
311
|
+
const counts = await run(['rev-list', '--left-right', '--count', `${head}...${remoteSha}`]);
|
|
312
|
+
if (counts.code !== 0) {
|
|
313
|
+
// Q-1: счёт не получен — честный носитель «неизвестно» по ADR-2 (null), не выдуманный 0/0/in-sync
|
|
314
|
+
return { relation: 'remote-ahead-unfetched', ahead: null, behind: null };
|
|
315
|
+
}
|
|
316
|
+
const [aheadRaw, behindRaw] = counts.stdout.trim().split(/\s+/);
|
|
317
|
+
const ahead = Number(aheadRaw);
|
|
318
|
+
const behind = Number(behindRaw);
|
|
319
|
+
const safeAhead = Number.isFinite(ahead) ? ahead : 0;
|
|
320
|
+
const safeBehind = Number.isFinite(behind) ? behind : 0;
|
|
321
|
+
const relation = safeAhead > 0 && safeBehind > 0 ? 'diverged' : safeBehind > 0 ? 'behind' : safeAhead > 0 ? 'ahead' : 'in-sync';
|
|
322
|
+
return { relation, ahead: safeAhead, behind: safeBehind };
|
|
323
|
+
}
|
|
324
|
+
/** Полный отчёт: факты + вердикт; внутренние поля в JSON не попадают. */
|
|
325
|
+
export async function runGitInspect(deps, opts) {
|
|
326
|
+
const facts = await collectGitFacts(deps, opts);
|
|
327
|
+
const { collection_error, ...reportFacts } = facts;
|
|
328
|
+
void collection_error;
|
|
329
|
+
return { schema_version: 1, observed_at: deps.now().toISOString(), ...reportFacts, ...computeVerdict(facts) };
|
|
330
|
+
}
|
|
331
|
+
const execFileAsync = promisify(execFile);
|
|
332
|
+
/** Адаптер порта GitRunner: execFile('git') без shell; таймаут — опцией execFile (NFR-02). */
|
|
333
|
+
export function createExecFileGitRunner() {
|
|
334
|
+
return async (args, opts) => {
|
|
335
|
+
try {
|
|
336
|
+
const { stdout, stderr } = await execFileAsync('git', args, {
|
|
337
|
+
cwd: opts.cwd,
|
|
338
|
+
timeout: opts.timeoutMs,
|
|
339
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
340
|
+
windowsHide: true,
|
|
341
|
+
});
|
|
342
|
+
return { code: 0, stdout: String(stdout), stderr: String(stderr) };
|
|
343
|
+
}
|
|
344
|
+
catch (err) {
|
|
345
|
+
// ненулевой exit или убитый таймаутом процесс — единый контракт {code, stdout, stderr}
|
|
346
|
+
const e = err;
|
|
347
|
+
return {
|
|
348
|
+
code: typeof e.code === 'number' ? e.code : 1,
|
|
349
|
+
stdout: String(e.stdout ?? ''),
|
|
350
|
+
stderr: String(e.stderr ?? ''),
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/** ADR-3: exit-код кодирует вердикт — UNKNOWN не возвращает 0. */
|
|
356
|
+
export function gitInspectExitCode(verdict) {
|
|
357
|
+
return verdict === 'PASS' ? 0 : verdict === 'VIOLATION' ? 1 : 2;
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=git-inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-inspect.js","sourceRoot":"","sources":["../../../src/app/use-cases/git-inspect.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -58,7 +58,8 @@ harness; текст пожелания не доказывает фактиче
|
|
|
58
58
|
|
|
59
59
|
TASK — короткая программа: один проверяемый результат/вопрос, вклад в цель,
|
|
60
60
|
источники нормы, baseline/cwd, read/write scope, проверка, полная методика
|
|
61
|
-
действия, относящиеся
|
|
61
|
+
действия, относящиеся политики/исключения и действующие
|
|
62
|
+
`ACTIVE_CONSTRAINTS`/`DECISIONS[]`, инструменты и стоп-условие.
|
|
62
63
|
До запуска проверь: результат достижим без выбора нового плана самим L2?
|
|
63
64
|
COMPLEX — работа для твоей декомпозиции, а не целое поручение воркеру.
|
|
64
65
|
Диагностику разделяй на конкретные проверки; ревью — на конечные мандаты,
|
|
@@ -189,8 +190,9 @@ handoff; не маскируй отказ памяти файлом в доку
|
|
|
189
190
|
7. Новый id сеанса не доказывает чистую изоляцию: если host наследует историю родителя,
|
|
190
191
|
независимость не закрыта — результат остаётся `INCONCLUSIVE` либо ограниченным;
|
|
191
192
|
честный отчёт о возможностях host ≠ успешная независимая приёмка.
|
|
192
|
-
8. Незавершённая приёмка при замене не обнуляется: известный
|
|
193
|
-
замечания
|
|
193
|
+
8. Незавершённая приёмка при замене не обнуляется: известный результат, открытые
|
|
194
|
+
замечания и действующие `ACTIVE_CONSTRAINTS`/`DECISIONS[]` передаются через
|
|
195
|
+
handoff. Учёт фактических расходов — A1.1/E2; без связей
|
|
194
196
|
результат помечается «неизвестно с покрытием», не нулём.
|
|
195
197
|
|
|
196
198
|
### Порядок replace
|
|
@@ -43,13 +43,22 @@ wolf-debug: один осмысленный обход в scope, затем FRIC
|
|
|
43
43
|
где вести рабочие материалы.
|
|
44
44
|
- Входы и назначенная методика — какие нормы и файлы читать и каким процессом
|
|
45
45
|
исполнять; недостающий обязательный вход запрашивается, не додумывается.
|
|
46
|
+
- `ACTIVE_CONSTRAINTS` — действующие ограничения задачи: короткие строки
|
|
47
|
+
«что действует → источник/основание» (правило/решение памяти с ID, документ
|
|
48
|
+
с revision). Отсутствует — ограничений сверх общих норм нет; пересказ всех
|
|
49
|
+
правил проекта не требуется.
|
|
50
|
+
- `DECISIONS[]` — принятые по задаче решения, влияющие на текущую работу:
|
|
51
|
+
`D-id`, что решили (одной строкой), почему/что отвергнуто, основание/источник.
|
|
52
|
+
Одна строка на решение; не история обсуждения. Отсутствует — влияющих решений нет.
|
|
46
53
|
- Проверка — точные команды или процедуры и ожидаемый результат; запускает исполнитель.
|
|
47
54
|
- Конечный бюджет и stop/return — лимит работы и условия немедленного возврата L1.
|
|
48
55
|
- Ожидаемый RESULT — форма отчёта по роли, включая допустимые статусы и вердикты.
|
|
49
56
|
|
|
50
57
|
Инварианты ядра: применимое ядерное поле нельзя опустить; неизвестный обязательный
|
|
51
58
|
вход явно запрашивается (`NEEDS_CONTEXT`), не заполняется заглушкой. Опускание
|
|
52
|
-
неприменимого профильного поля — не дефект поручения.
|
|
59
|
+
неприменимого профильного поля — не дефект поручения. ACTIVE_CONSTRAINTS
|
|
60
|
+
и DECISIONS[] передаются, когда действуют: их отсутствие — заявление
|
|
61
|
+
об отсутствии действующих ограничений/решений, а не пропуск поля.
|
|
53
62
|
|
|
54
63
|
### Профили поручения
|
|
55
64
|
|
|
@@ -79,7 +88,7 @@ wolf-debug: один осмысленный обход в scope, затем FRIC
|
|
|
79
88
|
|
|
80
89
|
| Термин | Значение |
|
|
81
90
|
| --- | --- |
|
|
82
|
-
| TASK | Поручение исполнителю: ядро из
|
|
91
|
+
| TASK | Поручение исполнителю: ядро из десяти элементов плюс поля применимого профиля. |
|
|
83
92
|
| RESULT | Отчёт исполнителя по форме своей роли: статус или вердикт, изменения, границы. |
|
|
84
93
|
| EVIDENCE | Подтверждение claim/AC: команда или процедура, cwd, revision, exit, результат. |
|
|
85
94
|
| ACCEPTANCE | Сверка каждого AC с evidence и итоговый verdict приёмки у L0. |
|
|
@@ -41,6 +41,8 @@ TASK/RESULT/EVIDENCE — по using-skills/references/contracts.md. L0 не вы
|
|
|
41
41
|
После результата заверши вызов. Не добавляй соседних исследований и проверок
|
|
42
42
|
без влияющего на вывод основания. При продолжении того же непринятого результата
|
|
43
43
|
используй ответ L1 и сохранённое состояние; уже достаточное не повторяй.
|
|
44
|
+
Соблюдай `ACTIVE_CONSTRAINTS` своего TASK и не переоткрывай без нового основания
|
|
45
|
+
вопросы, закрытые в `DECISIONS[]`; контрпример или изменившееся основание верни L1.
|
|
44
46
|
Новая независимая задача получает fresh по решению L1. После приёмки ненужный
|
|
45
47
|
экземпляр закрывается без отдельной церемонии, с сохранением нужных материалов
|
|
46
48
|
и окончанием записи; закрытие сессии не удаляет worktree/evidence.
|
|
@@ -13,6 +13,8 @@ description: "Применять на Git-этапах задачи: вход/в
|
|
|
13
13
|
|
|
14
14
|
## Вход / возобновление (G0)
|
|
15
15
|
|
|
16
|
+
Структурный факт даёт `wolf git-inspect` (B0.5): JSON с вердиктом PASS|VIOLATION|UNKNOWN, facts/reasons/allowed_next_actions. Перечисленные ниже команды — для адресной детализации.
|
|
17
|
+
|
|
16
18
|
§6: `git rev-parse --show-toplevel`, `git remote -v`, `git worktree list --porcelain`, `git status --porcelain`, `git rev-parse HEAD`, `git ls-remote` с временем наблюдения; незавершённые merge/rebase/cherry-pick; владелец, baseline, сравнение с опубликованной ветвью и целью MR. Нет remote/сети — «не удалось проверить», не успех (§6.5). Локальный `main` впереди или разошёлся — не push и не reset (§6.2).
|
|
17
19
|
|
|
18
20
|
## Создание ветки и worktree (G1)
|
|
@@ -37,7 +39,7 @@ description: "Применять на Git-этапах задачи: вход/в
|
|
|
37
39
|
|
|
38
40
|
## Что не поставлено
|
|
39
41
|
|
|
40
|
-
Нет MR-статусов и адаптера хостинга, CI-проверок, очереди интеграции (§11), тегов/registry/выпуска,
|
|
42
|
+
Нет MR-статусов и адаптера хостинга, CI-проверок, очереди интеграции (§11), тегов/registry/выпуска, переносимых git-мутаций B1 (структурный read-only `git inspect` и JSON-вердикт поставлены в B0.5 как `wolf git-inspect`), scheduler и постоянного контролёра. Гейты G3–G8 не автоматизированы и не являются поставленным гейтом: при необходимости их выполняют люди вручную. Отсутствующее не называть доступной командой.
|
|
41
43
|
|
|
42
44
|
## Гейт перехода
|
|
43
45
|
|
|
@@ -31,7 +31,8 @@ Snapshot не становится проектным документом ав
|
|
|
31
31
|
- task/thread ID, цель, AC, scope и текущий ответственный;
|
|
32
32
|
- base/current revision, cwd, branch/worktree, dirty/untracked, patch или другой доступный способ восстановления;
|
|
33
33
|
- выполненное и оставшееся, dependencies, ожидающий внешний исход;
|
|
34
|
-
-
|
|
34
|
+
- действующие ограничения задачи (`ACTIVE_CONSTRAINTS`) и активные методики/политики — IDs/версии;
|
|
35
|
+
- принятые решения (`DECISIONS[]`: D-id, что решили одной строкой, почему, основание/источник) — только влияющие на продолжение;
|
|
35
36
|
- проверки с evidence и областью актуальности;
|
|
36
37
|
- гипотезы и неудачные эксперименты, вопросы и блокеры;
|
|
37
38
|
- следующий безопасный шаг, права и действия, уже разрешённые пользователем.
|
|
@@ -22,7 +22,7 @@ description: "Применять при исполнении утверждён
|
|
|
22
22
|
|
|
23
23
|
1. Разрежь работу до конечных мандатов L2; архитектуру, стратегию поиска и зависимости определяет L1. Назначь владельца проверки общих связей. Выбери независимые ready-задачи, запусти параллельно в бюджете и с изоляцией; собери каждому TASK из using-skills по канону ядра. Выбор сеанса L2 — по канону executor-lead. Передай ссылки и минимальный достаточный контекст, проверенные контракты и expected RESULT. L2 разрешено читать нужные файлы и потребителей; история родительской сессии не наследуется.
|
|
24
24
|
2. Доставь полную методику действия L2 и активный playbook, относящиеся нормы и TASK/RESULT/EVIDENCE; не весь процесс L1/ACCEPTANCE. Для регулярного шага/трения L1 проверяет tool-библиотеку и передаёт подходящий контракт. L2 не выбирает организацию и не спавнит.
|
|
25
|
-
3. Принимай RESULT по готовности: DONE → diff/evidence; DONE_WITH_CONCERNS → риск до ревью; NEEDS_CONTEXT → точный вход; BLOCKED → решение L1, готовое средство или разбиение. Следующий вызов получает решённый вопрос, короткий
|
|
25
|
+
3. Принимай RESULT по готовности: DONE → diff/evidence; DONE_WITH_CONCERNS → риск до ревью; NEEDS_CONTEXT → точный вход; BLOCKED → решение L1, готовое средство или разбиение. Следующий вызов получает решённый вопрос, короткий остаток, новый конечный лимит и действующие `ACTIVE_CONSTRAINTS`/`DECISIONS[]` той же задачи. Один эксперт — при точном пробеле; дорогой консилиум — только по критериям рамки L1. Изменение цели → L0. Дефект правила → жалобный триаж/Стюард. Не возвращай L2 прежнее «разберись» и не запускай идентичный провал.
|
|
26
26
|
4. Проверь allowlist и новые файлы, включая untracked: RESULT L2 не требует отдельного документа. Частные отчёты/скрипты в docs/dev нарушают состав папки; L1 встраивает полезные выводы в основные документы. Не удаляй чужое/прежнее автоматически. Проверь отсутствие посторонних изменений. Воркер не коммитит; L1 фиксирует результат разрешённым git-действием после проверок, включая авторизованность самого коммита.
|
|
27
27
|
5. Организуй независимое ревью соответствия, затем качества. Для малой задачи два мандата может выполнить один независимый reviewer в явном порядке; для значимого риска используй отдельные чистые ревью. Независимость от исполнителя обязательна.
|
|
28
28
|
6. Правки возвращай исполнителю с finding IDs. Изменения контракта повторно проверяются на соответствие, даже если проблема пришла с стадии качества. Minor не блокирует без объяснённого риска; сохрани техдолг в подходящем существующем объекте.
|
package/update-map.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "2.
|
|
3
|
-
"prev": "2.
|
|
2
|
+
"version": "2.27.0",
|
|
3
|
+
"prev": "2.26.0",
|
|
4
4
|
"files": [
|
|
5
5
|
{
|
|
6
6
|
"path": "base/agents/executor-lead.md",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
{
|
|
166
166
|
"path": "base/skills/wolf-execute/scripts/workflow-helper.py",
|
|
167
167
|
"kind": "skill",
|
|
168
|
-
"category": "
|
|
168
|
+
"category": "unchanged"
|
|
169
169
|
},
|
|
170
170
|
{
|
|
171
171
|
"path": "base/skills/wolf-execute/SKILL.md",
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
{
|
|
206
206
|
"path": "base/skills/wolf-git/SKILL.md",
|
|
207
207
|
"kind": "skill",
|
|
208
|
-
"category": "
|
|
208
|
+
"category": "changed"
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
"path": "base/skills/wolf-handoff/SKILL.md",
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
{
|
|
278
278
|
"template": "base/playbooks/complaint-protocol.md",
|
|
279
279
|
"owner_skill": "mr-wolf",
|
|
280
|
-
"category": "
|
|
280
|
+
"category": "unchanged",
|
|
281
281
|
"seed": true
|
|
282
282
|
},
|
|
283
283
|
{
|