mister-wolf 2.2.0 → 2.3.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 +5 -1
- package/dist/adapters/cli/cli-entry.js.map +1 -1
- package/dist/adapters/cli/commands/analytics.d.ts +3 -0
- package/dist/adapters/cli/commands/analytics.d.ts.map +1 -0
- package/dist/adapters/cli/commands/analytics.js +216 -0
- package/dist/adapters/cli/commands/analytics.js.map +1 -0
- package/dist/adapters/cli/commands/dashboard.d.ts +9 -0
- package/dist/adapters/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/adapters/cli/commands/dashboard.js +213 -0
- package/dist/adapters/cli/commands/dashboard.js.map +1 -0
- package/dist/adapters/cli/commands/memory-effectiveness.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-effectiveness.js +54 -14
- 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-insights.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-insights.js +3 -1
- package/dist/adapters/cli/commands/memory-insights.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-run.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-run.js +37 -1
- package/dist/adapters/cli/commands/memory-run.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/cli/opencode-run-metrics.d.ts +7 -0
- package/dist/adapters/cli/opencode-run-metrics.d.ts.map +1 -1
- package/dist/adapters/cli/opencode-run-metrics.js +12 -2
- package/dist/adapters/cli/opencode-run-metrics.js.map +1 -1
- package/dist/adapters/fs/config-file.d.ts.map +1 -1
- package/dist/adapters/fs/config-file.js +33 -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/fs/effectiveness-snapshots.d.ts +12 -0
- package/dist/adapters/fs/effectiveness-snapshots.d.ts.map +1 -0
- package/dist/adapters/fs/effectiveness-snapshots.js +42 -0
- package/dist/adapters/fs/effectiveness-snapshots.js.map +1 -0
- package/dist/adapters/fs/session-metrics-log.d.ts +26 -1
- package/dist/adapters/fs/session-metrics-log.d.ts.map +1 -1
- package/dist/adapters/fs/session-metrics-log.js +12 -1
- package/dist/adapters/fs/session-metrics-log.js.map +1 -1
- package/dist/adapters/mcp/mcp-schemas.d.ts +28 -0
- package/dist/adapters/mcp/mcp-schemas.d.ts.map +1 -1
- package/dist/adapters/mcp/mcp-schemas.js +10 -0
- package/dist/adapters/mcp/mcp-schemas.js.map +1 -1
- package/dist/adapters/mcp/mcp-tools.d.ts.map +1 -1
- package/dist/adapters/mcp/mcp-tools.js +45 -1
- package/dist/adapters/mcp/mcp-tools.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/build-analytics.d.ts +201 -0
- package/dist/app/use-cases/build-analytics.d.ts.map +1 -0
- package/dist/app/use-cases/build-analytics.js +595 -0
- package/dist/app/use-cases/build-analytics.js.map +1 -0
- package/dist/app/use-cases/build-dashboard.d.ts +38 -0
- package/dist/app/use-cases/build-dashboard.d.ts.map +1 -0
- package/dist/app/use-cases/build-dashboard.js +31 -0
- package/dist/app/use-cases/build-dashboard.js.map +1 -0
- package/dist/app/use-cases/effectiveness.d.ts +27 -0
- package/dist/app/use-cases/effectiveness.d.ts.map +1 -1
- package/dist/app/use-cases/effectiveness.js +63 -0
- package/dist/app/use-cases/effectiveness.js.map +1 -1
- package/dist/app/use-cases/generate-insights.d.ts +15 -0
- package/dist/app/use-cases/generate-insights.d.ts.map +1 -1
- package/dist/app/use-cases/generate-insights.js +37 -2
- package/dist/app/use-cases/generate-insights.js.map +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/snapshot-delta.d.ts +22 -0
- package/dist/app/use-cases/snapshot-delta.d.ts.map +1 -0
- package/dist/app/use-cases/snapshot-delta.js +72 -0
- package/dist/app/use-cases/snapshot-delta.js.map +1 -0
- 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/pricing.d.ts +20 -0
- package/dist/domain/pricing.d.ts.map +1 -0
- package/dist/domain/pricing.js +12 -0
- package/dist/domain/pricing.js.map +1 -0
- package/dist/domain/review-depth.js +7 -7
- package/dist/domain/review-depth.js.map +1 -1
- package/dist/domain/taxonomy.d.ts +10 -0
- package/dist/domain/taxonomy.d.ts.map +1 -1
- package/dist/domain/taxonomy.js.map +1 -1
- package/dist/domain/tool-economy.d.ts +15 -0
- package/dist/domain/tool-economy.d.ts.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
|
@@ -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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* M3 (D4/D9): $-конверсия токенов прогона по таблице прайсов из config.yaml.
|
|
3
|
+
* Прайсы — $ за мегатокен ($/Mtok). null при отсутствии прайса/модели/токенов —
|
|
4
|
+
* числа не выдумываем (прецедент EconomyResult.sufficient).
|
|
5
|
+
*/
|
|
6
|
+
export interface ModelPricing {
|
|
7
|
+
input: number;
|
|
8
|
+
output: number;
|
|
9
|
+
cache_read: number;
|
|
10
|
+
}
|
|
11
|
+
/** modelID → прайс ($/Mtok); ключи — полные имена моделей (напр. 'zai-coding-plan/glm-5.3'). */
|
|
12
|
+
export type PricingTable = Record<string, ModelPricing>;
|
|
13
|
+
export interface RawTokens {
|
|
14
|
+
input: number;
|
|
15
|
+
output: number;
|
|
16
|
+
cache_read: number;
|
|
17
|
+
}
|
|
18
|
+
/** Стоимость прогона в $; null при отсутствии прайса/модели/токенов — числа не выдумываем (D9). */
|
|
19
|
+
export declare function runCostUsd(tokens: RawTokens | null | undefined, pricing: PricingTable | undefined, model: string | null): number | null;
|
|
20
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/domain/pricing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,gGAAgG;AAChG,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CACxB,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACpC,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,MAAM,GAAG,IAAI,CAMf"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Стоимость прогона в $; null при отсутствии прайса/модели/токенов — числа не выдумываем (D9). */
|
|
2
|
+
export function runCostUsd(tokens, pricing, model) {
|
|
3
|
+
if (tokens === null || tokens === undefined)
|
|
4
|
+
return null;
|
|
5
|
+
if (model === null || pricing === undefined)
|
|
6
|
+
return null;
|
|
7
|
+
const p = pricing[model];
|
|
8
|
+
if (p === undefined)
|
|
9
|
+
return null;
|
|
10
|
+
return (tokens.input * p.input + tokens.output * p.output + tokens.cache_read * p.cache_read) / 1e6;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/domain/pricing.ts"],"names":[],"mappings":"AAoBA,mGAAmG;AACnG,MAAM,UAAU,UAAU,CACxB,MAAoC,EACpC,OAAiC,EACjC,KAAoB;IAEpB,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;AACtG,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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MemoryType, MemoryTypeDeclaration } from './memory-types.js';
|
|
2
|
+
import type { PricingTable } from './pricing.js';
|
|
2
3
|
export interface WolfConfig {
|
|
3
4
|
artifact_sources: string[];
|
|
4
5
|
/** Маркер версии схемы проекта (спека §3, уровень 2); отсутствует = легаси. */
|
|
@@ -22,6 +23,15 @@ export interface WolfConfig {
|
|
|
22
23
|
silentOk?: number;
|
|
23
24
|
};
|
|
24
25
|
};
|
|
26
|
+
/** M3: $-прайсы ($/Mtok) из config.yaml; без прайса $-поля скрыты (D9). */
|
|
27
|
+
pricing?: PricingTable;
|
|
28
|
+
/** M3: пороги lifecycle-классификации D7 (analytics.thresholds из config.yaml). */
|
|
29
|
+
analytics?: {
|
|
30
|
+
thresholds?: {
|
|
31
|
+
newDays?: number;
|
|
32
|
+
workhorseUses?: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
25
35
|
}
|
|
26
36
|
export declare class ProjectTypeConflictError extends Error {
|
|
27
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../../src/domain/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,qBAAqB,EAAgB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"taxonomy.d.ts","sourceRoot":"","sources":["../../src/domain/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,qBAAqB,EAAgB,MAAM,mBAAmB,CAAC;AAEnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,uFAAuF;IACvF,YAAY,EAAE,OAAO,CAAC;IACtB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACvD;oFACgF;IAChF,QAAQ,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,uBAAuB,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACvF,CAAC;IACF,2EAA2E;IAC3E,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,mFAAmF;IACnF,SAAS,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC3E;AAED,qBAAa,wBAAyB,SAAQ,KAAK;CAAG;AAEtD,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG;IACxD,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;CAC/C,CAqBA;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAMpF;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAajE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/domain/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmD,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"taxonomy.js","sourceRoot":"","sources":["../../src/domain/taxonomy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmD,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAyBtD,MAAM,OAAO,wBAAyB,SAAQ,KAAK;CAAG;AAEtD,MAAM,UAAU,aAAa,CAAC,MAAyB;IAGrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC3D,KAAK,MAAM,CAAC,IAAI,aAAa;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,wBAAwB,CAChC,iBAAiB,CAAC,CAAC,IAAI,8DAA8D,CACtF,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,wBAAwB,CAChC,iBAAiB,CAAC,CAAC,IAAI,0BAA0B,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7G,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,cAAc,CAAC,IAA2B;IACxD,MAAM,GAAG,GAA6B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAkB,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAA4B;YACrC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;YAC3B,aAAa,EAAE,CAAC,CAAC,YAAY;YAC7B,aAAa,EAAE,CAAC,CAAC,YAAY;SAC9B,CAAC;QACF,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU;YAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1C,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -8,8 +8,23 @@ export interface RunLogEntry {
|
|
|
8
8
|
model?: string;
|
|
9
9
|
agent?: string;
|
|
10
10
|
title?: string;
|
|
11
|
+
session?: string;
|
|
11
12
|
weighted?: number;
|
|
12
13
|
tools?: string[];
|
|
14
|
+
/** M1 (D4): wall-clock длительность прогона, мс (замер wolf run вокруг spawn). */
|
|
15
|
+
duration_ms?: number;
|
|
16
|
+
/** M1 (D3): сырые токены прогона (Σ по step-finish). */
|
|
17
|
+
tokens?: {
|
|
18
|
+
input: number;
|
|
19
|
+
output: number;
|
|
20
|
+
cache_read: number;
|
|
21
|
+
};
|
|
22
|
+
/** M1 (D5): экспериментальные примитивы; arm/task_id пишутся только с experiment. */
|
|
23
|
+
experiment?: {
|
|
24
|
+
id: string;
|
|
25
|
+
arm: string;
|
|
26
|
+
task_id?: string;
|
|
27
|
+
};
|
|
13
28
|
}
|
|
14
29
|
export interface EconomyResult {
|
|
15
30
|
sufficient: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-economy.d.ts","sourceRoot":"","sources":["../../src/domain/tool-economy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-economy.d.ts","sourceRoot":"","sources":["../../src/domain/tool-economy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,qFAAqF;IACrF,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAavD;AAED,mEAAmE;AACnE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAKtD;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,SAAI,GAAG,aAAa,CAsBnF"}
|