mister-wolf 2.12.0 → 2.14.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/README.md +4 -1
- package/README.ru.md +4 -1
- package/dist/adapters/cli/cli-entry.d.ts +25 -0
- package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
- package/dist/adapters/cli/cli-entry.js +156 -85
- package/dist/adapters/cli/cli-entry.js.map +1 -1
- package/dist/adapters/cli/commands/analytics.d.ts +30 -5
- package/dist/adapters/cli/commands/analytics.d.ts.map +1 -1
- package/dist/adapters/cli/commands/analytics.js +295 -2
- package/dist/adapters/cli/commands/analytics.js.map +1 -1
- package/dist/adapters/cli/commands/memory-add.d.ts +21 -1
- package/dist/adapters/cli/commands/memory-add.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-add.js +42 -29
- package/dist/adapters/cli/commands/memory-add.js.map +1 -1
- package/dist/adapters/cli/commands/memory-aggregate.d.ts +3 -0
- package/dist/adapters/cli/commands/memory-aggregate.d.ts.map +1 -0
- package/dist/adapters/cli/commands/memory-aggregate.js +31 -0
- package/dist/adapters/cli/commands/memory-aggregate.js.map +1 -0
- package/dist/adapters/cli/commands/memory-archive.d.ts +3 -0
- package/dist/adapters/cli/commands/memory-archive.d.ts.map +1 -0
- package/dist/adapters/cli/commands/memory-archive.js +19 -0
- package/dist/adapters/cli/commands/memory-archive.js.map +1 -0
- package/dist/adapters/cli/commands/memory-call.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-call.js +9 -2
- package/dist/adapters/cli/commands/memory-call.js.map +1 -1
- package/dist/adapters/cli/commands/memory-complain.d.ts +6 -0
- package/dist/adapters/cli/commands/memory-complain.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-complain.js +20 -0
- package/dist/adapters/cli/commands/memory-complain.js.map +1 -1
- package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-doctor.js +43 -2
- package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
- package/dist/adapters/cli/commands/memory-edit.d.ts +3 -0
- package/dist/adapters/cli/commands/memory-edit.d.ts.map +1 -0
- package/dist/adapters/cli/commands/memory-edit.js +67 -0
- package/dist/adapters/cli/commands/memory-edit.js.map +1 -0
- package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-init.js +46 -7
- package/dist/adapters/cli/commands/memory-init.js.map +1 -1
- package/dist/adapters/cli/commands/memory-list.d.ts +12 -0
- package/dist/adapters/cli/commands/memory-list.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-list.js +36 -21
- package/dist/adapters/cli/commands/memory-list.js.map +1 -1
- package/dist/adapters/cli/commands/memory-migrate.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-migrate.js +91 -0
- package/dist/adapters/cli/commands/memory-migrate.js.map +1 -1
- package/dist/adapters/cli/commands/memory-recap.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-recap.js +3 -1
- package/dist/adapters/cli/commands/memory-recap.js.map +1 -1
- package/dist/adapters/cli/commands/memory-relation.d.ts +1 -1
- package/dist/adapters/cli/commands/memory-relation.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-relation.js +57 -2
- package/dist/adapters/cli/commands/memory-relation.js.map +1 -1
- package/dist/adapters/cli/commands/memory-search.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-search.js +21 -2
- package/dist/adapters/cli/commands/memory-search.js.map +1 -1
- package/dist/adapters/cli/commands/memory-session.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-session.js +2 -12
- package/dist/adapters/cli/commands/memory-session.js.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-sync.js +2 -9
- package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
- package/dist/adapters/cli/commands/memory-taxonomy.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-taxonomy.js +4 -4
- package/dist/adapters/cli/commands/memory-taxonomy.js.map +1 -1
- package/dist/adapters/cli/commands/memory-tool.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-tool.js +13 -5
- package/dist/adapters/cli/commands/memory-tool.js.map +1 -1
- package/dist/adapters/cli/commands/memory-validate.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-validate.js +18 -4
- package/dist/adapters/cli/commands/memory-validate.js.map +1 -1
- package/dist/adapters/cli/commands/projects.d.ts +3 -0
- package/dist/adapters/cli/commands/projects.d.ts.map +1 -0
- package/dist/adapters/cli/commands/projects.js +18 -0
- package/dist/adapters/cli/commands/projects.js.map +1 -0
- package/dist/adapters/cli/removed-commands.d.ts +11 -0
- package/dist/adapters/cli/removed-commands.d.ts.map +1 -0
- package/dist/adapters/cli/removed-commands.js +36 -0
- package/dist/adapters/cli/removed-commands.js.map +1 -0
- package/dist/adapters/cli/type-command-generator.d.ts +5 -0
- package/dist/adapters/cli/type-command-generator.d.ts.map +1 -0
- package/dist/adapters/cli/type-command-generator.js +132 -0
- package/dist/adapters/cli/type-command-generator.js.map +1 -0
- package/dist/adapters/fs/config-file.d.ts +6 -1
- package/dist/adapters/fs/config-file.d.ts.map +1 -1
- package/dist/adapters/fs/config-file.js +112 -55
- package/dist/adapters/fs/config-file.js.map +1 -1
- package/dist/adapters/fs/doc-id-migration.d.ts +2 -0
- package/dist/adapters/fs/doc-id-migration.d.ts.map +1 -1
- package/dist/adapters/fs/doc-id-migration.js +8 -2
- package/dist/adapters/fs/doc-id-migration.js.map +1 -1
- package/dist/adapters/fs/effectiveness-snapshots.d.ts +1 -1
- package/dist/adapters/fs/effectiveness-snapshots.d.ts.map +1 -1
- package/dist/adapters/fs/jsonl-relation-log.d.ts.map +1 -1
- package/dist/adapters/fs/jsonl-relation-log.js +10 -2
- package/dist/adapters/fs/jsonl-relation-log.js.map +1 -1
- package/dist/adapters/fs/layout-migration.d.ts.map +1 -1
- package/dist/adapters/fs/layout-migration.js +21 -2
- package/dist/adapters/fs/layout-migration.js.map +1 -1
- package/dist/adapters/fs/markdown-memory-store.d.ts +12 -1
- package/dist/adapters/fs/markdown-memory-store.d.ts.map +1 -1
- package/dist/adapters/fs/markdown-memory-store.js +124 -22
- package/dist/adapters/fs/markdown-memory-store.js.map +1 -1
- package/dist/adapters/fs/project-paths.d.ts +1 -1
- package/dist/adapters/fs/project-paths.d.ts.map +1 -1
- package/dist/adapters/fs/project-paths.js +1 -1
- package/dist/adapters/fs/project-paths.js.map +1 -1
- package/dist/adapters/fs/projects-registry.d.ts +8 -2
- package/dist/adapters/fs/projects-registry.d.ts.map +1 -1
- package/dist/adapters/fs/projects-registry.js +43 -16
- package/dist/adapters/fs/projects-registry.js.map +1 -1
- package/dist/adapters/fs/schema-version.d.ts +2 -0
- package/dist/adapters/fs/schema-version.d.ts.map +1 -1
- package/dist/adapters/fs/schema-version.js +15 -0
- package/dist/adapters/fs/schema-version.js.map +1 -1
- package/dist/adapters/fs/session-metrics-log.d.ts +32 -118
- package/dist/adapters/fs/session-metrics-log.d.ts.map +1 -1
- package/dist/adapters/fs/session-metrics-log.js +106 -141
- package/dist/adapters/fs/session-metrics-log.js.map +1 -1
- package/dist/adapters/fs/taxonomy-migration.d.ts +38 -0
- package/dist/adapters/fs/taxonomy-migration.d.ts.map +1 -0
- package/dist/adapters/fs/taxonomy-migration.js +280 -0
- package/dist/adapters/fs/taxonomy-migration.js.map +1 -0
- package/dist/adapters/mcp/mcp-schemas.d.ts +0 -122
- package/dist/adapters/mcp/mcp-schemas.d.ts.map +1 -1
- package/dist/adapters/mcp/mcp-schemas.js +0 -102
- package/dist/adapters/mcp/mcp-schemas.js.map +1 -1
- package/dist/adapters/mcp/mcp-server.d.ts.map +1 -1
- package/dist/adapters/mcp/mcp-server.js +30 -1
- package/dist/adapters/mcp/mcp-server.js.map +1 -1
- package/dist/adapters/mcp/mcp-tools.d.ts +10 -0
- package/dist/adapters/mcp/mcp-tools.d.ts.map +1 -1
- package/dist/adapters/mcp/mcp-tools.js +48 -186
- package/dist/adapters/mcp/mcp-tools.js.map +1 -1
- package/dist/adapters/sqlite/sqlite-schema.d.ts +1 -1
- package/dist/adapters/sqlite/sqlite-schema.d.ts.map +1 -1
- package/dist/adapters/sqlite/sqlite-schema.js +4 -2
- package/dist/adapters/sqlite/sqlite-schema.js.map +1 -1
- package/dist/adapters/sqlite/sqlite-search-index.d.ts +7 -0
- package/dist/adapters/sqlite/sqlite-search-index.d.ts.map +1 -1
- package/dist/adapters/sqlite/sqlite-search-index.js +41 -9
- package/dist/adapters/sqlite/sqlite-search-index.js.map +1 -1
- package/dist/app/use-cases/add-memory-object.d.ts +4 -0
- package/dist/app/use-cases/add-memory-object.d.ts.map +1 -1
- package/dist/app/use-cases/add-memory-object.js +42 -4
- package/dist/app/use-cases/add-memory-object.js.map +1 -1
- package/dist/app/use-cases/apply-aggregate.d.ts +36 -0
- package/dist/app/use-cases/apply-aggregate.d.ts.map +1 -0
- package/dist/app/use-cases/apply-aggregate.js +63 -0
- package/dist/app/use-cases/apply-aggregate.js.map +1 -0
- package/dist/app/use-cases/bootstrap-project.d.ts.map +1 -1
- package/dist/app/use-cases/bootstrap-project.js +13 -9
- package/dist/app/use-cases/bootstrap-project.js.map +1 -1
- package/dist/app/use-cases/build-analytics.d.ts +105 -1
- package/dist/app/use-cases/build-analytics.d.ts.map +1 -1
- package/dist/app/use-cases/build-analytics.js +330 -9
- package/dist/app/use-cases/build-analytics.js.map +1 -1
- package/dist/app/use-cases/build-projects-list.d.ts +30 -0
- package/dist/app/use-cases/build-projects-list.d.ts.map +1 -0
- package/dist/app/use-cases/build-projects-list.js +94 -0
- package/dist/app/use-cases/build-projects-list.js.map +1 -0
- package/dist/app/use-cases/create-memory-repair-request.d.ts.map +1 -1
- package/dist/app/use-cases/create-memory-repair-request.js +5 -3
- package/dist/app/use-cases/create-memory-repair-request.js.map +1 -1
- package/dist/app/use-cases/detect-unaggregated-lessons.d.ts +30 -0
- package/dist/app/use-cases/detect-unaggregated-lessons.d.ts.map +1 -0
- package/dist/app/use-cases/detect-unaggregated-lessons.js +40 -0
- package/dist/app/use-cases/detect-unaggregated-lessons.js.map +1 -0
- package/dist/app/use-cases/diff-thread.d.ts.map +1 -1
- package/dist/app/use-cases/diff-thread.js +9 -6
- package/dist/app/use-cases/diff-thread.js.map +1 -1
- package/dist/app/use-cases/doctor.d.ts +11 -3
- package/dist/app/use-cases/doctor.d.ts.map +1 -1
- package/dist/app/use-cases/doctor.js +53 -12
- package/dist/app/use-cases/doctor.js.map +1 -1
- package/dist/app/use-cases/generate-agent-brief.d.ts.map +1 -1
- package/dist/app/use-cases/generate-agent-brief.js +18 -8
- package/dist/app/use-cases/generate-agent-brief.js.map +1 -1
- package/dist/app/use-cases/generate-recap.d.ts +10 -0
- package/dist/app/use-cases/generate-recap.d.ts.map +1 -1
- package/dist/app/use-cases/generate-recap.js +81 -7
- package/dist/app/use-cases/generate-recap.js.map +1 -1
- package/dist/app/use-cases/get-call-injections.d.ts +8 -0
- package/dist/app/use-cases/get-call-injections.d.ts.map +1 -1
- package/dist/app/use-cases/get-call-injections.js +34 -8
- package/dist/app/use-cases/get-call-injections.js.map +1 -1
- package/dist/app/use-cases/init-project.d.ts +2 -6
- package/dist/app/use-cases/init-project.d.ts.map +1 -1
- package/dist/app/use-cases/init-project.js +11 -13
- package/dist/app/use-cases/init-project.js.map +1 -1
- package/dist/app/use-cases/list-memory-objects.d.ts +2 -0
- package/dist/app/use-cases/list-memory-objects.d.ts.map +1 -1
- package/dist/app/use-cases/list-memory-objects.js.map +1 -1
- package/dist/app/use-cases/record-relation.d.ts.map +1 -1
- package/dist/app/use-cases/record-relation.js +4 -0
- package/dist/app/use-cases/record-relation.js.map +1 -1
- package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
- package/dist/app/use-cases/scaffold-agent.js +58 -17
- package/dist/app/use-cases/scaffold-agent.js.map +1 -1
- package/dist/app/use-cases/scan-project.d.ts.map +1 -1
- package/dist/app/use-cases/scan-project.js +7 -3
- package/dist/app/use-cases/scan-project.js.map +1 -1
- package/dist/app/use-cases/seed-base-playbooks.d.ts +82 -3
- package/dist/app/use-cases/seed-base-playbooks.d.ts.map +1 -1
- package/dist/app/use-cases/seed-base-playbooks.js +13 -1
- package/dist/app/use-cases/seed-base-playbooks.js.map +1 -1
- package/dist/app/use-cases/should-summarize.d.ts.map +1 -1
- package/dist/app/use-cases/should-summarize.js +3 -1
- package/dist/app/use-cases/should-summarize.js.map +1 -1
- package/dist/app/use-cases/snapshot-delta.d.ts +1 -1
- package/dist/app/use-cases/snapshot-delta.d.ts.map +1 -1
- package/dist/app/use-cases/snapshot-delta.js.map +1 -1
- package/dist/app/use-cases/summarize-session.d.ts.map +1 -1
- package/dist/app/use-cases/summarize-session.js +11 -2
- package/dist/app/use-cases/summarize-session.js.map +1 -1
- package/dist/app/use-cases/thinking.d.ts +2 -2
- package/dist/app/use-cases/thinking.d.ts.map +1 -1
- package/dist/app/use-cases/thinking.js +20 -12
- package/dist/app/use-cases/thinking.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/bootstrap/container.d.ts.map +1 -1
- package/dist/bootstrap/container.js +30 -2
- package/dist/bootstrap/container.js.map +1 -1
- package/dist/domain/facet-colors.d.ts +12 -0
- package/dist/domain/facet-colors.d.ts.map +1 -0
- package/dist/domain/facet-colors.js +33 -0
- package/dist/domain/facet-colors.js.map +1 -0
- package/dist/domain/governance.d.ts.map +1 -1
- package/dist/domain/governance.js +9 -2
- package/dist/domain/governance.js.map +1 -1
- package/dist/domain/memory-types.d.ts +73 -318
- package/dist/domain/memory-types.d.ts.map +1 -1
- package/dist/domain/memory-types.js +90 -223
- package/dist/domain/memory-types.js.map +1 -1
- package/dist/domain/policies/read-only-zones.d.ts.map +1 -1
- package/dist/domain/policies/read-only-zones.js +7 -11
- package/dist/domain/policies/read-only-zones.js.map +1 -1
- package/dist/domain/schemas/memory-event-schema.d.ts +3 -0
- package/dist/domain/schemas/memory-event-schema.d.ts.map +1 -1
- package/dist/domain/schemas/memory-event-schema.js +3 -0
- package/dist/domain/schemas/memory-event-schema.js.map +1 -1
- package/dist/domain/schemas/memory-object-schema.d.ts +2 -0
- package/dist/domain/schemas/memory-object-schema.d.ts.map +1 -1
- package/dist/domain/schemas/memory-object-schema.js +3 -0
- package/dist/domain/schemas/memory-object-schema.js.map +1 -1
- package/dist/domain/schemas/relation-schema.d.ts +10 -4
- package/dist/domain/schemas/relation-schema.d.ts.map +1 -1
- package/dist/domain/schemas/relation-schema.js +12 -0
- package/dist/domain/schemas/relation-schema.js.map +1 -1
- package/dist/domain/schemas/session-checkpoint-schema.d.ts +3 -1
- package/dist/domain/schemas/session-checkpoint-schema.d.ts.map +1 -1
- package/dist/domain/schemas/session-checkpoint-schema.js +3 -2
- package/dist/domain/schemas/session-checkpoint-schema.js.map +1 -1
- package/dist/domain/solve/scenarios.js +3 -3
- package/dist/domain/solve/scenarios.js.map +1 -1
- package/dist/domain/taxonomy.d.ts +15 -1
- package/dist/domain/taxonomy.d.ts.map +1 -1
- package/dist/domain/taxonomy.js +14 -1
- package/dist/domain/taxonomy.js.map +1 -1
- package/dist/domain/tool-economy.d.ts +1 -1
- package/dist/domain/tool-economy.js +1 -1
- package/dist/domain/type-schema-builder.d.ts +15 -2
- package/dist/domain/type-schema-builder.d.ts.map +1 -1
- package/dist/domain/type-schema-builder.js +10 -1
- package/dist/domain/type-schema-builder.js.map +1 -1
- package/dist/ports/memory-store.port.d.ts +2 -0
- package/dist/ports/memory-store.port.d.ts.map +1 -1
- package/dist/ports/search-index.port.d.ts +2 -0
- package/dist/ports/search-index.port.d.ts.map +1 -1
- package/package.json +2 -2
- package/templates/base/agents/executor-lead.md +5 -0
- package/templates/base/agents/mr-wolf.md +6 -0
- package/templates/base/agents/steward.md +31 -2
- package/templates/opencode/plugins/wolf-router.ts +8 -3
- package/templates/opencode/plugins/wolf-session-start.js +6 -3
- package/dist/adapters/cli/commands/coord.d.ts +0 -3
- package/dist/adapters/cli/commands/coord.d.ts.map +0 -1
- package/dist/adapters/cli/commands/coord.js +0 -36
- package/dist/adapters/cli/commands/coord.js.map +0 -1
- package/dist/adapters/cli/commands/dashboard.d.ts +0 -20
- package/dist/adapters/cli/commands/dashboard.d.ts.map +0 -1
- package/dist/adapters/cli/commands/dashboard.js +0 -231
- package/dist/adapters/cli/commands/dashboard.js.map +0 -1
- package/dist/adapters/cli/commands/memory-article.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-article.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-article.js +0 -47
- package/dist/adapters/cli/commands/memory-article.js.map +0 -1
- package/dist/adapters/cli/commands/memory-blocker.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-blocker.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-blocker.js +0 -52
- package/dist/adapters/cli/commands/memory-blocker.js.map +0 -1
- package/dist/adapters/cli/commands/memory-council.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-council.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-council.js +0 -42
- package/dist/adapters/cli/commands/memory-council.js.map +0 -1
- package/dist/adapters/cli/commands/memory-decision.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-decision.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-decision.js +0 -41
- package/dist/adapters/cli/commands/memory-decision.js.map +0 -1
- package/dist/adapters/cli/commands/memory-effectiveness.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-effectiveness.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-effectiveness.js +0 -127
- package/dist/adapters/cli/commands/memory-effectiveness.js.map +0 -1
- package/dist/adapters/cli/commands/memory-info-request.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-info-request.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-info-request.js +0 -47
- package/dist/adapters/cli/commands/memory-info-request.js.map +0 -1
- package/dist/adapters/cli/commands/memory-insights.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-insights.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-insights.js +0 -42
- package/dist/adapters/cli/commands/memory-insights.js.map +0 -1
- package/dist/adapters/cli/commands/memory-learn.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-learn.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-learn.js +0 -327
- package/dist/adapters/cli/commands/memory-learn.js.map +0 -1
- package/dist/adapters/cli/commands/memory-rule.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-rule.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-rule.js +0 -40
- package/dist/adapters/cli/commands/memory-rule.js.map +0 -1
- package/dist/adapters/cli/commands/memory-run.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-run.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-run.js +0 -154
- package/dist/adapters/cli/commands/memory-run.js.map +0 -1
- package/dist/adapters/cli/commands/memory-stage.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-stage.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-stage.js +0 -35
- package/dist/adapters/cli/commands/memory-stage.js.map +0 -1
- package/dist/adapters/cli/commands/memory-thread.d.ts +0 -3
- package/dist/adapters/cli/commands/memory-thread.d.ts.map +0 -1
- package/dist/adapters/cli/commands/memory-thread.js +0 -48
- package/dist/adapters/cli/commands/memory-thread.js.map +0 -1
- package/dist/adapters/cli/opencode-run-metrics.d.ts +0 -25
- package/dist/adapters/cli/opencode-run-metrics.d.ts.map +0 -1
- package/dist/adapters/cli/opencode-run-metrics.js +0 -64
- package/dist/adapters/cli/opencode-run-metrics.js.map +0 -1
- package/dist/app/use-cases/activate-draft.d.ts +0 -31
- package/dist/app/use-cases/activate-draft.d.ts.map +0 -1
- package/dist/app/use-cases/activate-draft.js +0 -74
- package/dist/app/use-cases/activate-draft.js.map +0 -1
- package/dist/app/use-cases/build-dashboard.d.ts +0 -43
- package/dist/app/use-cases/build-dashboard.d.ts.map +0 -1
- package/dist/app/use-cases/build-dashboard.js +0 -32
- package/dist/app/use-cases/build-dashboard.js.map +0 -1
- package/dist/app/use-cases/create-article.d.ts +0 -31
- package/dist/app/use-cases/create-article.d.ts.map +0 -1
- package/dist/app/use-cases/create-article.js +0 -62
- package/dist/app/use-cases/create-article.js.map +0 -1
- package/dist/app/use-cases/create-blocker.d.ts +0 -28
- package/dist/app/use-cases/create-blocker.d.ts.map +0 -1
- package/dist/app/use-cases/create-blocker.js +0 -51
- package/dist/app/use-cases/create-blocker.js.map +0 -1
- package/dist/app/use-cases/create-decision.d.ts +0 -28
- package/dist/app/use-cases/create-decision.d.ts.map +0 -1
- package/dist/app/use-cases/create-decision.js +0 -58
- package/dist/app/use-cases/create-decision.js.map +0 -1
- package/dist/app/use-cases/create-info-request.d.ts +0 -31
- package/dist/app/use-cases/create-info-request.d.ts.map +0 -1
- package/dist/app/use-cases/create-info-request.js +0 -58
- package/dist/app/use-cases/create-info-request.js.map +0 -1
- package/dist/app/use-cases/create-rule.d.ts +0 -27
- package/dist/app/use-cases/create-rule.d.ts.map +0 -1
- package/dist/app/use-cases/create-rule.js +0 -48
- package/dist/app/use-cases/create-rule.js.map +0 -1
- package/dist/app/use-cases/create-session-checkpoint.d.ts +0 -23
- package/dist/app/use-cases/create-session-checkpoint.d.ts.map +0 -1
- package/dist/app/use-cases/create-session-checkpoint.js +0 -61
- package/dist/app/use-cases/create-session-checkpoint.js.map +0 -1
- package/dist/app/use-cases/create-synthesis.d.ts +0 -25
- package/dist/app/use-cases/create-synthesis.d.ts.map +0 -1
- package/dist/app/use-cases/create-synthesis.js +0 -36
- package/dist/app/use-cases/create-synthesis.js.map +0 -1
- package/dist/app/use-cases/create-work-thread.d.ts +0 -26
- package/dist/app/use-cases/create-work-thread.d.ts.map +0 -1
- package/dist/app/use-cases/create-work-thread.js +0 -47
- package/dist/app/use-cases/create-work-thread.js.map +0 -1
- package/dist/app/use-cases/effectiveness.d.ts +0 -116
- package/dist/app/use-cases/effectiveness.d.ts.map +0 -1
- package/dist/app/use-cases/effectiveness.js +0 -198
- package/dist/app/use-cases/effectiveness.js.map +0 -1
- package/dist/app/use-cases/get-thread-brief.d.ts +0 -19
- package/dist/app/use-cases/get-thread-brief.d.ts.map +0 -1
- package/dist/app/use-cases/get-thread-brief.js +0 -72
- package/dist/app/use-cases/get-thread-brief.js.map +0 -1
- package/dist/app/use-cases/learn-decay.d.ts +0 -91
- package/dist/app/use-cases/learn-decay.d.ts.map +0 -1
- package/dist/app/use-cases/learn-decay.js +0 -274
- package/dist/app/use-cases/learn-decay.js.map +0 -1
- package/dist/app/use-cases/model-routing.d.ts +0 -30
- package/dist/app/use-cases/model-routing.d.ts.map +0 -1
- package/dist/app/use-cases/model-routing.js +0 -39
- package/dist/app/use-cases/model-routing.js.map +0 -1
- package/dist/app/use-cases/pattern-detection.d.ts +0 -44
- package/dist/app/use-cases/pattern-detection.d.ts.map +0 -1
- package/dist/app/use-cases/pattern-detection.js +0 -71
- package/dist/app/use-cases/pattern-detection.js.map +0 -1
- package/dist/app/use-cases/propose-draft.d.ts +0 -79
- package/dist/app/use-cases/propose-draft.d.ts.map +0 -1
- package/dist/app/use-cases/propose-draft.js +0 -140
- package/dist/app/use-cases/propose-draft.js.map +0 -1
- package/dist/app/use-cases/resolve-blocker.d.ts +0 -17
- package/dist/app/use-cases/resolve-blocker.d.ts.map +0 -1
- package/dist/app/use-cases/resolve-blocker.js +0 -31
- package/dist/app/use-cases/resolve-blocker.js.map +0 -1
- package/dist/app/use-cases/run-source.d.ts +0 -15
- package/dist/app/use-cases/run-source.d.ts.map +0 -1
- package/dist/app/use-cases/run-source.js +0 -26
- package/dist/app/use-cases/run-source.js.map +0 -1
- package/dist/app/use-cases/tally-council-votes.d.ts +0 -24
- package/dist/app/use-cases/tally-council-votes.d.ts.map +0 -1
- package/dist/app/use-cases/tally-council-votes.js +0 -30
- package/dist/app/use-cases/tally-council-votes.js.map +0 -1
- package/dist/app/use-cases/template-evolve.d.ts +0 -87
- package/dist/app/use-cases/template-evolve.d.ts.map +0 -1
- package/dist/app/use-cases/template-evolve.js +0 -164
- package/dist/app/use-cases/template-evolve.js.map +0 -1
- package/dist/app/use-cases/validate-draft.d.ts +0 -36
- package/dist/app/use-cases/validate-draft.d.ts.map +0 -1
- package/dist/app/use-cases/validate-draft.js +0 -75
- package/dist/app/use-cases/validate-draft.js.map +0 -1
- package/dist/domain/gates/stop-gate.d.ts +0 -43
- package/dist/domain/gates/stop-gate.d.ts.map +0 -1
- package/dist/domain/gates/stop-gate.js +0 -125
- package/dist/domain/gates/stop-gate.js.map +0 -1
- package/dist/domain/schemas/article-schema.d.ts +0 -79
- package/dist/domain/schemas/article-schema.d.ts.map +0 -1
- package/dist/domain/schemas/article-schema.js +0 -12
- package/dist/domain/schemas/article-schema.js.map +0 -1
- package/dist/domain/schemas/blocker-schema.d.ts +0 -77
- package/dist/domain/schemas/blocker-schema.d.ts.map +0 -1
- package/dist/domain/schemas/blocker-schema.js +0 -10
- package/dist/domain/schemas/blocker-schema.js.map +0 -1
- package/dist/domain/schemas/decision-schema.d.ts +0 -75
- package/dist/domain/schemas/decision-schema.d.ts.map +0 -1
- package/dist/domain/schemas/decision-schema.js +0 -8
- package/dist/domain/schemas/decision-schema.js.map +0 -1
- package/dist/domain/schemas/info-request-schema.d.ts +0 -80
- package/dist/domain/schemas/info-request-schema.d.ts.map +0 -1
- package/dist/domain/schemas/info-request-schema.js +0 -13
- package/dist/domain/schemas/info-request-schema.js.map +0 -1
- package/dist/domain/schemas/rule-schema.d.ts +0 -80
- package/dist/domain/schemas/rule-schema.d.ts.map +0 -1
- package/dist/domain/schemas/rule-schema.js +0 -10
- package/dist/domain/schemas/rule-schema.js.map +0 -1
- package/dist/domain/schemas/thread-schema.d.ts +0 -77
- package/dist/domain/schemas/thread-schema.d.ts.map +0 -1
- package/dist/domain/schemas/thread-schema.js +0 -10
- package/dist/domain/schemas/thread-schema.js.map +0 -1
- package/templates/base/playbooks/wolf-review-lenses.md +0 -50
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type RunLogEntry } from '../../domain/tool-economy.js';
|
|
2
3
|
export type SignalEventName = 'run' | 'complaint' | 'delivery' | 'tool_error' | 'task_evaluated' | 'mcp_call' | 'memory_stage' | 'coord_event';
|
|
3
4
|
/**
|
|
4
5
|
* Схема сигнального лога (P0 D6): чтение лога валидируется Zod, неизвестные поля
|
|
@@ -8,8 +9,8 @@ export declare const SignalEventSchema: z.ZodObject<{
|
|
|
8
9
|
ts: z.ZodString;
|
|
9
10
|
event: z.ZodEnum<{
|
|
10
11
|
complaint: "complaint";
|
|
11
|
-
delivery: "delivery";
|
|
12
12
|
run: "run";
|
|
13
|
+
delivery: "delivery";
|
|
13
14
|
tool_error: "tool_error";
|
|
14
15
|
task_evaluated: "task_evaluated";
|
|
15
16
|
mcp_call: "mcp_call";
|
|
@@ -62,20 +63,9 @@ export declare const SignalEventSchema: z.ZodObject<{
|
|
|
62
63
|
detail: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
63
64
|
}, z.core.$strip>;
|
|
64
65
|
export type SignalEvent = z.infer<typeof SignalEventSchema>;
|
|
65
|
-
export interface PatternRecord {
|
|
66
|
-
ts: string;
|
|
67
|
-
event: 'pattern';
|
|
68
|
-
/** Ключ кластера Ф21. */
|
|
69
|
-
key: string;
|
|
70
|
-
count: number;
|
|
71
|
-
threshold: number;
|
|
72
|
-
}
|
|
73
66
|
/** Порог паттерна N≥3 — дефолт спеки §2.2/§16; параметр процесса (config.yaml). */
|
|
74
67
|
export declare const DEFAULT_PATTERN_THRESHOLD = 3;
|
|
75
68
|
export declare function metricsLogPath(baseDir: string): string;
|
|
76
|
-
export declare function patternsLogPath(baseDir: string): string;
|
|
77
|
-
/** Эффективный порог: learning.pattern_threshold из .wolf/config.yaml, иначе дефолт. */
|
|
78
|
-
export declare function patternThreshold(baseDir: string): number;
|
|
79
69
|
/**
|
|
80
70
|
* Ключ кластеризации Ф21 (детерминированный, O(n)-группировка):
|
|
81
71
|
* tool_error → `tool_name:error_class_id`; complaint/delivery → `тип:цель`;
|
|
@@ -94,70 +84,16 @@ export interface SignalLogStats {
|
|
|
94
84
|
export declare function readSignalLog(baseDir: string): SignalLogStats;
|
|
95
85
|
/** Все сигналы лога (порядок записи); отсутствующий/битый лог → максимально читаемое. */
|
|
96
86
|
export declare function readSignals(baseDir: string): SignalEvent[];
|
|
97
|
-
/**
|
|
98
|
-
* P104 (A1): мемо один раз на процесс — readPatterns не перечитывает patterns.jsonl
|
|
99
|
-
* на каждой keyed-записи. appendSignal обновляет мемо при фиксации, читатели этого
|
|
100
|
-
* же процесса видят свежие данные.
|
|
101
|
-
*/
|
|
102
|
-
export declare function readPatterns(baseDir: string): PatternRecord[];
|
|
103
87
|
/** P104 (A1): сайдкар счётчиков Ф21 — derived-файл, отсутствующий/битый = rebuild-scan. */
|
|
104
88
|
export declare function signalCountsPath(baseDir: string): string;
|
|
105
89
|
/**
|
|
106
|
-
* Append сигнала +
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* настраиваемый параметр (§2.2): при снижении порога уже накопленный кластер
|
|
110
|
-
* фиксируется на следующей же записи, не ждёт нового пересечения.
|
|
111
|
-
*
|
|
112
|
-
* P104 (A1): keyed-счётчики — инкремент сайдкара signal-counts.json вместо O(n)-пересчёта
|
|
113
|
-
* лога на каждой записи; вся секция под sync-локом metrics-каталога. Счётчик монотонный
|
|
114
|
-
* по построению (считаем события, а не окна) — кластер, пересёкший порог в прошлом,
|
|
115
|
-
* не фиксируется повторно.
|
|
90
|
+
* Append сигнала + keyed-счётчик Ф21.
|
|
91
|
+
* P104 (A1): инкремент сайдкара signal-counts.json вместо O(n)-пересчёта
|
|
92
|
+
* лога на каждой записи; вся секция под sync-локом metrics-каталога.
|
|
116
93
|
*/
|
|
117
94
|
export declare function appendSignal(baseDir: string, ev: SignalEvent): {
|
|
118
95
|
key: string | null;
|
|
119
96
|
count: number;
|
|
120
|
-
patternFixed: boolean;
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* Writer (а): `wolf run` — метрики сессии (модель из routing, weighted, outcome; M1: duration/tokens/experiment).
|
|
124
|
-
* P1 D3: writer перешёл на v2 — schema_version: 2 всегда, identity-поля опциональны.
|
|
125
|
-
*/
|
|
126
|
-
export declare function appendRunSignal(baseDir: string, input: {
|
|
127
|
-
model: string;
|
|
128
|
-
agent: string;
|
|
129
|
-
title: string;
|
|
130
|
-
session: string | null;
|
|
131
|
-
weighted: number;
|
|
132
|
-
outcome: string;
|
|
133
|
-
actor: string;
|
|
134
|
-
task?: string;
|
|
135
|
-
durationMs?: number;
|
|
136
|
-
tokens?: {
|
|
137
|
-
input: number;
|
|
138
|
-
output: number;
|
|
139
|
-
cache_read: number;
|
|
140
|
-
};
|
|
141
|
-
experiment?: {
|
|
142
|
-
id: string;
|
|
143
|
-
arm: 'wolf' | 'baseline';
|
|
144
|
-
taskId?: string;
|
|
145
|
-
};
|
|
146
|
-
/** P1 D3: identity-поля v2 (event_id/run_id/trace_id/attempt/task_id/config_hash/prompt_hash/tools). */
|
|
147
|
-
eventId?: string;
|
|
148
|
-
runId?: string;
|
|
149
|
-
traceId?: string;
|
|
150
|
-
attempt?: number;
|
|
151
|
-
taskId?: string;
|
|
152
|
-
/** P3 D1: id кампании (топ-левел campaign_id run-сигнала). */
|
|
153
|
-
campaignId?: string;
|
|
154
|
-
configHash?: string;
|
|
155
|
-
promptHash?: string;
|
|
156
|
-
tools?: string[];
|
|
157
|
-
}): {
|
|
158
|
-
key: string | null;
|
|
159
|
-
count: number;
|
|
160
|
-
patternFixed: boolean;
|
|
161
97
|
};
|
|
162
98
|
/** Writer (б): `wolf complain` — сигнал жалобы (hot-signal Стюарда). */
|
|
163
99
|
export declare function appendComplaintSignal(baseDir: string, input: {
|
|
@@ -168,7 +104,6 @@ export declare function appendComplaintSignal(baseDir: string, input: {
|
|
|
168
104
|
}): {
|
|
169
105
|
key: string | null;
|
|
170
106
|
count: number;
|
|
171
|
-
patternFixed: boolean;
|
|
172
107
|
};
|
|
173
108
|
/** Writer (в): delivery_event — факт доставки методики/инструмента (scaffold / tool expose;
|
|
174
109
|
* Ф22 — активация draft: доставка через wolf call / trigger_keywords). */
|
|
@@ -185,7 +120,6 @@ export declare function appendDeliverySignal(baseDir: string, input: {
|
|
|
185
120
|
}): {
|
|
186
121
|
key: string | null;
|
|
187
122
|
count: number;
|
|
188
|
-
patternFixed: boolean;
|
|
189
123
|
};
|
|
190
124
|
/** Волна 0 0.1: args_summary для add (MCP и CLI каналы) — type≤40, title≤80, ключи
|
|
191
125
|
* extra; body в телеметрию никогда не попадает. */
|
|
@@ -197,7 +131,7 @@ export declare function addArgsSummary(input: {
|
|
|
197
131
|
/**
|
|
198
132
|
* Writer (з): mcp_call — вызов инструмента/команды через MCP или CLI-обёртку
|
|
199
133
|
* (волна 0 0.1). Контекст-событие: signalKey → null, пороги Ф21 не считаются.
|
|
200
|
-
* При input.error — classifyError (проектная
|
|
134
|
+
* При input.error — classifyError (проектная таксономия из config.yaml)
|
|
201
135
|
* → detail.error_class_id + detail.error.{message ≤200, code}. Конфиг читается
|
|
202
136
|
* только в error-ветке (P104: sync-yaml-parse убран с горячего пути).
|
|
203
137
|
*/
|
|
@@ -216,24 +150,6 @@ export declare function appendMcpCallSignal(baseDir: string, input: {
|
|
|
216
150
|
code?: string;
|
|
217
151
|
};
|
|
218
152
|
}): void;
|
|
219
|
-
/**
|
|
220
|
-
* Writer (г): ошибка тула — через классификатор D1.2 (проектная таксономия из
|
|
221
|
-
* config.yaml матчится раньше дефолтной таблицы).
|
|
222
|
-
*/
|
|
223
|
-
export declare function recordToolError(baseDir: string, input: {
|
|
224
|
-
tool_name: string;
|
|
225
|
-
message: string;
|
|
226
|
-
code?: string;
|
|
227
|
-
session_id?: string | null;
|
|
228
|
-
task?: string | null;
|
|
229
|
-
agent?: string | null;
|
|
230
|
-
actor?: string;
|
|
231
|
-
}): {
|
|
232
|
-
error_class_id: string;
|
|
233
|
-
key: string;
|
|
234
|
-
count: number;
|
|
235
|
-
patternFixed: boolean;
|
|
236
|
-
};
|
|
237
153
|
/**
|
|
238
154
|
* Writer (д): task_evaluated (P0 D2) — вердикт по задаче от скорера. Контекст-событие:
|
|
239
155
|
* signalKey → null (как run), пороги Ф21 не считаются. Дефолт scorer='human'
|
|
@@ -253,7 +169,6 @@ export declare function appendTaskEvaluatedSignal(baseDir: string, input: {
|
|
|
253
169
|
}): {
|
|
254
170
|
key: string | null;
|
|
255
171
|
count: number;
|
|
256
|
-
patternFixed: boolean;
|
|
257
172
|
};
|
|
258
173
|
/** Detail memory_stage: стадия жизненного цикла памяти + затронутые объекты. */
|
|
259
174
|
export declare const MemoryStageDetailSchema: z.ZodObject<{
|
|
@@ -265,20 +180,6 @@ export declare const MemoryStageDetailSchema: z.ZodObject<{
|
|
|
265
180
|
}>;
|
|
266
181
|
memory_ids: z.ZodArray<z.ZodString>;
|
|
267
182
|
}, z.core.$strip>;
|
|
268
|
-
/** Detail coord_event: факт координации между агентами (handoff/review/...). */
|
|
269
|
-
export declare const CoordEventDetailSchema: z.ZodObject<{
|
|
270
|
-
kind: z.ZodEnum<{
|
|
271
|
-
blocker: "blocker";
|
|
272
|
-
escalation: "escalation";
|
|
273
|
-
handoff: "handoff";
|
|
274
|
-
review: "review";
|
|
275
|
-
acceptance: "acceptance";
|
|
276
|
-
}>;
|
|
277
|
-
actor_from: z.ZodString;
|
|
278
|
-
actor_to: z.ZodOptional<z.ZodString>;
|
|
279
|
-
refs: z.ZodArray<z.ZodString>;
|
|
280
|
-
note: z.ZodOptional<z.ZodString>;
|
|
281
|
-
}, z.core.$strip>;
|
|
282
183
|
/**
|
|
283
184
|
* Writer (е): memory_stage (P2 D1) — стадия жизненного цикла памяти. Контекст-событие:
|
|
284
185
|
* signalKey → null (как run/task_evaluated), пороги Ф21 не считаются. Detail
|
|
@@ -292,22 +193,35 @@ export declare function appendMemoryStageSignal(baseDir: string, input: {
|
|
|
292
193
|
}): {
|
|
293
194
|
key: string | null;
|
|
294
195
|
count: number;
|
|
295
|
-
patternFixed: boolean;
|
|
296
196
|
};
|
|
297
197
|
/**
|
|
298
|
-
*
|
|
299
|
-
*
|
|
198
|
+
* P1 D4: канонический источник run-метрик — сигнальный лог; исторический
|
|
199
|
+
* .wolf/run-log.jsonl (deprecated) мержится на переходный период.
|
|
200
|
+
* Правило мержа: простая конкатенация [сигнальные run-entries, legacy run-log entries]
|
|
201
|
+
* без dedup: в переходном окне каждый run существует в обоих источниках, дублирование
|
|
202
|
+
* симметрично → медианы инвариантны; счётчики (toolRuns/totalRuns) могут завышаться
|
|
203
|
+
* до выхода из переходного периода (задокументировано в RISKS отчёта P1).
|
|
300
204
|
*/
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
205
|
+
/** run-сигналы → канонические run-entries (tools из v2-поля tools). */
|
|
206
|
+
export declare function runEntriesFromSignals(signals: SignalEvent[]): RunLogEntry[];
|
|
207
|
+
/** Переходный мерж: сигнальный источник + исторический run-log (если файл существует). */
|
|
208
|
+
export declare function mergeRunEntries(signals: SignalEvent[], runLogText: string | null): RunLogEntry[];
|
|
209
|
+
/** Окно молчания правила для rule_utilization-дрейфа [ВА] (§16). */
|
|
210
|
+
export declare const SILENT_RULE_WINDOW_SESSIONS = 30;
|
|
211
|
+
/** Минимум delivery-событий в логе, чтобы судить об утилизации правил [ВА] (§16). */
|
|
212
|
+
export declare const SILENT_RULE_MIN_DELIVERIES = 20;
|
|
213
|
+
/**
|
|
214
|
+
* Пробег = упорядоченные уникальные session_id из run-событий
|
|
215
|
+
* (порядок первого появления в логе = хронология).
|
|
216
|
+
*/
|
|
217
|
+
export declare function countSessions(signals: SignalEvent[]): string[];
|
|
218
|
+
/** Молчащее правило: доставки были, но нет ни одной за последние 30 сессий
|
|
219
|
+
* (при ≥20 delivery-событий в логе). ponytail: [ВА]-порог rule_utilization
|
|
220
|
+
* <0.5 от baseline упрощён продукт-минимумом до «ноль доставок в окне» —
|
|
221
|
+
* честный апгрейд: baseline-утилизация по delivery-stats (S20-09).
|
|
222
|
+
* Экспортирована для effectiveness-панели (E1.2). */
|
|
223
|
+
export declare function silentRuleIds(signals: SignalEvent[]): {
|
|
224
|
+
ids: Set<string>;
|
|
310
225
|
count: number;
|
|
311
|
-
patternFixed: boolean;
|
|
312
226
|
};
|
|
313
227
|
//# sourceMappingURL=session-metrics-log.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-metrics-log.d.ts","sourceRoot":"","sources":["../../../src/adapters/fs/session-metrics-log.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"session-metrics-log.d.ts","sourceRoot":"","sources":["../../../src/adapters/fs/session-metrics-log.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE7E,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,WAAW,GACX,UAAU,GACV,YAAY,GACZ,gBAAgB,GAChB,UAAU,GACV,cAAc,GACd,aAAa,CAAC;AAElB;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4D5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAKxD;AAgDD,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAG7D;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAE1D;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAuFD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBpG;AAMD,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAUvC;AAED;0EAC0E;AAC1E,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBvC;AAED;mDACmD;AACnD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM1B;AAeD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iFAAiF;IACjF,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C,GACA,IAAI,CA0BN;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,OAAO,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,CAAC;IAC9D,MAAM,EAAE,OAAO,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBvC;AAID,gFAAgF;AAChF,eAAO,MAAM,uBAAuB;;;;;;;;iBAGlC,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;IACL,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWvC;AAID;;;;;;;GAOG;AACH,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAiB3E;AAED,0FAA0F;AAC1F,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,EAAE,CAEhG;AAID,oEAAoE;AACpE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,qFAAqF;AACrF,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAW9D;AAYD;;;;qDAIqD;AACrD,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG;IAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAqBzF"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* Документация формата: docs/guide/signal-log.md. Спека:
|
|
7
7
|
* docs/superpowers/specs/2026-08-26-self-learning-design.md §2.1, §2.2.
|
|
8
8
|
*
|
|
9
|
-
* Writer-матрица D1 (M20-07, решение Q3): writer'ы — сами CLI-команды (
|
|
10
|
-
* scaffold, tool expose
|
|
9
|
+
* Writer-матрица D1 (M20-07, решение Q3): writer'ы — сами CLI-команды (complain,
|
|
10
|
+
* scaffold, tool expose); `wolf metrics emit` не вводится.
|
|
11
11
|
*
|
|
12
12
|
* P1 D1: identity-поля v2 (event_id, schema_version, run_id, trace_id, parent_span_id,
|
|
13
13
|
* role_level, attempt, task_id, config_hash, prompt_hash, tools) — все опциональные,
|
|
@@ -22,6 +22,7 @@ import { metricsDir } from './project-paths.js';
|
|
|
22
22
|
import { LOCK_TIMING } from './memory-lock.js';
|
|
23
23
|
import { classifyError } from '../../domain/error-class.js';
|
|
24
24
|
import { loadWolfConfigSync } from './config-file.js';
|
|
25
|
+
import { parseRunLog } from '../../domain/tool-economy.js';
|
|
25
26
|
/**
|
|
26
27
|
* Схема сигнального лога (P0 D6): чтение лога валидируется Zod, неизвестные поля
|
|
27
28
|
* отбрасываются (strip — дефолт zod-object). Тип SignalEvent выводится из схемы.
|
|
@@ -92,19 +93,6 @@ export const DEFAULT_PATTERN_THRESHOLD = 3;
|
|
|
92
93
|
export function metricsLogPath(baseDir) {
|
|
93
94
|
return join(metricsDir(baseDir), 'session-metrics.jsonl');
|
|
94
95
|
}
|
|
95
|
-
export function patternsLogPath(baseDir) {
|
|
96
|
-
return join(metricsDir(baseDir), 'patterns.jsonl');
|
|
97
|
-
}
|
|
98
|
-
/** Эффективный порог: learning.pattern_threshold из .wolf/config.yaml, иначе дефолт. */
|
|
99
|
-
export function patternThreshold(baseDir) {
|
|
100
|
-
try {
|
|
101
|
-
const t = loadWolfConfigSync(baseDir)?.learning?.patternThreshold;
|
|
102
|
-
return typeof t === 'number' && Number.isInteger(t) && t >= 1 ? t : DEFAULT_PATTERN_THRESHOLD;
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
return DEFAULT_PATTERN_THRESHOLD;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
96
|
/**
|
|
109
97
|
* Ключ кластеризации Ф21 (детерминированный, O(n)-группировка):
|
|
110
98
|
* tool_error → `tool_name:error_class_id`; complaint/delivery → `тип:цель`;
|
|
@@ -120,8 +108,8 @@ export function signalKey(ev) {
|
|
|
120
108
|
return null;
|
|
121
109
|
}
|
|
122
110
|
/**
|
|
123
|
-
* Мягкое чтение jsonl:
|
|
124
|
-
*
|
|
111
|
+
* Мягкое чтение jsonl: со схемой — Zod-валидация каждой строки
|
|
112
|
+
* (session-metrics.jsonl). Малформ-строки (не-JSON или
|
|
125
113
|
* не прошедшие схему) считаются и пропускаются: лог append-only, битая строка
|
|
126
114
|
* не должна ронять контур.
|
|
127
115
|
*/
|
|
@@ -170,21 +158,6 @@ export function readSignalLog(baseDir) {
|
|
|
170
158
|
export function readSignals(baseDir) {
|
|
171
159
|
return readSignalLog(baseDir).events;
|
|
172
160
|
}
|
|
173
|
-
/** Зафиксированные паттерны (события пересечения порога). */
|
|
174
|
-
const patternsMemo = new Map();
|
|
175
|
-
/**
|
|
176
|
-
* P104 (A1): мемо один раз на процесс — readPatterns не перечитывает patterns.jsonl
|
|
177
|
-
* на каждой keyed-записи. appendSignal обновляет мемо при фиксации, читатели этого
|
|
178
|
-
* же процесса видят свежие данные.
|
|
179
|
-
*/
|
|
180
|
-
export function readPatterns(baseDir) {
|
|
181
|
-
let memo = patternsMemo.get(baseDir);
|
|
182
|
-
if (memo === undefined) {
|
|
183
|
-
memo = readJsonl(patternsLogPath(baseDir)).items;
|
|
184
|
-
patternsMemo.set(baseDir, memo);
|
|
185
|
-
}
|
|
186
|
-
return memo;
|
|
187
|
-
}
|
|
188
161
|
/** P104 (A1): сайдкар счётчиков Ф21 — derived-файл, отсутствующий/битый = rebuild-scan. */
|
|
189
162
|
export function signalCountsPath(baseDir) {
|
|
190
163
|
return join(metricsDir(baseDir), 'signal-counts.json');
|
|
@@ -280,23 +253,16 @@ function withSyncMemoryLock(dir, fn) {
|
|
|
280
253
|
}
|
|
281
254
|
}
|
|
282
255
|
/**
|
|
283
|
-
* Append сигнала +
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
* настраиваемый параметр (§2.2): при снижении порога уже накопленный кластер
|
|
287
|
-
* фиксируется на следующей же записи, не ждёт нового пересечения.
|
|
288
|
-
*
|
|
289
|
-
* P104 (A1): keyed-счётчики — инкремент сайдкара signal-counts.json вместо O(n)-пересчёта
|
|
290
|
-
* лога на каждой записи; вся секция под sync-локом metrics-каталога. Счётчик монотонный
|
|
291
|
-
* по построению (считаем события, а не окна) — кластер, пересёкший порог в прошлом,
|
|
292
|
-
* не фиксируется повторно.
|
|
256
|
+
* Append сигнала + keyed-счётчик Ф21.
|
|
257
|
+
* P104 (A1): инкремент сайдкара signal-counts.json вместо O(n)-пересчёта
|
|
258
|
+
* лога на каждой записи; вся секция под sync-локом metrics-каталога.
|
|
293
259
|
*/
|
|
294
260
|
export function appendSignal(baseDir, ev) {
|
|
295
261
|
mkdirSync(metricsDir(baseDir), { recursive: true });
|
|
296
262
|
const key = signalKey(ev);
|
|
297
263
|
if (key === null) {
|
|
298
264
|
appendFileSync(metricsLogPath(baseDir), JSON.stringify(ev) + '\n');
|
|
299
|
-
return { key: null, count: 0
|
|
265
|
+
return { key: null, count: 0 };
|
|
300
266
|
}
|
|
301
267
|
// ponytail: crash между append строки и перезаписью сайдкара даёт недосчёт до
|
|
302
268
|
// следующего rebuild-scan (сайдкар остаётся валидным JSON) — приемлемо для
|
|
@@ -306,58 +272,13 @@ export function appendSignal(baseDir, ev) {
|
|
|
306
272
|
appendFileSync(metricsLogPath(baseDir), JSON.stringify(ev) + '\n');
|
|
307
273
|
const count = (counts.get(key) ?? 0) + 1;
|
|
308
274
|
counts.set(key, count);
|
|
309
|
-
const threshold = patternThreshold(baseDir);
|
|
310
|
-
const alreadyFixed = readPatterns(baseDir).some((p) => p.key === key);
|
|
311
|
-
const patternFixed = count >= threshold && !alreadyFixed;
|
|
312
|
-
if (patternFixed) {
|
|
313
|
-
const record = { ts: ev.ts, event: 'pattern', key, count, threshold };
|
|
314
|
-
appendFileSync(patternsLogPath(baseDir), JSON.stringify(record) + '\n');
|
|
315
|
-
patternsMemo.get(baseDir)?.push(record);
|
|
316
|
-
}
|
|
317
275
|
writeSignalCountsAtomic(baseDir, counts);
|
|
318
|
-
return { key, count
|
|
276
|
+
return { key, count };
|
|
319
277
|
});
|
|
320
278
|
}
|
|
321
279
|
function nowIso() {
|
|
322
280
|
return new Date().toISOString();
|
|
323
281
|
}
|
|
324
|
-
/**
|
|
325
|
-
* Writer (а): `wolf run` — метрики сессии (модель из routing, weighted, outcome; M1: duration/tokens/experiment).
|
|
326
|
-
* P1 D3: writer перешёл на v2 — schema_version: 2 всегда, identity-поля опциональны.
|
|
327
|
-
*/
|
|
328
|
-
export function appendRunSignal(baseDir, input) {
|
|
329
|
-
return appendSignal(baseDir, {
|
|
330
|
-
ts: nowIso(),
|
|
331
|
-
event: 'run',
|
|
332
|
-
schema_version: 2,
|
|
333
|
-
session_id: input.session,
|
|
334
|
-
gen_ai: { modelID: input.model, agent: input.agent },
|
|
335
|
-
orchestration: { task: input.title, actor: input.actor },
|
|
336
|
-
weighted: input.weighted,
|
|
337
|
-
outcome: input.outcome,
|
|
338
|
-
...(input.eventId !== undefined ? { event_id: input.eventId } : {}),
|
|
339
|
-
...(input.runId !== undefined ? { run_id: input.runId } : {}),
|
|
340
|
-
...(input.traceId !== undefined ? { trace_id: input.traceId } : {}),
|
|
341
|
-
...(input.attempt !== undefined ? { attempt: input.attempt } : {}),
|
|
342
|
-
...(input.taskId !== undefined ? { task_id: input.taskId } : {}),
|
|
343
|
-
...(input.campaignId !== undefined ? { campaign_id: input.campaignId } : {}),
|
|
344
|
-
...(input.configHash !== undefined ? { config_hash: input.configHash } : {}),
|
|
345
|
-
...(input.promptHash !== undefined ? { prompt_hash: input.promptHash } : {}),
|
|
346
|
-
...(input.tools !== undefined ? { tools: input.tools } : {}),
|
|
347
|
-
...(input.task !== undefined ? { detail: { task: input.task } } : {}),
|
|
348
|
-
...(input.durationMs !== undefined ? { duration_ms: input.durationMs } : {}),
|
|
349
|
-
...(input.tokens !== undefined ? { tokens: input.tokens } : {}),
|
|
350
|
-
...(input.experiment !== undefined
|
|
351
|
-
? {
|
|
352
|
-
experiment: {
|
|
353
|
-
id: input.experiment.id,
|
|
354
|
-
arm: input.experiment.arm,
|
|
355
|
-
...(input.experiment.taskId !== undefined ? { task_id: input.experiment.taskId } : {}),
|
|
356
|
-
},
|
|
357
|
-
}
|
|
358
|
-
: {}),
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
282
|
/** Writer (б): `wolf complain` — сигнал жалобы (hot-signal Стюарда). */
|
|
362
283
|
export function appendComplaintSignal(baseDir, input) {
|
|
363
284
|
return appendSignal(baseDir, {
|
|
@@ -415,7 +336,7 @@ function projectErrorRules(baseDir) {
|
|
|
415
336
|
/**
|
|
416
337
|
* Writer (з): mcp_call — вызов инструмента/команды через MCP или CLI-обёртку
|
|
417
338
|
* (волна 0 0.1). Контекст-событие: signalKey → null, пороги Ф21 не считаются.
|
|
418
|
-
* При input.error — classifyError (проектная
|
|
339
|
+
* При input.error — classifyError (проектная таксономия из config.yaml)
|
|
419
340
|
* → detail.error_class_id + detail.error.{message ≤200, code}. Конфиг читается
|
|
420
341
|
* только в error-ветке (P104: sync-yaml-parse убран с горячего пути).
|
|
421
342
|
*/
|
|
@@ -443,30 +364,6 @@ export function appendMcpCallSignal(baseDir, input) {
|
|
|
443
364
|
},
|
|
444
365
|
});
|
|
445
366
|
}
|
|
446
|
-
/**
|
|
447
|
-
* Writer (г): ошибка тула — через классификатор D1.2 (проектная таксономия из
|
|
448
|
-
* config.yaml матчится раньше дефолтной таблицы).
|
|
449
|
-
*/
|
|
450
|
-
export function recordToolError(baseDir, input) {
|
|
451
|
-
const error_class_id = classifyError({ message: input.message, code: input.code }, projectErrorRules(baseDir));
|
|
452
|
-
const result = appendSignal(baseDir, {
|
|
453
|
-
ts: nowIso(),
|
|
454
|
-
event: 'tool_error',
|
|
455
|
-
session_id: input.session_id ?? null,
|
|
456
|
-
gen_ai: { modelID: null, agent: input.agent ?? null },
|
|
457
|
-
orchestration: { task: input.task ?? null, actor: input.actor ?? 'user:cli' },
|
|
458
|
-
outcome: 'error',
|
|
459
|
-
tool_name: input.tool_name,
|
|
460
|
-
error_class_id,
|
|
461
|
-
detail: { message: input.message, ...(input.code ? { code: input.code } : {}) },
|
|
462
|
-
});
|
|
463
|
-
return {
|
|
464
|
-
error_class_id,
|
|
465
|
-
key: result.key ?? `${input.tool_name}:${error_class_id}`,
|
|
466
|
-
count: result.count,
|
|
467
|
-
patternFixed: result.patternFixed,
|
|
468
|
-
};
|
|
469
|
-
}
|
|
470
367
|
/**
|
|
471
368
|
* Writer (д): task_evaluated (P0 D2) — вердикт по задаче от скорера. Контекст-событие:
|
|
472
369
|
* signalKey → null (как run), пороги Ф21 не считаются. Дефолт scorer='human'
|
|
@@ -492,20 +389,12 @@ export function appendTaskEvaluatedSignal(baseDir, input) {
|
|
|
492
389
|
},
|
|
493
390
|
});
|
|
494
391
|
}
|
|
495
|
-
// --- P2 D1: memory lifecycle
|
|
392
|
+
// --- P2 D1: memory lifecycle события ---
|
|
496
393
|
/** Detail memory_stage: стадия жизненного цикла памяти + затронутые объекты. */
|
|
497
394
|
export const MemoryStageDetailSchema = z.object({
|
|
498
395
|
stage: z.enum(['retrieved', 'injected', 'cited', 'applied']),
|
|
499
396
|
memory_ids: z.array(z.string()).min(1),
|
|
500
397
|
});
|
|
501
|
-
/** Detail coord_event: факт координации между агентами (handoff/review/...). */
|
|
502
|
-
export const CoordEventDetailSchema = z.object({
|
|
503
|
-
kind: z.enum(['handoff', 'review', 'acceptance', 'blocker', 'escalation']),
|
|
504
|
-
actor_from: z.string(),
|
|
505
|
-
actor_to: z.string().optional(),
|
|
506
|
-
refs: z.array(z.string()),
|
|
507
|
-
note: z.string().optional(),
|
|
508
|
-
});
|
|
509
398
|
/**
|
|
510
399
|
* Writer (е): memory_stage (P2 D1) — стадия жизненного цикла памяти. Контекст-событие:
|
|
511
400
|
* signalKey → null (как run/task_evaluated), пороги Ф21 не считаются. Detail
|
|
@@ -523,26 +412,102 @@ export function appendMemoryStageSignal(baseDir, input) {
|
|
|
523
412
|
detail,
|
|
524
413
|
});
|
|
525
414
|
}
|
|
415
|
+
// --- run-entries: аналитика исторических run-сигналов ---
|
|
526
416
|
/**
|
|
527
|
-
*
|
|
528
|
-
*
|
|
417
|
+
* P1 D4: канонический источник run-метрик — сигнальный лог; исторический
|
|
418
|
+
* .wolf/run-log.jsonl (deprecated) мержится на переходный период.
|
|
419
|
+
* Правило мержа: простая конкатенация [сигнальные run-entries, legacy run-log entries]
|
|
420
|
+
* без dedup: в переходном окне каждый run существует в обоих источниках, дублирование
|
|
421
|
+
* симметрично → медианы инвариантны; счётчики (toolRuns/totalRuns) могут завышаться
|
|
422
|
+
* до выхода из переходного периода (задокументировано в RISKS отчёта P1).
|
|
529
423
|
*/
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
424
|
+
/** run-сигналы → канонические run-entries (tools из v2-поля tools). */
|
|
425
|
+
export function runEntriesFromSignals(signals) {
|
|
426
|
+
return signals.flatMap((s) => {
|
|
427
|
+
if (s.event !== 'run')
|
|
428
|
+
return [];
|
|
429
|
+
return [
|
|
430
|
+
{
|
|
431
|
+
ts: s.ts,
|
|
432
|
+
model: s.gen_ai.modelID ?? undefined,
|
|
433
|
+
agent: s.gen_ai.agent ?? undefined,
|
|
434
|
+
title: s.orchestration.task ?? undefined,
|
|
435
|
+
session: s.session_id ?? undefined,
|
|
436
|
+
weighted: s.weighted,
|
|
437
|
+
tools: s.tools,
|
|
438
|
+
duration_ms: s.duration_ms,
|
|
439
|
+
tokens: s.tokens,
|
|
440
|
+
},
|
|
441
|
+
];
|
|
546
442
|
});
|
|
547
443
|
}
|
|
444
|
+
/** Переходный мерж: сигнальный источник + исторический run-log (если файл существует). */
|
|
445
|
+
export function mergeRunEntries(signals, runLogText) {
|
|
446
|
+
return [...runEntriesFromSignals(signals), ...parseRunLog(runLogText ?? '')];
|
|
447
|
+
}
|
|
448
|
+
// --- silent-rules: аналитика доставки ---
|
|
449
|
+
/** Окно молчания правила для rule_utilization-дрейфа [ВА] (§16). */
|
|
450
|
+
export const SILENT_RULE_WINDOW_SESSIONS = 30;
|
|
451
|
+
/** Минимум delivery-событий в логе, чтобы судить об утилизации правил [ВА] (§16). */
|
|
452
|
+
export const SILENT_RULE_MIN_DELIVERIES = 20;
|
|
453
|
+
/**
|
|
454
|
+
* Пробег = упорядоченные уникальные session_id из run-событий
|
|
455
|
+
* (порядок первого появления в логе = хронология).
|
|
456
|
+
*/
|
|
457
|
+
export function countSessions(signals) {
|
|
458
|
+
const seen = new Set();
|
|
459
|
+
const out = [];
|
|
460
|
+
for (const ev of signals) {
|
|
461
|
+
if (ev.event !== 'run' || ev.session_id === null)
|
|
462
|
+
continue;
|
|
463
|
+
if (!seen.has(ev.session_id)) {
|
|
464
|
+
seen.add(ev.session_id);
|
|
465
|
+
out.push(ev.session_id);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
return out;
|
|
469
|
+
}
|
|
470
|
+
/** ts первого run-события каждой сессии (точка отсчёта «сессия началась»). */
|
|
471
|
+
function sessionFirstRunTs(signals) {
|
|
472
|
+
const first = new Map();
|
|
473
|
+
for (const ev of signals) {
|
|
474
|
+
if (ev.event !== 'run' || ev.session_id === null)
|
|
475
|
+
continue;
|
|
476
|
+
if (!first.has(ev.session_id))
|
|
477
|
+
first.set(ev.session_id, ev.ts);
|
|
478
|
+
}
|
|
479
|
+
return first;
|
|
480
|
+
}
|
|
481
|
+
/** Молчащее правило: доставки были, но нет ни одной за последние 30 сессий
|
|
482
|
+
* (при ≥20 delivery-событий в логе). ponytail: [ВА]-порог rule_utilization
|
|
483
|
+
* <0.5 от baseline упрощён продукт-минимумом до «ноль доставок в окне» —
|
|
484
|
+
* честный апгрейд: baseline-утилизация по delivery-stats (S20-09).
|
|
485
|
+
* Экспортирована для effectiveness-панели (E1.2). */
|
|
486
|
+
export function silentRuleIds(signals) {
|
|
487
|
+
const deliveries = signals.filter((s) => s.event === 'delivery');
|
|
488
|
+
if (deliveries.length < SILENT_RULE_MIN_DELIVERIES)
|
|
489
|
+
return { ids: new Set(), count: 0 };
|
|
490
|
+
const sessions = countSessions(signals);
|
|
491
|
+
if (sessions.length <= SILENT_RULE_WINDOW_SESSIONS)
|
|
492
|
+
return { ids: new Set(), count: 0 };
|
|
493
|
+
// граница окна: первый run сессии, открывающей последние 30
|
|
494
|
+
const firstRun = sessionFirstRunTs(signals);
|
|
495
|
+
const boundarySession = sessions[sessions.length - SILENT_RULE_WINDOW_SESSIONS];
|
|
496
|
+
const boundaryTs = firstRun.get(boundarySession);
|
|
497
|
+
const lastByObject = new Map();
|
|
498
|
+
for (const ev of deliveries) {
|
|
499
|
+
const name = ev.detail?.name;
|
|
500
|
+
if (typeof name !== 'string')
|
|
501
|
+
continue;
|
|
502
|
+
const cur = lastByObject.get(name);
|
|
503
|
+
if (cur === undefined || ev.ts > cur)
|
|
504
|
+
lastByObject.set(name, ev.ts);
|
|
505
|
+
}
|
|
506
|
+
const ids = new Set();
|
|
507
|
+
for (const [name, ts] of lastByObject) {
|
|
508
|
+
if (ts < boundaryTs)
|
|
509
|
+
ids.add(name);
|
|
510
|
+
}
|
|
511
|
+
return { ids, count: ids.size };
|
|
512
|
+
}
|
|
548
513
|
//# sourceMappingURL=session-metrics-log.js.map
|