mister-wolf 2.2.0 → 2.2.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/dist/adapters/cli/cli-entry.js +1 -1
- package/dist/adapters/cli/cli-entry.js.map +1 -1
- package/dist/adapters/cli/commands/memory-effectiveness.js +10 -10
- package/dist/adapters/cli/commands/memory-effectiveness.js.map +1 -1
- package/dist/adapters/cli/commands/memory-init.js +8 -8
- package/dist/adapters/cli/commands/memory-init.js.map +1 -1
- package/dist/adapters/cli/commands/memory-learn.js +42 -42
- package/dist/adapters/cli/commands/memory-learn.js.map +1 -1
- package/dist/adapters/cli/commands/memory-migrate.js +1 -1
- package/dist/adapters/cli/commands/memory-migrate.js.map +1 -1
- package/dist/adapters/cli/commands/memory-scaffold.js +1 -1
- package/dist/adapters/cli/commands/memory-scaffold.js.map +1 -1
- package/dist/adapters/cli/commands/memory-scan.js +1 -1
- package/dist/adapters/cli/commands/memory-scan.js.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.js +5 -5
- package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
- package/dist/adapters/cli/commands/memory-tool.js +6 -6
- package/dist/adapters/cli/commands/memory-tool.js.map +1 -1
- package/dist/adapters/cli/commands/memory-upgrade.js +7 -7
- package/dist/adapters/cli/commands/memory-upgrade.js.map +1 -1
- package/dist/adapters/cli/commands/memory-validate.js +3 -3
- package/dist/adapters/cli/commands/memory-validate.js.map +1 -1
- package/dist/adapters/fs/config-file.js +1 -1
- package/dist/adapters/fs/config-file.js.map +1 -1
- package/dist/adapters/fs/doc-id-migration.js +1 -1
- package/dist/adapters/fs/doc-id-migration.js.map +1 -1
- package/dist/adapters/platforms/opencode-adapter.js +2 -2
- package/dist/adapters/platforms/opencode-adapter.js.map +1 -1
- package/dist/adapters/render/opencode/opencode-renderer.js +5 -5
- package/dist/adapters/render/opencode/opencode-renderer.js.map +1 -1
- package/dist/app/use-cases/activate-draft.js +8 -8
- package/dist/app/use-cases/activate-draft.js.map +1 -1
- package/dist/app/use-cases/bootstrap-project.d.ts +1 -1
- package/dist/app/use-cases/bootstrap-project.d.ts.map +1 -1
- package/dist/app/use-cases/bootstrap-project.js +16 -16
- package/dist/app/use-cases/bootstrap-project.js.map +1 -1
- package/dist/app/use-cases/generate-insights.js +1 -1
- package/dist/app/use-cases/generate-recap.js +8 -8
- package/dist/app/use-cases/generate-recap.js.map +1 -1
- package/dist/app/use-cases/init-project.d.ts.map +1 -1
- package/dist/app/use-cases/init-project.js +18 -14
- package/dist/app/use-cases/init-project.js.map +1 -1
- package/dist/app/use-cases/list-memory-objects.js +3 -3
- package/dist/app/use-cases/list-memory-objects.js.map +1 -1
- package/dist/app/use-cases/model-routing.js +2 -2
- package/dist/app/use-cases/model-routing.js.map +1 -1
- package/dist/app/use-cases/propose-draft.js +16 -16
- package/dist/app/use-cases/propose-draft.js.map +1 -1
- package/dist/app/use-cases/scaffold-agent.js +12 -12
- package/dist/app/use-cases/scaffold-agent.js.map +1 -1
- package/dist/app/use-cases/seed-base-playbooks.js +1 -1
- package/dist/app/use-cases/seed-base-playbooks.js.map +1 -1
- package/dist/app/use-cases/template-evolve.js +7 -7
- package/dist/app/use-cases/template-evolve.js.map +1 -1
- package/dist/app/use-cases/tool-librarian.d.ts.map +1 -1
- package/dist/app/use-cases/tool-librarian.js +13 -13
- package/dist/app/use-cases/tool-librarian.js.map +1 -1
- package/dist/app/use-cases/tool-stats.js +1 -1
- package/dist/app/use-cases/tool-stats.js.map +1 -1
- package/dist/app/use-cases/validate-draft.js +7 -7
- package/dist/app/use-cases/validate-draft.js.map +1 -1
- package/dist/domain/gates/stop-gate.js +6 -6
- package/dist/domain/gates/stop-gate.js.map +1 -1
- package/dist/domain/mechanical-advice.d.ts.map +1 -1
- package/dist/domain/mechanical-advice.js +19 -19
- package/dist/domain/mechanical-advice.js.map +1 -1
- package/dist/domain/policies/read-only-zones.js +13 -13
- package/dist/domain/policies/read-only-zones.js.map +1 -1
- package/dist/domain/review-depth.js +7 -7
- package/dist/domain/review-depth.js.map +1 -1
- package/dist/domain/tool-economy.js +1 -1
- package/dist/domain/tool-economy.js.map +1 -1
- package/package.json +2 -2
|
@@ -18,7 +18,7 @@ export async function seedBasePlaybooks(deps) {
|
|
|
18
18
|
const { meta, body } = parseFrontmatter(raw);
|
|
19
19
|
const ownerSkill = meta.owner_skill ?? '';
|
|
20
20
|
if (deps.isSeeded && (await deps.isSeeded(ownerSkill))) {
|
|
21
|
-
outcomes.push({ file, action: 'skipped', reason: `owner_skill=${ownerSkill}
|
|
21
|
+
outcomes.push({ file, action: 'skipped', reason: `owner_skill=${ownerSkill} already in memory (R2-M3)` });
|
|
22
22
|
continue;
|
|
23
23
|
}
|
|
24
24
|
const steps = (meta.steps ?? '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-base-playbooks.js","sourceRoot":"","sources":["../../../src/app/use-cases/seed-base-playbooks.ts"],"names":[],"mappings":"AAuBA,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5C,IAAI,EAAE;YAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,0HAA0H;IAC1H,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,UAAU,
|
|
1
|
+
{"version":3,"file":"seed-base-playbooks.js","sourceRoot":"","sources":["../../../src/app/use-cases/seed-base-playbooks.ts"],"names":[],"mappings":"AAuBA,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACvC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5C,IAAI,EAAE;YAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,0HAA0H;IAC1H,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,UAAU,4BAA4B,EAAE,CAAC,CAAC;YAC1G,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;aAC7B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,IAAI,CAAC,GAAG,CAAC;YACb,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,IAAI;YACJ,SAAS,EAAE,WAAW;YACtB,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;iBACpB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC;YAClB,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG,EAAE,KAAK,EAAE;SACxE,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -31,7 +31,7 @@ export function buildExamplePool(signals) {
|
|
|
31
31
|
message: String(s.detail?.message ?? ''),
|
|
32
32
|
}));
|
|
33
33
|
if (all.length < POOL_MIN) {
|
|
34
|
-
throw new UserFacingError(
|
|
34
|
+
throw new UserFacingError(`example pool ${all.length} < ${POOL_MIN} — GEPA evolution does not start (M24-02: ${POOL_MIN}–${POOL_MAX})`);
|
|
35
35
|
}
|
|
36
36
|
// больше POOL_MAX — последние POOL_MAX по порядку файла (свежие важнее старых)
|
|
37
37
|
return all.length > POOL_MAX ? all.slice(all.length - POOL_MAX) : all;
|
|
@@ -39,9 +39,9 @@ export function buildExamplePool(signals) {
|
|
|
39
39
|
/** Constraint-блок рефлектору (M24-04): против утечки примеров в шаблон. */
|
|
40
40
|
export function reflectorConstraints() {
|
|
41
41
|
return [
|
|
42
|
-
'
|
|
43
|
-
|
|
44
|
-
"
|
|
42
|
+
'do not copy error examples into the template verbatim — generalize into reproducible instructions',
|
|
43
|
+
`do not exceed the ${TEMPLATE_CHAR_LIMIT} character limit (M24-03)`,
|
|
44
|
+
"instructions — reproducible only, of the form 'avoid: <tool_name>'",
|
|
45
45
|
];
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
@@ -68,7 +68,7 @@ export function mechanicalReflector() {
|
|
|
68
68
|
break;
|
|
69
69
|
candidate = next;
|
|
70
70
|
}
|
|
71
|
-
return { candidate, notes: '
|
|
71
|
+
return { candidate, notes: 'mechanical reflector: avoid-instructions for the pool top tools' };
|
|
72
72
|
},
|
|
73
73
|
};
|
|
74
74
|
}
|
|
@@ -124,7 +124,7 @@ export function compareTemplates(current, candidate, examples) {
|
|
|
124
124
|
/** Длина шаблона > 1500 символов → отказ (M24-03). */
|
|
125
125
|
export function validateTemplateLength(template, label) {
|
|
126
126
|
if (template.length > TEMPLATE_CHAR_LIMIT) {
|
|
127
|
-
throw new UserFacingError(
|
|
127
|
+
throw new UserFacingError(`template ${label}: ${template.length} chars > limit ${TEMPLATE_CHAR_LIMIT} (M24-03)`);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
function templateFile(baseDir, templateId, suffix = '') {
|
|
@@ -143,7 +143,7 @@ export async function evolveTemplate(deps, baseDir, input) {
|
|
|
143
143
|
current = await deps.readFile(templatePath);
|
|
144
144
|
}
|
|
145
145
|
catch {
|
|
146
|
-
throw new UserFacingError(
|
|
146
|
+
throw new UserFacingError(`template ${input.templateId} not found (${templatePath}) — create the template file before evolving`);
|
|
147
147
|
}
|
|
148
148
|
validateTemplateLength(current, 'current');
|
|
149
149
|
const examples = buildExamplePool(readSignals(baseDir));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-evolve.js","sourceRoot":"","sources":["../../../src/app/use-cases/template-evolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAoB,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC,wFAAwF;AACxF,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAS5B,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,MAAM,GAAG,GAAoB,OAAO;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;QACnC,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,eAAe;QACnD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;KACzC,CAAC,CAAC,CAAC;IACN,IAAI,GAAG,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,eAAe,CACvB,gBAAgB,GAAG,CAAC,MAAM,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"template-evolve.js","sourceRoot":"","sources":["../../../src/app/use-cases/template-evolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-librarian.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"AACA,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;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAK5E,oFAAoF;AACpF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,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,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAChD,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzD;AAyDD,wBAAsB,YAAY,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"tool-librarian.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,14 +37,14 @@ async function resolveToolRef(deps, nameOrId) {
|
|
|
37
37
|
if (nameOrId.startsWith('mem_')) {
|
|
38
38
|
const obj = await deps.store.get(nameOrId);
|
|
39
39
|
if (!obj || obj.type !== 'tool')
|
|
40
|
-
throw new UserFacingError(`Tool
|
|
40
|
+
throw new UserFacingError(`Tool not found: ${nameOrId}`);
|
|
41
41
|
return asTool(obj);
|
|
42
42
|
}
|
|
43
43
|
const matches = (await deps.store.list({ type: 'tool' })).filter((o) => asTool(o).name === nameOrId);
|
|
44
44
|
if (matches.length === 0)
|
|
45
|
-
throw new UserFacingError(`Tool
|
|
45
|
+
throw new UserFacingError(`Tool not found: ${nameOrId}`);
|
|
46
46
|
if (matches.length > 1) {
|
|
47
|
-
throw new UserFacingError(
|
|
47
|
+
throw new UserFacingError(`Ambiguous tool name "${nameOrId}" (${matches.length} objects): ${matches.map((m) => m.id).join(', ')}`);
|
|
48
48
|
}
|
|
49
49
|
return asTool(matches[0]);
|
|
50
50
|
}
|
|
@@ -52,29 +52,29 @@ export async function registerTool(deps, input) {
|
|
|
52
52
|
const run = async () => {
|
|
53
53
|
// имя = имя файла в .wolf/tools/ и ключ `tool use <name>`: без слэшей/точек/путей.
|
|
54
54
|
if (!NAME_RE.test(input.name)) {
|
|
55
|
-
throw new UserFacingError(
|
|
55
|
+
throw new UserFacingError(`Invalid tool name "${input.name}": only [a-z0-9-_], starting with a digit/letter`);
|
|
56
56
|
}
|
|
57
57
|
const absSrc = isAbsolute(input.scriptPath) ? input.scriptPath : join(deps.baseDir, input.scriptPath);
|
|
58
58
|
if (!(await deps.fs.exists(absSrc))) {
|
|
59
|
-
throw new UserFacingError(
|
|
59
|
+
throw new UserFacingError(`Script not found: ${absSrc}`);
|
|
60
60
|
}
|
|
61
61
|
// Коллизия имени — всегда отказ (даже с --force): name — ключ lookup'а,
|
|
62
62
|
// второй объект затёр бы канонический скрипт первого.
|
|
63
63
|
const taken = (await deps.store.list({ type: 'tool' })).filter((o) => LIVE_STATUSES.includes(o.status) && asTool(o).name === input.name);
|
|
64
64
|
if (taken.length > 0) {
|
|
65
65
|
const list = taken.map((o) => `${o.id} [${o.status}]`).join('; ');
|
|
66
|
-
throw new UserFacingError(
|
|
66
|
+
throw new UserFacingError(`Name "${input.name}" is already taken: ${list}. Choose another name`);
|
|
67
67
|
}
|
|
68
68
|
// Dedup-подсказка (search-before-write): похожие по контракту — только предупреждение.
|
|
69
69
|
const similar = await findSimilar(deps.store, input);
|
|
70
70
|
if (similar.length > 0 && !input.force) {
|
|
71
71
|
const list = similar.map((s) => `${s.name} (${s.id}) [${s.status}]`).join('; ');
|
|
72
|
-
throw new UserFacingError(
|
|
72
|
+
throw new UserFacingError(`Similar tools found: ${list}. Confirm the intent with --force`);
|
|
73
73
|
}
|
|
74
74
|
const relDest = join('.wolf', 'tools', `${input.name}${extname(absSrc)}`);
|
|
75
75
|
const content = await deps.fs.readSmallTextFile(absSrc);
|
|
76
76
|
if (content === null)
|
|
77
|
-
throw new UserFacingError(
|
|
77
|
+
throw new UserFacingError(`Script not found: ${absSrc}`);
|
|
78
78
|
await deps.fs.writeFile(join(deps.baseDir, relDest), content);
|
|
79
79
|
const extra = {
|
|
80
80
|
name: input.name,
|
|
@@ -137,7 +137,7 @@ export async function useTool(deps, input) {
|
|
|
137
137
|
}
|
|
138
138
|
/** Детерминированный контент SKILL.md из объекта tool — повторная генерация даёт тот же текст. */
|
|
139
139
|
export function toolSkillContent(tool) {
|
|
140
|
-
const description = tool.contract_output ?? '
|
|
140
|
+
const description = tool.contract_output ?? 'script from Wolf memory';
|
|
141
141
|
return [
|
|
142
142
|
`<!-- generated from tool:${tool.id} -->`,
|
|
143
143
|
'---',
|
|
@@ -150,11 +150,11 @@ export function toolSkillContent(tool) {
|
|
|
150
150
|
`- Input: ${tool.contract_input ?? '—'}`,
|
|
151
151
|
`- Output: ${tool.contract_output ?? '—'}`,
|
|
152
152
|
`- Environment: ${tool.contract_environment ?? '—'}`,
|
|
153
|
-
`- Script: \`${tool.script_path}\` (
|
|
153
|
+
`- Script: \`${tool.script_path}\` (canonical file; Wolf does not execute it)`,
|
|
154
154
|
'',
|
|
155
|
-
'##
|
|
155
|
+
'## Instruction',
|
|
156
156
|
'',
|
|
157
|
-
|
|
157
|
+
`Call the script and account for its output. After use, record the fact: \`wolf tool use ${tool.name}\`.`,
|
|
158
158
|
'',
|
|
159
159
|
].join('\n');
|
|
160
160
|
}
|
|
@@ -167,7 +167,7 @@ export async function exposeTool(deps, input) {
|
|
|
167
167
|
}
|
|
168
168
|
export async function deprecateTool(deps, input) {
|
|
169
169
|
if (!input.reason || input.reason.trim() === '') {
|
|
170
|
-
throw new UserFacingError('
|
|
170
|
+
throw new UserFacingError('Deprecation reason is required (--reason)');
|
|
171
171
|
}
|
|
172
172
|
const tool = await resolveToolRef(deps, input.nameOrId);
|
|
173
173
|
await transitionMemoryObject(deps, tool.id, 'deprecated', input.actor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-librarian.js","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-librarian.js","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export async function toolStats(deps, input) {
|
|
|
17
17
|
const economy = input.runLogText === null
|
|
18
18
|
? {
|
|
19
19
|
sufficient: false,
|
|
20
|
-
reason: 'run-log
|
|
20
|
+
reason: 'run-log missing (.wolf/run-log.jsonl not found)',
|
|
21
21
|
toolRuns: 0,
|
|
22
22
|
totalRuns: 0,
|
|
23
23
|
medianTool: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-stats.js","sourceRoot":"","sources":["../../../src/app/use-cases/tool-stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAiB,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAe1F,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAA4B,EAC5B,KAAoC;IAEpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAmB,OAAO;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,CAAiF,CAAC;QAChG,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YAChF,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,YAAY,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;SACjF,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhD,MAAM,OAAO,GACX,KAAK,CAAC,UAAU,KAAK,IAAI;QACvB,CAAC,CAAC;YACE,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-stats.js","sourceRoot":"","sources":["../../../src/app/use-cases/tool-stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAiB,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAe1F,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAA4B,EAC5B,KAAoC;IAEpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAmB,OAAO;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,CAAiF,CAAC;QAChG,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YAChF,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC1E,YAAY,EAAE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;SACjF,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhD,MAAM,OAAO,GACX,KAAK,CAAC,UAAU,KAAK,IAAI;QACvB,CAAC,CAAC;YACE,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,iDAAiD;YACzD,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;SACjB;QACH,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UserFacingError } from '../../domain/errors.js';
|
|
2
|
-
const NEEDS_HUMAN_NOTE = '
|
|
3
|
-
const LEGIT_WARNING = '
|
|
2
|
+
const NEEDS_HUMAN_NOTE = 'text draft: not mechanically replayable, human review required';
|
|
3
|
+
const LEGIT_WARNING = 'legitimate tool uses are not logged — a human assesses the blocking risk';
|
|
4
4
|
/** Чистая функция реплея: draft + лог → вердикт (детерминированно). */
|
|
5
5
|
export function replayHoldout(draft, signals) {
|
|
6
6
|
if (!draft.mechanical || !draft.constraint_tool) {
|
|
@@ -20,14 +20,14 @@ export function replayHoldout(draft, signals) {
|
|
|
20
20
|
verdict: 'pass',
|
|
21
21
|
prevented: matches.length,
|
|
22
22
|
checked: holdout.length,
|
|
23
|
-
note:
|
|
23
|
+
note: `repetition classes: ${classes.join(', ')}; ${LEGIT_WARNING}`,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
return {
|
|
27
27
|
verdict: 'fail',
|
|
28
28
|
prevented: 0,
|
|
29
29
|
checked: holdout.length,
|
|
30
|
-
note:
|
|
30
|
+
note: `pattern did not repeat on holdout (after draft creation) — not enough data for activation; ${LEGIT_WARNING}`,
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
if (matches.length >= 1) {
|
|
@@ -35,14 +35,14 @@ export function replayHoldout(draft, signals) {
|
|
|
35
35
|
verdict: 'pass',
|
|
36
36
|
prevented: matches.length,
|
|
37
37
|
checked: holdout.length,
|
|
38
|
-
note:
|
|
38
|
+
note: `pattern repeated on holdout after draft creation (${matches.length} of ${holdout.length})`,
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
return {
|
|
42
42
|
verdict: 'fail',
|
|
43
43
|
prevented: 0,
|
|
44
44
|
checked: holdout.length,
|
|
45
|
-
note: '
|
|
45
|
+
note: 'pattern did not repeat on holdout (after draft creation) — not enough data for activation',
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
@@ -55,7 +55,7 @@ export async function validateDraft(deps, input) {
|
|
|
55
55
|
throw new UserFacingError(`Memory object not found: ${input.draftId}`);
|
|
56
56
|
const rec = draft;
|
|
57
57
|
if (rec.pattern_key === undefined) {
|
|
58
|
-
throw new UserFacingError(
|
|
58
|
+
throw new UserFacingError(`not a propose draft: ${input.draftId}`);
|
|
59
59
|
}
|
|
60
60
|
const verdict = replayHoldout({
|
|
61
61
|
mechanical: rec.mechanical,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-draft.js","sourceRoot":"","sources":["../../../src/app/use-cases/validate-draft.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"validate-draft.js","sourceRoot":"","sources":["../../../src/app/use-cases/validate-draft.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ export function runStopGate(lookupInjections, scenarios) {
|
|
|
39
39
|
return {
|
|
40
40
|
id: sc.id,
|
|
41
41
|
passed: false,
|
|
42
|
-
reason:
|
|
42
|
+
reason: `action before wolf call (premature action): knowledge on topic “${sc.topic}” was not fetched`,
|
|
43
43
|
prematureAction: true,
|
|
44
44
|
};
|
|
45
45
|
}
|
|
@@ -48,13 +48,13 @@ export function runStopGate(lookupInjections, scenarios) {
|
|
|
48
48
|
? {
|
|
49
49
|
id: sc.id,
|
|
50
50
|
passed: true,
|
|
51
|
-
reason:
|
|
51
|
+
reason: `knowledge delivered: the agent abstained from “${sc.forbidden_tool}”`,
|
|
52
52
|
prematureAction: false,
|
|
53
53
|
}
|
|
54
54
|
: {
|
|
55
55
|
id: sc.id,
|
|
56
56
|
passed: false,
|
|
57
|
-
reason: `delivery
|
|
57
|
+
reason: `delivery failed: “${sc.forbidden_tool}” was used without delivered knowledge on topic “${sc.topic}”`,
|
|
58
58
|
prematureAction: false,
|
|
59
59
|
};
|
|
60
60
|
}
|
|
@@ -62,16 +62,16 @@ export function runStopGate(lookupInjections, scenarios) {
|
|
|
62
62
|
return {
|
|
63
63
|
id: sc.id,
|
|
64
64
|
passed: false,
|
|
65
|
-
reason:
|
|
65
|
+
reason: `refusal without a targeted ban (false positive): abstained for nothing on topic “${sc.topic}”`,
|
|
66
66
|
prematureAction: false,
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
return sc.expect_action === true
|
|
70
|
-
? { id: sc.id, passed: true, reason: '
|
|
70
|
+
? { id: sc.id, passed: true, reason: 'no bans delivered — action taken', prematureAction: false }
|
|
71
71
|
: {
|
|
72
72
|
id: sc.id,
|
|
73
73
|
passed: false,
|
|
74
|
-
reason: '
|
|
74
|
+
reason: 'scenario without forbidden_tool and without expect_action — expectation is undefined',
|
|
75
75
|
prematureAction: false,
|
|
76
76
|
};
|
|
77
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-gate.js","sourceRoot":"","sources":["../../../src/domain/gates/stop-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AA6B1F,sFAAsF;AACtF,MAAM,cAAc,GAAG,qDAAqD,CAAC;AAE7E;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,gBAA6C,EAC7C,SAA6B;IAE7B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAA0B,EAAE;QAC3D,qEAAqE;QACrE,IAAI,MAAgB,CAAC;QACrB,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,EAAE,CAAC;YACZ,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,EAAE,CAAC,cAAc,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;QAC1F,MAAM,SAAS,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7D,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO;gBACL,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"stop-gate.js","sourceRoot":"","sources":["../../../src/domain/gates/stop-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mechanical-advice.d.ts","sourceRoot":"","sources":["../../src/domain/mechanical-advice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"mechanical-advice.d.ts","sourceRoot":"","sources":["../../src/domain/mechanical-advice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB9D,CAAC;AAEF,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvE"}
|
|
@@ -7,25 +7,25 @@
|
|
|
7
7
|
*/
|
|
8
8
|
/** id класса ошибки (DEFAULT_ERROR_CLASS_RULES + 'uncategorized') → императив. */
|
|
9
9
|
export const MECHANICAL_ADVICE = {
|
|
10
|
-
file_not_found: '
|
|
11
|
-
tool_not_found: '
|
|
12
|
-
dependency_missing: '
|
|
13
|
-
syntax_error: '
|
|
14
|
-
context_overflow: '
|
|
15
|
-
rate_limit: '
|
|
16
|
-
timeout: '
|
|
17
|
-
auth: '
|
|
18
|
-
network: '
|
|
19
|
-
invalid_input: '
|
|
20
|
-
conflict: '
|
|
21
|
-
busy: '
|
|
22
|
-
interrupted: '
|
|
23
|
-
disk_full: '
|
|
24
|
-
broken_pipe: '
|
|
25
|
-
oom: '
|
|
26
|
-
llm_error: '
|
|
27
|
-
unsupported: '
|
|
28
|
-
uncategorized: '
|
|
10
|
+
file_not_found: 'check the path exists before accessing it (existsSync/Glob), do not guess the path',
|
|
11
|
+
tool_not_found: 'verify the tool is available before calling it (which <tool> / <tool> --version)',
|
|
12
|
+
dependency_missing: 'check dependencies before running (npm ls / require check) and install them explicitly',
|
|
13
|
+
syntax_error: 'run the compiler/linter before executing and fix the syntax from the first error',
|
|
14
|
+
context_overflow: 'do not read files whole without a limit — slice reads (offset/limit) and compact the context',
|
|
15
|
+
rate_limit: 'wrap external calls with retry and backoff on 429/quota',
|
|
16
|
+
timeout: 'set an explicit timeout and handle it with retry and backoff, do not wait forever',
|
|
17
|
+
auth: 'check credentials/token availability before calling a protected API',
|
|
18
|
+
network: 'handle network failures with retry and backoff and verify endpoint reachability before work',
|
|
19
|
+
invalid_input: 'validate input with a schema before use and pass arguments in the command’s exact format',
|
|
20
|
+
conflict: 'check the target object exists before creating and make the operation idempotent',
|
|
21
|
+
busy: 'do not touch a locked resource — wait for the lock to release or work around it',
|
|
22
|
+
interrupted: 'handle SIGINT/SIGTERM correctly and make long operations interruptible',
|
|
23
|
+
disk_full: 'check free space and clean temporary files before large writes',
|
|
24
|
+
broken_pipe: 'check the output consumer is alive and handle EPIPE without crashing the process',
|
|
25
|
+
oom: 'do not load large data into memory whole — stream and process in chunks',
|
|
26
|
+
llm_error: 'wrap LLM calls with retry on 5xx/overloaded',
|
|
27
|
+
unsupported: 'do not use an unsupported operation — find a supported equivalent in the docs',
|
|
28
|
+
uncategorized: 'extract the exact cause from the error message and register a class in the project’s error_class_taxonomy',
|
|
29
29
|
};
|
|
30
30
|
/** Совет по error_class_id; null — класс неизвестен таблице. */
|
|
31
31
|
export function mechanicalAdviceFor(errorClassId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mechanical-advice.js","sourceRoot":"","sources":["../../src/domain/mechanical-advice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAqC;IACjE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"mechanical-advice.js","sourceRoot":"","sources":["../../src/domain/mechanical-advice.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAqC;IACjE,cAAc,EAAE,oFAAoF;IACpG,cAAc,EAAE,kFAAkF;IAClG,kBAAkB,EAAE,wFAAwF;IAC5G,YAAY,EAAE,kFAAkF;IAChG,gBAAgB,EAAE,8FAA8F;IAChH,UAAU,EAAE,yDAAyD;IACrE,OAAO,EAAE,mFAAmF;IAC5F,IAAI,EAAE,qEAAqE;IAC3E,OAAO,EAAE,6FAA6F;IACtG,aAAa,EAAE,0FAA0F;IACzG,QAAQ,EAAE,kFAAkF;IAC5F,IAAI,EAAE,iFAAiF;IACvF,WAAW,EAAE,wEAAwE;IACrF,SAAS,EAAE,gEAAgE;IAC3E,WAAW,EAAE,kFAAkF;IAC/F,GAAG,EAAE,yEAAyE;IAC9E,SAAS,EAAE,6CAA6C;IACxD,WAAW,EAAE,+EAA+E;IAC5F,aAAa,EACX,2GAA2G;CAC9G,CAAC;AAEF,gEAAgE;AAChE,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;AACjD,CAAC"}
|
|
@@ -17,16 +17,16 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { UserFacingError } from '../errors.js';
|
|
19
19
|
export const READ_ONLY_ZONES = [
|
|
20
|
-
{ path: '.wolf/events.jsonl', reason: '
|
|
21
|
-
{ path: '.wolf/relations.jsonl', reason: '
|
|
22
|
-
{ path: '.wolf/memory/events.jsonl', reason: '
|
|
23
|
-
{ path: '.wolf/memory/relations.jsonl', reason: '
|
|
24
|
-
{ path: '.wolf/metrics/session-metrics.jsonl', reason: '
|
|
25
|
-
{ path: '.wolf/metrics/patterns.jsonl', reason: '
|
|
26
|
-
{ path: 'src/domain/gates/', reason: '
|
|
27
|
-
{ path: 'src/domain/policies/', reason: '
|
|
28
|
-
{ path: '.opencode/', reason: '
|
|
29
|
-
{ path: 'AGENTS.md', reason: '
|
|
20
|
+
{ path: '.wolf/events.jsonl', reason: 'loop audit log (spec §5: read-only zones)' },
|
|
21
|
+
{ path: '.wolf/relations.jsonl', reason: 'loop relation graph (spec §5)' },
|
|
22
|
+
{ path: '.wolf/memory/events.jsonl', reason: 'loop audit log, actual layout path (spec §5)' },
|
|
23
|
+
{ path: '.wolf/memory/relations.jsonl', reason: 'loop relation graph, actual layout path (spec §5)' },
|
|
24
|
+
{ path: '.wolf/metrics/session-metrics.jsonl', reason: 'loop signal log (spec §5)' },
|
|
25
|
+
{ path: '.wolf/metrics/patterns.jsonl', reason: 'loop pattern journal (spec §5)' },
|
|
26
|
+
{ path: 'src/domain/gates/', reason: 'gate code — the loop does not change its own gates (spec §5)' },
|
|
27
|
+
{ path: 'src/domain/policies/', reason: 'validator/policy code (spec §5)' },
|
|
28
|
+
{ path: '.opencode/', reason: 'platform skeleton/frames (spec §13)' },
|
|
29
|
+
{ path: 'AGENTS.md', reason: 'AGENTS.md frame (spec §13)' },
|
|
30
30
|
];
|
|
31
31
|
/** Сигнальные логи: append разрешён (наблюдение, не адаптация — §3, §9). */
|
|
32
32
|
const SIGNAL_APPEND_ALLOWED = new Set([
|
|
@@ -64,9 +64,9 @@ export function assertLearnWriteAllowed(relPath, op) {
|
|
|
64
64
|
if (op === 'append-signal' && SIGNAL_APPEND_ALLOWED.has(normalized))
|
|
65
65
|
return;
|
|
66
66
|
if (op === 'append-signal') {
|
|
67
|
-
throw new UserFacingError(`read-only
|
|
68
|
-
|
|
67
|
+
throw new UserFacingError(`loop read-only zone: ${relPath} (${zone.reason}); append-signal is allowed only ` +
|
|
68
|
+
`for the signal logs (.wolf/metrics/session-metrics.jsonl, .wolf/metrics/patterns.jsonl)`);
|
|
69
69
|
}
|
|
70
|
-
throw new UserFacingError(`read-only
|
|
70
|
+
throw new UserFacingError(`loop read-only zone: ${relPath} (${zone.reason})`);
|
|
71
71
|
}
|
|
72
72
|
//# sourceMappingURL=read-only-zones.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-only-zones.js","sourceRoot":"","sources":["../../../src/domain/policies/read-only-zones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAS/C,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"read-only-zones.js","sourceRoot":"","sources":["../../../src/domain/policies/read-only-zones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAS/C,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,2CAA2C,EAAE;IACnF,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,+BAA+B,EAAE;IAC1E,EAAE,IAAI,EAAE,2BAA2B,EAAE,MAAM,EAAE,8CAA8C,EAAE;IAC7F,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,mDAAmD,EAAE;IACrG,EAAE,IAAI,EAAE,qCAAqC,EAAE,MAAM,EAAE,2BAA2B,EAAE;IACpF,EAAE,IAAI,EAAE,8BAA8B,EAAE,MAAM,EAAE,gCAAgC,EAAE;IAClF,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,8DAA8D,EAAE;IACrG,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,iCAAiC,EAAE;IAC3E,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,qCAAqC,EAAE;IACrE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,4BAA4B,EAAE;CAC5D,CAAC;AAEF,4EAA4E;AAC5E,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IACzD,qCAAqC;IACrC,8BAA8B;CAC/B,CAAC,CAAC;AAEH,qFAAqF;AACrF,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO;SACX,KAAK,CAAC,QAAQ,CAAC;SACf,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB;IACnC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7F,CAAC;aAAM,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,EAAoD;IAC3G,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO;IAC1B,IAAI,EAAE,KAAK,eAAe,IAAI,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO;IAC5E,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CACvB,wBAAwB,OAAO,KAAK,IAAI,CAAC,MAAM,mCAAmC;YAChF,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,eAAe,CAAC,wBAAwB,OAAO,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -21,29 +21,29 @@ export function routeReviewDepth(traits) {
|
|
|
21
21
|
let review = false;
|
|
22
22
|
if (traits.touchesReadOnlyZone) {
|
|
23
23
|
review = true;
|
|
24
|
-
reasons.push('read-only
|
|
24
|
+
reasons.push('read-only zone (gates/logs/skeleton): changes only through a human (§5, §15)');
|
|
25
25
|
}
|
|
26
26
|
if (traits.security) {
|
|
27
27
|
review = true;
|
|
28
|
-
reasons.push('
|
|
28
|
+
reasons.push('security: trust boundaries require council review');
|
|
29
29
|
}
|
|
30
30
|
if (traits.blastRadius !== undefined && traits.blastRadius >= BLAST_RADIUS_REVIEW) {
|
|
31
31
|
review = true;
|
|
32
|
-
reasons.push(`blast radius ${traits.blastRadius} ≥ ${BLAST_RADIUS_REVIEW} —
|
|
32
|
+
reasons.push(`blast radius ${traits.blastRadius} ≥ ${BLAST_RADIUS_REVIEW} — high radius (§16)`);
|
|
33
33
|
}
|
|
34
34
|
if ((traits.files ?? 0) > REVIEW_FILES_THRESHOLD || (traits.lines ?? 0) > REVIEW_LINES_THRESHOLD) {
|
|
35
35
|
review = true;
|
|
36
|
-
reasons.push(
|
|
36
|
+
reasons.push(`volume: ${traits.files ?? 0} files / ${traits.lines ?? 0} lines — above the ${REVIEW_FILES_THRESHOLD}/${REVIEW_LINES_THRESHOLD} threshold`);
|
|
37
37
|
}
|
|
38
38
|
if (traits.taskType === 'experiment' && traits.hasDeterministicMetric === false) {
|
|
39
39
|
review = true;
|
|
40
|
-
reasons.push('
|
|
40
|
+
reasons.push('experiment without a deterministic metric — GEPA scoring not applicable, human gate only (§3)');
|
|
41
41
|
}
|
|
42
42
|
if (!review && traits.blastRadius !== undefined && traits.blastRadius >= BLAST_RADIUS_ATTENTION) {
|
|
43
|
-
reasons.push(`blast radius ${traits.blastRadius}
|
|
43
|
+
reasons.push(`blast radius ${traits.blastRadius} in the attention zone (≥${BLAST_RADIUS_ATTENTION}) — the reviewer checks the radius`);
|
|
44
44
|
}
|
|
45
45
|
if (reasons.length === 0)
|
|
46
|
-
reasons.push('
|
|
46
|
+
reasons.push('no risk traits — a flat scheme is sufficient');
|
|
47
47
|
return { depth: review ? 'review-council' : 'flat', reasons, decisionBy: 'human' };
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=review-depth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-depth.js","sourceRoot":"","sources":["../../src/domain/review-depth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C;;2EAE2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"review-depth.js","sourceRoot":"","sources":["../../src/domain/review-depth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C;;2EAE2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,IAAI,mBAAmB,EAAE,CAAC;QAClF,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,WAAW,MAAM,mBAAmB,sBAAsB,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,sBAAsB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,sBAAsB,EAAE,CAAC;QACjG,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CACV,WAAW,MAAM,CAAC,KAAK,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,IAAI,CAAC,sBAAsB,sBAAsB,IAAI,sBAAsB,YAAY,CAC5I,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC,sBAAsB,KAAK,KAAK,EAAE,CAAC;QAChF,MAAM,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;IAChH,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,IAAI,sBAAsB,EAAE,CAAC;QAChG,OAAO,CAAC,IAAI,CACV,gBAAgB,MAAM,CAAC,WAAW,4BAA4B,sBAAsB,oCAAoC,CACzH,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAEvF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACrF,CAAC"}
|