mister-wolf 2.15.2 → 2.16.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/README.md +4 -16
- package/README.ru.md +19 -26
- package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
- package/dist/adapters/cli/cli-entry.js +6 -0
- package/dist/adapters/cli/cli-entry.js.map +1 -1
- package/dist/adapters/cli/commands/memory-add.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-add.js +26 -3
- package/dist/adapters/cli/commands/memory-add.js.map +1 -1
- package/dist/adapters/cli/commands/memory-call.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-call.js +22 -2
- package/dist/adapters/cli/commands/memory-call.js.map +1 -1
- package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-doctor.js +57 -4
- package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
- package/dist/adapters/cli/commands/memory-init.d.ts +2 -11
- package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-init.js +59 -112
- package/dist/adapters/cli/commands/memory-init.js.map +1 -1
- package/dist/adapters/cli/commands/memory-promote.d.ts +3 -0
- package/dist/adapters/cli/commands/memory-promote.d.ts.map +1 -0
- package/dist/adapters/cli/commands/memory-promote.js +15 -0
- package/dist/adapters/cli/commands/memory-promote.js.map +1 -0
- package/dist/adapters/cli/type-command-generator.d.ts.map +1 -1
- package/dist/adapters/cli/type-command-generator.js +5 -0
- package/dist/adapters/cli/type-command-generator.js.map +1 -1
- package/dist/adapters/fs/fs-project-initializer.d.ts.map +1 -1
- package/dist/adapters/fs/fs-project-initializer.js +9 -6
- package/dist/adapters/fs/fs-project-initializer.js.map +1 -1
- package/dist/adapters/fs/memory-root.d.ts +13 -0
- package/dist/adapters/fs/memory-root.d.ts.map +1 -0
- package/dist/adapters/fs/memory-root.js +34 -0
- package/dist/adapters/fs/memory-root.js.map +1 -0
- package/dist/adapters/render/opencode/opencode-renderer.d.ts.map +1 -1
- package/dist/adapters/render/opencode/opencode-renderer.js +16 -0
- package/dist/adapters/render/opencode/opencode-renderer.js.map +1 -1
- package/dist/app/use-cases/add-memory-object.d.ts +8 -0
- package/dist/app/use-cases/add-memory-object.d.ts.map +1 -1
- package/dist/app/use-cases/add-memory-object.js +21 -1
- package/dist/app/use-cases/add-memory-object.js.map +1 -1
- package/dist/app/use-cases/detect-unaggregated-lessons.d.ts +3 -1
- package/dist/app/use-cases/detect-unaggregated-lessons.d.ts.map +1 -1
- package/dist/app/use-cases/detect-unaggregated-lessons.js +6 -2
- package/dist/app/use-cases/detect-unaggregated-lessons.js.map +1 -1
- package/dist/app/use-cases/get-call-injections.d.ts +9 -0
- package/dist/app/use-cases/get-call-injections.d.ts.map +1 -1
- package/dist/app/use-cases/get-call-injections.js +24 -3
- package/dist/app/use-cases/get-call-injections.js.map +1 -1
- package/dist/app/use-cases/gitignore-block.d.ts +11 -0
- package/dist/app/use-cases/gitignore-block.d.ts.map +1 -0
- package/dist/app/use-cases/gitignore-block.js +29 -0
- package/dist/app/use-cases/gitignore-block.js.map +1 -0
- package/dist/app/use-cases/init-project.d.ts +30 -4
- package/dist/app/use-cases/init-project.d.ts.map +1 -1
- package/dist/app/use-cases/init-project.js +77 -11
- package/dist/app/use-cases/init-project.js.map +1 -1
- package/dist/app/use-cases/promote-memory.d.ts +22 -0
- package/dist/app/use-cases/promote-memory.d.ts.map +1 -0
- package/dist/app/use-cases/promote-memory.js +31 -0
- package/dist/app/use-cases/promote-memory.js.map +1 -0
- package/dist/app/use-cases/repair-storage.d.ts +31 -0
- package/dist/app/use-cases/repair-storage.d.ts.map +1 -0
- package/dist/app/use-cases/repair-storage.js +65 -0
- package/dist/app/use-cases/repair-storage.js.map +1 -0
- package/dist/app/use-cases/supersede-memory-object.d.ts.map +1 -1
- package/dist/app/use-cases/supersede-memory-object.js +14 -0
- package/dist/app/use-cases/supersede-memory-object.js.map +1 -1
- package/dist/bootstrap/container.d.ts +2 -0
- package/dist/bootstrap/container.d.ts.map +1 -1
- package/dist/bootstrap/container.js +10 -6
- package/dist/bootstrap/container.js.map +1 -1
- package/dist/domain/governance.d.ts.map +1 -1
- package/dist/domain/governance.js +2 -1
- package/dist/domain/governance.js.map +1 -1
- package/dist/domain/mask-secrets.d.ts +8 -0
- package/dist/domain/mask-secrets.d.ts.map +1 -0
- package/dist/domain/mask-secrets.js +20 -0
- package/dist/domain/mask-secrets.js.map +1 -0
- package/dist/domain/memory-types.d.ts +2 -2
- package/dist/domain/memory-types.d.ts.map +1 -1
- package/dist/domain/memory-types.js +3 -1
- package/dist/domain/memory-types.js.map +1 -1
- package/dist/domain/schemas/memory-event-schema.d.ts +1 -0
- package/dist/domain/schemas/memory-event-schema.d.ts.map +1 -1
- package/dist/domain/schemas/memory-event-schema.js +1 -0
- package/dist/domain/schemas/memory-event-schema.js.map +1 -1
- package/dist/ports/base-set-renderer.port.d.ts +5 -1
- package/dist/ports/base-set-renderer.port.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/.wolf/router.log +1 -1
- package/templates/base/agents/executor-lead.md +14 -0
- package/templates/base/agents/mr-wolf.md +47 -4
- package/templates/base/skills/finishing-a-development-branch/SKILL.md +20 -1
- package/templates/base/skills/receiving-code-review/SKILL.md +20 -1
- package/templates/base/skills/requesting-code-review/SKILL.md +20 -1
- package/templates/base/skills/test-driven-development/SKILL.md +20 -1
- package/templates/base/skills/using-git-worktrees/SKILL.md +22 -3
- package/templates/base/skills/using-skills/SKILL.md +56 -18
- package/templates/base/skills/verification-before-completion/SKILL.md +20 -1
- package/templates/base/skills/wolf-brainstorm/SKILL.md +54 -17
- package/templates/base/skills/wolf-debug/SKILL.md +21 -2
- package/templates/base/skills/wolf-design/SKILL.md +20 -1
- package/templates/base/skills/wolf-execute/SKILL.md +21 -2
- package/templates/base/skills/wolf-explain/SKILL.md +104 -0
- package/templates/base/skills/wolf-handoff/SKILL.md +20 -1
- package/templates/base/skills/wolf-plan/SKILL.md +20 -1
- package/templates/base/skills/wolf-review/SKILL.md +20 -1
- package/templates/base/skills/wolf-sdd/SKILL.md +21 -2
- package/templates/base/skills/wolf-skill-intake/SKILL.md +20 -1
- package/templates/base/skills/wolf-testplan/SKILL.md +20 -1
- package/templates/base/skills/writing-skills/SKILL.md +23 -4
- package/templates/opencode/plugins/wolf-session-start.js +40 -13
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { UserFacingError } from '../../domain/errors.js';
|
|
2
|
+
export const MAIN_SCOPE = 'main';
|
|
3
|
+
/** WP3 §6.2 (спека 2.16): шаг finishing-a-development-branch — scoped-объекты
|
|
4
|
+
* ворктрии становятся main. Автоудаления нет (P3): только перевод scope. */
|
|
5
|
+
export async function promoteWorktreeMemory(deps, worktree) {
|
|
6
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(worktree)) {
|
|
7
|
+
throw new UserFacingError(`Invalid worktree name: "${worktree}" (see: git worktree list)`);
|
|
8
|
+
}
|
|
9
|
+
const scopeFrom = `worktree:${worktree}`;
|
|
10
|
+
const run = async () => {
|
|
11
|
+
const objects = (await deps.store.list()).filter((o) => o.scope === scopeFrom);
|
|
12
|
+
const now = deps.clock.now();
|
|
13
|
+
let promoted = 0;
|
|
14
|
+
for (const o of objects) {
|
|
15
|
+
await deps.store.update(o.id, { scope: MAIN_SCOPE });
|
|
16
|
+
await deps.log.append({
|
|
17
|
+
id: deps.idGen.generateEventId(now),
|
|
18
|
+
type: 'memory.scope_promoted',
|
|
19
|
+
timestamp: now.toISOString(),
|
|
20
|
+
actor: 'system:wolf',
|
|
21
|
+
payload: { memory_id: o.id, from: scopeFrom, to: MAIN_SCOPE },
|
|
22
|
+
});
|
|
23
|
+
if (deps.index)
|
|
24
|
+
await deps.index.indexObject({ ...o, scope: MAIN_SCOPE });
|
|
25
|
+
promoted += 1;
|
|
26
|
+
}
|
|
27
|
+
return { promoted, scopeFrom };
|
|
28
|
+
};
|
|
29
|
+
return deps.lock ? deps.lock.withLock(run) : run();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=promote-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote-memory.js","sourceRoot":"","sources":["../../../src/app/use-cases/promote-memory.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAOjC;4EAC4E;AAC5E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAOC,EACD,QAAgB;IAEhB,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,eAAe,CAAC,2BAA2B,QAAQ,4BAA4B,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,QAAQ,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,IAA4B,EAAE;QAC7C,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAwB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QACvG,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAsC,CAAC,CAAC;YACzF,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;gBACnC,IAAI,EAAE,uBAAuB;gBAC7B,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,KAAK,EAAE,aAAa;gBACpB,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE;aAC9D,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAW,CAAC,CAAC;YACnF,QAAQ,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { MemoryStore } from '../../ports/memory-store.port.js';
|
|
2
|
+
import { EventLog } from '../../ports/event-log.port.js';
|
|
3
|
+
import { Clock } from '../../ports/clock.port.js';
|
|
4
|
+
import { IdGenerator } from '../../ports/id-generator.port.js';
|
|
5
|
+
import { SearchIndex } from '../../ports/search-index.port.js';
|
|
6
|
+
import { MemoryLock } from '../../ports/memory-lock.port.js';
|
|
7
|
+
export interface RepairReport {
|
|
8
|
+
reindexed: number;
|
|
9
|
+
eventsAppended: number;
|
|
10
|
+
danglingEvents: number;
|
|
11
|
+
/** Человекочитаемый план (dry-run) / лог (apply). */
|
|
12
|
+
actions: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface RepairDeps {
|
|
15
|
+
store: MemoryStore;
|
|
16
|
+
log: EventLog;
|
|
17
|
+
clock: Clock;
|
|
18
|
+
idGen: IdGenerator;
|
|
19
|
+
index?: SearchIndex;
|
|
20
|
+
/** Сырые непустые строки events.jsonl; не передан — events-часть пропускается. */
|
|
21
|
+
readEventLines?: () => Promise<string[]>;
|
|
22
|
+
lock?: MemoryLock;
|
|
23
|
+
}
|
|
24
|
+
/** WP4 (спека 2.16 §7). Стратегия источников (фиксация планом волны 2.16):
|
|
25
|
+
* markdown — истина объектов; events.jsonl — истина журнала (append-only,
|
|
26
|
+
* недостающие memory.added дозаписываются из markdown); индекс — производный
|
|
27
|
+
* (rebuild). Восстановление идемпотентно; битые строки журнала пропускаются. */
|
|
28
|
+
export declare function repairStorage(deps: RepairDeps, opts: {
|
|
29
|
+
dryRun: boolean;
|
|
30
|
+
}): Promise<RepairReport>;
|
|
31
|
+
//# sourceMappingURL=repair-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-storage.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/repair-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAOD;;;gFAGgF;AAChF,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CA0DtG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** WP4 (спека 2.16 §7). Стратегия источников (фиксация планом волны 2.16):
|
|
2
|
+
* markdown — истина объектов; events.jsonl — истина журнала (append-only,
|
|
3
|
+
* недостающие memory.added дозаписываются из markdown); индекс — производный
|
|
4
|
+
* (rebuild). Восстановление идемпотентно; битые строки журнала пропускаются. */
|
|
5
|
+
export async function repairStorage(deps, opts) {
|
|
6
|
+
const run = async () => {
|
|
7
|
+
const actions = [];
|
|
8
|
+
const objects = await deps.store.list();
|
|
9
|
+
const byId = new Map(objects.map((o) => [o.id, o]));
|
|
10
|
+
// 1. Индекс — производный: полный rebuild (идемпотентен).
|
|
11
|
+
let reindexed = 0;
|
|
12
|
+
if (deps.index) {
|
|
13
|
+
actions.push(`index: rebuild from ${objects.length} markdown object(s)`);
|
|
14
|
+
if (!opts.dryRun)
|
|
15
|
+
await deps.index.rebuild(objects);
|
|
16
|
+
reindexed = objects.length;
|
|
17
|
+
}
|
|
18
|
+
// 2. Журнал — истина: каждой markdown-записи соответствует memory.added.
|
|
19
|
+
let eventsAppended = 0;
|
|
20
|
+
let danglingEvents = 0;
|
|
21
|
+
const lines = deps.readEventLines ? await deps.readEventLines() : [];
|
|
22
|
+
const logged = new Set();
|
|
23
|
+
for (const line of lines) {
|
|
24
|
+
try {
|
|
25
|
+
const e = JSON.parse(line);
|
|
26
|
+
const id = e.payload?.memory_id;
|
|
27
|
+
if (typeof id !== 'string')
|
|
28
|
+
continue;
|
|
29
|
+
if (e.type === 'memory.added')
|
|
30
|
+
logged.add(id);
|
|
31
|
+
if (!byId.has(id))
|
|
32
|
+
danglingEvents += 1;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// битая строка журнала — пропускаем; идемпотентный дозапуск завершает восстановление
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (danglingEvents > 0) {
|
|
39
|
+
actions.push(`events: ${danglingEvents} dangling event(s) reference missing objects — warning only (journal is append-only truth)`);
|
|
40
|
+
}
|
|
41
|
+
const missing = objects.filter((o) => !logged.has(o.id));
|
|
42
|
+
if (missing.length > 0) {
|
|
43
|
+
actions.push(`events: backfill ${missing.length} missing memory.added event(s) from markdown`);
|
|
44
|
+
if (!opts.dryRun) {
|
|
45
|
+
for (const o of missing) {
|
|
46
|
+
await deps.log.append({
|
|
47
|
+
id: deps.idGen.generateEventId(new Date(o.created_at)),
|
|
48
|
+
type: 'memory.added',
|
|
49
|
+
timestamp: o.created_at,
|
|
50
|
+
actor: o.created_by,
|
|
51
|
+
payload: { memory_id: o.id, type: o.type, ...(o.tags.length > 0 ? { tags: o.tags } : {}) },
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
eventsAppended = missing.length;
|
|
56
|
+
}
|
|
57
|
+
// rebuild-строка в actions присутствует при каждом запуске с index (идемпотентная
|
|
58
|
+
// рутина), поэтому критерий «нечего чинить» — отсутствие дозаписей журнала
|
|
59
|
+
if (eventsAppended === 0)
|
|
60
|
+
actions.push('storage is consistent — nothing to repair');
|
|
61
|
+
return { reindexed, eventsAppended, danglingEvents, actions };
|
|
62
|
+
};
|
|
63
|
+
return deps.lock ? deps.lock.withLock(run) : run();
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=repair-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-storage.js","sourceRoot":"","sources":["../../../src/app/use-cases/repair-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supersede-memory-object.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/supersede-memory-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAQ7D,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,EACrH,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"supersede-memory-object.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/supersede-memory-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAQ7D,wBAAsB,qBAAqB,CACzC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,EACrH,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -23,6 +23,20 @@ export async function supersedeMemoryObject(deps, oldId, newId) {
|
|
|
23
23
|
const newObject = await deps.store.get(newId);
|
|
24
24
|
if (!newObject)
|
|
25
25
|
throw new UserFacingError(`Replacement memory object not found: ${newId}`);
|
|
26
|
+
// T6 (спека 2.16 §10): supersede не создаёт цикл в цепочке superseded_by
|
|
27
|
+
// (сегодня цикл ловится только при чтении — запись должна отказывать раньше)
|
|
28
|
+
const seen = new Set([oldId, newId]);
|
|
29
|
+
let cursor = newObject.superseded_by ?? null;
|
|
30
|
+
while (cursor !== null) {
|
|
31
|
+
if (cursor === oldId) {
|
|
32
|
+
throw new UserFacingError(`Supersede would create a cycle: ${oldId} -> ${newId} -> ${oldId}`);
|
|
33
|
+
}
|
|
34
|
+
if (seen.has(cursor))
|
|
35
|
+
break; // уже существующий цикл дальше не разматываем
|
|
36
|
+
seen.add(cursor);
|
|
37
|
+
const cur = await deps.store.get(cursor);
|
|
38
|
+
cursor = cur?.superseded_by ?? null;
|
|
39
|
+
}
|
|
26
40
|
const updated = await deps.store.update(oldId, { status: 'superseded', superseded_by: newId });
|
|
27
41
|
await deps.log.append({
|
|
28
42
|
id: deps.idGen.generateEventId(now),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supersede-memory-object.js","sourceRoot":"","sources":["../../../src/app/use-cases/supersede-memory-object.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,4EAA4E;AAC5E,qFAAqF;AACrF,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAqH,EACrH,KAAa,EACb,KAAa;IAEb,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;QACpC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,MAAM,IAAI,eAAe,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI;YACxB,CAAC,KAAK,EAAE,KAAK,CAAC;YACd,CAAC,aAAa,EAAE,KAAK,CAAC;SACd,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,eAAe,CAAC,wBAAwB,KAAK,OAAO,EAAE,yCAAyC,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,eAAe,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,eAAe,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/F,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;YACnC,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;SAC1C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/F,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"supersede-memory-object.js","sourceRoot":"","sources":["../../../src/app/use-cases/supersede-memory-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,5 +21,7 @@ export declare function createCliContainer(baseDir: string): {
|
|
|
21
21
|
scanner: HeuristicProjectScanner;
|
|
22
22
|
lock: FsMemoryLock;
|
|
23
23
|
declarations: readonly MemoryTypeDeclaration[];
|
|
24
|
+
memoryRoot: string;
|
|
25
|
+
worktree: string | null;
|
|
24
26
|
};
|
|
25
27
|
//# sourceMappingURL=container.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/bootstrap/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/bootstrap/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,OAAO,EAAiB,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAkCtF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;;;;;;EAqBjD"}
|
|
@@ -10,6 +10,7 @@ import { eventsPath, indexPath, relationsPath, memoryDir } from '../adapters/fs/
|
|
|
10
10
|
import { JsonlRelationLog } from '../adapters/fs/jsonl-relation-log.js';
|
|
11
11
|
import { FsMemoryLock } from '../adapters/fs/memory-lock.js';
|
|
12
12
|
import { loadWolfConfigSync } from '../adapters/fs/config-file.js';
|
|
13
|
+
import { resolveMemoryRoot } from '../adapters/fs/memory-root.js';
|
|
13
14
|
import { mergeTaxonomy } from '../domain/taxonomy.js';
|
|
14
15
|
import { CORE_TAXONOMY } from '../domain/memory-types.js';
|
|
15
16
|
import { ProjectsRegistry } from '../adapters/fs/projects-registry.js';
|
|
@@ -48,21 +49,24 @@ function selfHealRegistry(baseDir) {
|
|
|
48
49
|
}
|
|
49
50
|
export function createCliContainer(baseDir) {
|
|
50
51
|
selfHealRegistry(baseDir);
|
|
52
|
+
const mem = resolveMemoryRoot(baseDir);
|
|
51
53
|
const fs = new FsFileSystem();
|
|
52
54
|
// P300/2.14 §5.2: log создаётся раньше store (точка ребейза для P331)
|
|
53
|
-
const log = new JsonlEventLog(eventsPath(
|
|
55
|
+
const log = new JsonlEventLog(eventsPath(mem.root));
|
|
54
56
|
return {
|
|
55
|
-
store: new MarkdownMemoryStore(
|
|
57
|
+
store: new MarkdownMemoryStore(mem.root, undefined, log),
|
|
56
58
|
log,
|
|
57
|
-
index: new SQLiteSearchIndex(indexPath(
|
|
58
|
-
relations: new JsonlRelationLog(relationsPath(
|
|
59
|
+
index: new SQLiteSearchIndex(indexPath(mem.root)),
|
|
60
|
+
relations: new JsonlRelationLog(relationsPath(mem.root)),
|
|
59
61
|
clock: new SystemClock(),
|
|
60
62
|
idGen: new HashIdGenerator(),
|
|
61
63
|
initializer: new FsProjectInitializer(),
|
|
62
64
|
fs,
|
|
63
65
|
scanner: new HeuristicProjectScanner(fs),
|
|
64
|
-
lock: new FsMemoryLock(memoryDir(
|
|
65
|
-
declarations: loadDeclarations(
|
|
66
|
+
lock: new FsMemoryLock(memoryDir(mem.root)),
|
|
67
|
+
declarations: loadDeclarations(mem.root),
|
|
68
|
+
memoryRoot: mem.root,
|
|
69
|
+
worktree: mem.worktree,
|
|
66
70
|
};
|
|
67
71
|
}
|
|
68
72
|
//# sourceMappingURL=container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/bootstrap/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAA8B,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,yFAAyF;AACzF,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAAE,OAAO;QAC1D,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,mEAAmE;QACjG,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE,CAAC;IAC9B,sEAAsE;IACtE,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/bootstrap/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/domain/governance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AACxF,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IACrD,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAMA;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IACtC,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,MAAM,EAAE,CAMX;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,CAyCpE,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/domain/governance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AACxF,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IACrD,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAMA;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IACtC,YAAY,EAAE,WAAW,CAAC;IAC1B,UAAU,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;CACpB,GAAG,MAAM,EAAE,CAMX;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,CAyCpE,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAG3E"}
|
|
@@ -58,6 +58,7 @@ export const ALLOWED_TRANSITIONS = {
|
|
|
58
58
|
waiting_answer: ['active', 'archived'],
|
|
59
59
|
};
|
|
60
60
|
export function canTransition(from, to) {
|
|
61
|
-
|
|
61
|
+
// T4 (спека 2.16 §10): unknown-статус из битых данных — false, не TypeError
|
|
62
|
+
return ALLOWED_TRANSITIONS[from]?.includes(to) ?? false;
|
|
62
63
|
}
|
|
63
64
|
//# sourceMappingURL=governance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/domain/governance.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAKlD,OAAO;QACL,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACvC,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAIlC;IACC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,UAAU,KAAK,iBAAiB,IAAI,GAAG,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAyC;IACvE,kFAAkF;IAClF,uEAAuE;IACvE,0DAA0D;IAC1D,+DAA+D;IAC/D,MAAM,EAAE;QACN,OAAO;QACP,YAAY;QACZ,UAAU;QACV,aAAa;QACb,WAAW;QACX,UAAU;QACV,UAAU;QACV,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,kEAAkE;QAClE,SAAS;QACT,gBAAgB;QAChB,MAAM;KACP;IACD,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;IAChE,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IACnC,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IAC9C,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5C,2DAA2D;IAC3D,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC;IAC/C,yDAAyD;IACzD,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAClC,+EAA+E;IAC/E,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC/B,cAAc,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;CACvC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAkB,EAAE,EAAgB;IAChE,OAAO,mBAAmB,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/domain/governance.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAKlD,OAAO;QACL,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC;QACvC,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAIlC;IACC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,UAAU,KAAK,iBAAiB,IAAI,GAAG,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;QAC7E,QAAQ,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAyC;IACvE,kFAAkF;IAClF,uEAAuE;IACvE,0DAA0D;IAC1D,+DAA+D;IAC/D,MAAM,EAAE;QACN,OAAO;QACP,YAAY;QACZ,UAAU;QACV,aAAa;QACb,WAAW;QACX,UAAU;QACV,UAAU;QACV,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,kEAAkE;QAClE,SAAS;QACT,gBAAgB;QAChB,MAAM;KACP;IACD,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;IAChE,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IACnC,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IAC9C,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC;IAC5C,2DAA2D;IAC3D,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC;IAC/C,yDAAyD;IACzD,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAClC,+EAA+E;IAC/E,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC/B,cAAc,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;CACvC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAkB,EAAE,EAAgB;IAChE,4EAA4E;IAC5E,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** WP4 (спека 2.16 §7): doctor не печатает значения секретов.
|
|
2
|
+
* Известные префиксы — по паттерну; именованные присвоения (api_key=/token:/password=)
|
|
3
|
+
* маскируются значением целиком. Граница трактовки спеки: маскируется вывод doctor
|
|
4
|
+
* (issues/finding'и — единственный канал, куда попадают фрагменты чужих файлов:
|
|
5
|
+
* lint-artifacts.ts:103,175,196,208 печают срезы строк документов); тела объектов
|
|
6
|
+
* в get/list не маскируются (владелец может ветировать). */
|
|
7
|
+
export declare function maskSecrets(text: string): string;
|
|
8
|
+
//# sourceMappingURL=mask-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-secrets.d.ts","sourceRoot":"","sources":["../../src/domain/mask-secrets.ts"],"names":[],"mappings":"AAQA;;;;;4DAK4D;AAC5D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const SECRET_PATTERNS = [
|
|
2
|
+
/\bsk-[A-Za-z0-9_-]{8,}\b/g,
|
|
3
|
+
/\bgh[po]_[A-Za-z0-9]{16,}\b/g,
|
|
4
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,
|
|
5
|
+
/\bAKIA[0-9A-Z]{16}\b/g,
|
|
6
|
+
/\beyJ[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{10,}/g,
|
|
7
|
+
];
|
|
8
|
+
/** WP4 (спека 2.16 §7): doctor не печатает значения секретов.
|
|
9
|
+
* Известные префиксы — по паттерну; именованные присвоения (api_key=/token:/password=)
|
|
10
|
+
* маскируются значением целиком. Граница трактовки спеки: маскируется вывод doctor
|
|
11
|
+
* (issues/finding'и — единственный канал, куда попадают фрагменты чужих файлов:
|
|
12
|
+
* lint-artifacts.ts:103,175,196,208 печают срезы строк документов); тела объектов
|
|
13
|
+
* в get/list не маскируются (владелец может ветировать). */
|
|
14
|
+
export function maskSecrets(text) {
|
|
15
|
+
let out = text;
|
|
16
|
+
for (const re of SECRET_PATTERNS)
|
|
17
|
+
out = out.replace(re, '[redacted]');
|
|
18
|
+
return out.replace(/((?:api[-_]?key|token|secret|password)\s*[=:]\s*)(["']?)[^\s"']+\2/gi, '$1[redacted]');
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=mask-secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mask-secrets.js","sourceRoot":"","sources":["../../src/domain/mask-secrets.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAa;IAChC,2BAA2B;IAC3B,8BAA8B;IAC9B,mCAAmC;IACnC,uBAAuB;IACvB,8CAA8C;CAC/C,CAAC;AAEF;;;;;4DAK4D;AAC5D,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,EAAE,IAAI,eAAe;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC,OAAO,CAAC,sEAAsE,EAAE,cAAc,CAAC,CAAC;AAC7G,CAAC"}
|
|
@@ -56,8 +56,8 @@ declare const CORE_TAXONOMY_DECLS: readonly [{
|
|
|
56
56
|
readonly subdirShared: "rules";
|
|
57
57
|
readonly fields: {
|
|
58
58
|
readonly scope: {
|
|
59
|
-
readonly kind: "
|
|
60
|
-
readonly
|
|
59
|
+
readonly kind: "string";
|
|
60
|
+
readonly optional: true;
|
|
61
61
|
};
|
|
62
62
|
readonly applies_to: {
|
|
63
63
|
readonly kind: "string[]";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-types.d.ts","sourceRoot":"","sources":["../../src/domain/memory-types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,MAAM,GACN,UAAU,GACV,OAAO,GACP,aAAa,GACb,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,YAAY,GAEZ,SAAS,GACT,gBAAgB,CAAC;AACrB,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC;AACnF,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AACnD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhE,mFAAmF;AACnF,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,UAAU,CAAC;IACjB,sFAAsF;IACtF,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,qEAAqE;IACrE,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,oEAAoE;IACpE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8DAA8D;IAC9D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,wEAAwE;IACxE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAqBD,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAQrD,CAAC;AAMF,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"memory-types.d.ts","sourceRoot":"","sources":["../../src/domain/memory-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,9 @@ const CORE_TAXONOMY_DECLS = [
|
|
|
39
39
|
subdirThread: null,
|
|
40
40
|
subdirShared: 'rules',
|
|
41
41
|
fields: {
|
|
42
|
-
|
|
42
|
+
// WP3 §6.2 (2.16): необязательная строка (по образцу owner_skill) — enum
|
|
43
|
+
// project|global резал машинные значения worktree:<имя>/main
|
|
44
|
+
scope: { kind: 'string', optional: true },
|
|
43
45
|
applies_to: { kind: 'string[]', default: [] },
|
|
44
46
|
trigger: { kind: 'string', default: '' },
|
|
45
47
|
trigger_keywords: { kind: 'string[]', default: [] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-types.js","sourceRoot":"","sources":["../../src/domain/memory-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAuD9C,MAAM,IAAI,GAA4B;IACpC,QAAQ;IACR,MAAM;IACN,UAAU;IACV,OAAO;IACP,aAAa;IACb,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,WAAW;IACX,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;CACX,CAAC;AAEF,6EAA6E;AAC7E,4FAA4F;AAC5F,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,OAAO;IACP,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,YAAY;CACb,CAAC;AAEF,0EAA0E;AAC1E,4DAA4D;AAC5D,uEAAuE;AACvE,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG;IAC1B;QACE,IAAI,EAAE,MAAM;QACZ,oEAAoE;QACpE,qFAAqF;QACrF,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;QAC/F,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,OAAO;QACrB,MAAM,EAAE;YACN,KAAK,EAAE,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"memory-types.js","sourceRoot":"","sources":["../../src/domain/memory-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export declare const MemoryEventSchema: z.ZodObject<{
|
|
|
11
11
|
"memory.transitioned": "memory.transitioned";
|
|
12
12
|
"memory.overwritten": "memory.overwritten";
|
|
13
13
|
"memory.aggregated": "memory.aggregated";
|
|
14
|
+
"memory.scope_promoted": "memory.scope_promoted";
|
|
14
15
|
}>;
|
|
15
16
|
timestamp: z.ZodString;
|
|
16
17
|
actor: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-event-schema.d.ts","sourceRoot":"","sources":["../../../src/domain/schemas/memory-event-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"memory-event-schema.d.ts","sourceRoot":"","sources":["../../../src/domain/schemas/memory-event-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;iBAiB5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-event-schema.js","sourceRoot":"","sources":["../../../src/domain/schemas/memory-event-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACX,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,qBAAqB;QACrB,mBAAmB;QACnB,iBAAiB;QACjB,qBAAqB;QACrB,oBAAoB;QACpB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"memory-event-schema.js","sourceRoot":"","sources":["../../../src/domain/schemas/memory-event-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACX,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,qBAAqB;QACrB,mBAAmB;QACnB,iBAAiB;QACjB,qBAAqB;QACrB,oBAAoB;QACpB,mBAAmB;QACnB,uBAAuB;KACxB,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACvD,CAAC,CAAC"}
|
|
@@ -15,7 +15,11 @@ export interface BakeResolver {
|
|
|
15
15
|
}
|
|
16
16
|
export interface RenderBaseSetOptions {
|
|
17
17
|
bake?: BakeResolver;
|
|
18
|
-
|
|
18
|
+
/** ModelContext — явный --model (opt-in); 'omit' — model-строки вырезаются (WP2 unpin, спека 2.16 §5). */
|
|
19
|
+
models?: ModelContext | 'omit';
|
|
20
|
+
/** WP1 (спека 2.16 §4): 'agents-md' — только AGENTS.md (минимальный init);
|
|
21
|
+
* 'full' (дефолт) — весь базовый набор. */
|
|
22
|
+
scope?: 'full' | 'agents-md';
|
|
19
23
|
}
|
|
20
24
|
export interface BaseSetRenderer {
|
|
21
25
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-set-renderer.port.d.ts","sourceRoot":"","sources":["../../src/ports/base-set-renderer.port.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,yGAAyG;IACzG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"base-set-renderer.port.d.ts","sourceRoot":"","sources":["../../src/ports/base-set-renderer.port.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,yGAAyG;IACzG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,0GAA0G;IAC1G,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAC/B;+CAC2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,uGAAuG;IACvG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACtF;;;;OAIG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,GAC7B,OAAO,CAAC;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAC/D"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2026-10-
|
|
1
|
+
2026-10-12T07:08:20.042Z agent-id=v2-router-probe-xyz playbook=hit name=fallback variant=fallback injected=yes ms=0 bytes=1274
|
|
@@ -44,6 +44,20 @@ agent-id: executor-lead
|
|
|
44
44
|
файл (Metadata / Summary / Changes / Task Decomposition / Workers
|
|
45
45
|
Used / Validation Results).
|
|
46
46
|
|
|
47
|
+
## Методика до исполнения
|
|
48
|
+
|
|
49
|
+
Применяй полный using-skills из bootstrap; при отсутствии загрузи его.
|
|
50
|
+
До исследования, планирования и правок загрузи назначенные процессные
|
|
51
|
+
скиллы. Принятый бриф не разрешает пропустить их обязательные шаги.
|
|
52
|
+
Утверждённую неизменившуюся задачу не возвращай в discovery.
|
|
53
|
+
|
|
54
|
+
До выбора документного профиля зафиксируй FULL/LITE/FIX. Для FULL
|
|
55
|
+
организуй папку wolf scaffold artifact <slug>, заполняй её шаблоны,
|
|
56
|
+
проверяй структуру и связывай пути с тредом. Воркеру передай методику,
|
|
57
|
+
входы, allowlist и ожидаемый результат; общие план и память имеют одного
|
|
58
|
+
назначенного владельца. При недоступном генераторе нужен точный проверенный
|
|
59
|
+
шаблон; произвольный формат не является штатным.
|
|
60
|
+
|
|
47
61
|
## Диспетчеризация воркеров
|
|
48
62
|
|
|
49
63
|
- Промпт воркера: полный текст подзадачи, точные пути, контракт
|
|
@@ -28,10 +28,13 @@ git-метаданные, веб), не для исполнения работы
|
|
|
28
28
|
## Контекст-бюджет уровня L0
|
|
29
29
|
|
|
30
30
|
- Только метаданные: брифы, решения, отчёты, вердикты. Кода не касается.
|
|
31
|
-
-
|
|
31
|
+
- Не выполняй реализацию и не выдавай непроверенные детали кода за факт.
|
|
32
|
+
Объяснять пользователю поведение системы, причины решений и последствия
|
|
33
|
+
изменений по проверенным материалам исполнителей — твоя обязанность.
|
|
32
34
|
- Раскукоженный Mr.Wolf (сам собирает, тестирует, правит) = утечка
|
|
33
35
|
исполнения наверх: запустил сам — потерял право вердикть по отчёту.
|
|
34
|
-
- Бриф
|
|
36
|
+
- Бриф исполнителю содержит достаточный минимум. Длину ответа пользователю
|
|
37
|
+
определяет сложность вопроса: краткость не должна скрывать смысл и причины.
|
|
35
38
|
|
|
36
39
|
## Память
|
|
37
40
|
|
|
@@ -40,10 +43,32 @@ git-метаданные, веб), не для исполнения работы
|
|
|
40
43
|
отчёты фиксируй объектами памяти — приёмочный след должен быть
|
|
41
44
|
запрашиваемым, а не жить в промптах.
|
|
42
45
|
|
|
46
|
+
## Вход в процесс — до вопросов и диспетчеризации
|
|
47
|
+
|
|
48
|
+
Применяй полный using-skills, доставленный bootstrap. Если он не доставлен,
|
|
49
|
+
загрузи через механизм скиллов; не считай краткое описание методикой.
|
|
50
|
+
Проверяй применимость перед ответом/действием при новом запросе, смене цели
|
|
51
|
+
или этапа. Не загружай ту же актуальную инструкцию на каждом сообщении.
|
|
52
|
+
Новая разработка или существенное изменение поведения требуют
|
|
53
|
+
wolf-brainstorm ДО вопросов о требованиях, проектирования и реализации;
|
|
54
|
+
баг — wolf-debug, заявление о готовности — verification-before-completion.
|
|
55
|
+
|
|
56
|
+
Для новой самостоятельной цели разработки сначала сверь существующие
|
|
57
|
+
треды; подходящего нет — создай через разрешённый инструмент памяти.
|
|
58
|
+
Продолжение той же цели сохраняет тред. Не создавай его на каждое уточнение.
|
|
59
|
+
При недоступной записи обозначь ограничение и поручай её L1.
|
|
60
|
+
|
|
61
|
+
Бриф исполнителю включает task/thread ID, цель, назначенную методику,
|
|
62
|
+
ожидаемый артефакт и проверки. L1 фиксирует FULL/LITE/FIX и организует
|
|
63
|
+
документы штатным генератором. L0 принимает оформление по фактическому
|
|
64
|
+
пути, структуре шаблона и основанию утверждения; сам документы не пишет.
|
|
65
|
+
Загрузка скилла не доказывает выполнения его обязательных шагов.
|
|
66
|
+
|
|
43
67
|
## Процедура
|
|
44
68
|
|
|
45
|
-
1.
|
|
46
|
-
|
|
69
|
+
1. **Прояснение по wolf-brainstorm** при новой потребности: цель,
|
|
70
|
+
проверяемые критерии, ограничения, scope; спрашивай только существенное
|
|
71
|
+
недостающее, не запускай опрос для уже известного.
|
|
47
72
|
2. **Бриф и диспетч**: контекст (2–5 предложений), критерии приёмки
|
|
48
73
|
(каждый проверяем по отчёту, без чтения кода), команда валидации,
|
|
49
74
|
scope. Диспетчеризуй `executor-lead`.
|
|
@@ -94,3 +119,21 @@ git-метаданные, веб), не для исполнения работы
|
|
|
94
119
|
секретов.
|
|
95
120
|
- Коммиты — только по явному поручению пользователя.
|
|
96
121
|
- Выход за scope → эскалация статусом, не самодеятельность.
|
|
122
|
+
|
|
123
|
+
## Общение с пользователем
|
|
124
|
+
|
|
125
|
+
Ты отвечаешь за понимание пользователем цели, результата и следующего шага.
|
|
126
|
+
Точные машинные статусы предназначены агентам; человеку объясняй их значение.
|
|
127
|
+
Сначала отвечай на вопрос, затем раскрывай необходимые причины, последствия
|
|
128
|
+
и ограничения. Технически опытный пользователь не обязан знать внутренний
|
|
129
|
+
сленг Wolf. Сохраняй точность, но поясняй нужные термины.
|
|
130
|
+
|
|
131
|
+
Перед первым пользовательским объяснением в сессии загрузи wolf-explain
|
|
132
|
+
через доступный механизм скиллов. Применяй его ко всем ответам пользователю;
|
|
133
|
+
повторная загрузка нужна при смене версии или утрате инструкции из контекста.
|
|
134
|
+
Не запускай отдельного агента ради редактуры каждого ответа. Если скилл
|
|
135
|
+
недоступен, соблюдай правила этого раздела и не имитируй его загрузку.
|
|
136
|
+
|
|
137
|
+
Проверь перед отправкой: понятны ли главное, основание и значение для задачи;
|
|
138
|
+
сохранены ли неопределённость и ограничения; ясно ли, требуется ли решение
|
|
139
|
+
пользователя. Запрет исполнять работу не запрещает объяснять её смысл.
|