mister-wolf 2.12.0 → 2.13.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 +25 -0
- package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
- package/dist/adapters/cli/cli-entry.js +141 -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 +285 -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-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 +3 -0
- package/dist/adapters/cli/commands/memory-call.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 +34 -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-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/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 +128 -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 +111 -54
- 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 +9 -0
- package/dist/adapters/fs/markdown-memory-store.d.ts.map +1 -1
- package/dist/adapters/fs/markdown-memory-store.js +103 -21
- 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 +0 -2
- package/dist/adapters/fs/projects-registry.d.ts.map +1 -1
- package/dist/adapters/fs/projects-registry.js +0 -16
- package/dist/adapters/fs/projects-registry.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 +46 -185
- 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 +34 -4
- package/dist/app/use-cases/add-memory-object.js.map +1 -1
- 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 +96 -1
- package/dist/app/use-cases/build-analytics.d.ts.map +1 -1
- package/dist/app/use-cases/build-analytics.js +242 -6
- package/dist/app/use-cases/build-analytics.js.map +1 -1
- 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/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/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.map +1 -1
- package/dist/app/use-cases/generate-recap.js +23 -7
- package/dist/app/use-cases/generate-recap.js.map +1 -1
- package/dist/app/use-cases/get-call-injections.d.ts +2 -0
- package/dist/app/use-cases/get-call-injections.d.ts.map +1 -1
- package/dist/app/use-cases/get-call-injections.js +20 -7
- 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/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/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 +67 -318
- package/dist/domain/memory-types.d.ts.map +1 -1
- package/dist/domain/memory-types.js +87 -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 +1 -0
- package/dist/domain/schemas/memory-event-schema.d.ts.map +1 -1
- package/dist/domain/schemas/memory-event-schema.js +1 -0
- package/dist/domain/schemas/memory-event-schema.js.map +1 -1
- package/dist/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 +4 -2
- package/dist/domain/schemas/relation-schema.d.ts.map +1 -1
- package/dist/domain/schemas/relation-schema.js +4 -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 +7 -0
- 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/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,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ф26: decay знаний по ПРОБЕГУ (единица — сессии, не календарь; спека §6, §16).
|
|
3
|
-
* Всё детерминировано по сигнальному логу, без LLM и советов — только факты.
|
|
4
|
-
*
|
|
5
|
-
* Модель: delivery-событие (detail.name = id объекта) = срабатывание —
|
|
6
|
-
* продлевает жизнь (штамп last_triggered_at). Объект, не сработавший TTL
|
|
7
|
-
* сессий, получает review_state 'review_required' — это НЕ lifecycle-переход:
|
|
8
|
-
* статус остаётся active, объект попадает в очередь пересмотра Стюарда
|
|
9
|
-
* (дайджест §2.5). Реактивация: новый delivery после попадания в очередь.
|
|
10
|
-
*/
|
|
11
|
-
import { type SignalEvent } from '../../adapters/fs/session-metrics-log.js';
|
|
12
|
-
import type { MemoryStore } from '../../ports/memory-store.port.js';
|
|
13
|
-
import type { Clock } from '../../ports/clock.port.js';
|
|
14
|
-
import type { MemoryObject } from '../../domain/schemas/memory-object-schema.js';
|
|
15
|
-
/** TTL [ВА]-дефолты (§16): сессий без срабатывания; core ∞ — не в карте. */
|
|
16
|
-
export declare const DECAY_TTL_DEFAULT: Record<string, number>;
|
|
17
|
-
export declare const DECAY_TYPES: string[];
|
|
18
|
-
/** Окно молчания правила для rule_utilization-дрейфа [ВА] (§16). */
|
|
19
|
-
export declare const SILENT_RULE_WINDOW_SESSIONS = 30;
|
|
20
|
-
/** Минимум delivery-событий в логе, чтобы судить об утилизации правил [ВА] (§16). */
|
|
21
|
-
export declare const SILENT_RULE_MIN_DELIVERIES = 20;
|
|
22
|
-
/**
|
|
23
|
-
* Пробег = упорядоченные уникальные session_id из run-событий
|
|
24
|
-
* (порядок первого появления в логе = хронология).
|
|
25
|
-
*/
|
|
26
|
-
export declare function countSessions(signals: SignalEvent[]): string[];
|
|
27
|
-
/** ts последнего delivery-события с detail.name === objectId (срабатывание); null — доставок нет. */
|
|
28
|
-
export declare function lastDeliveryTs(objectId: string, signals: SignalEvent[]): string | null;
|
|
29
|
-
/**
|
|
30
|
-
* Пробег объекта: число сессий, чей ПЕРВЫЙ run-эvent имеет ts позже
|
|
31
|
-
* (последней доставки ?? created_at). Нет доставок и сессий после
|
|
32
|
-
* created_at → 0.
|
|
33
|
-
*/
|
|
34
|
-
export declare function sessionsSinceTrigger(object: Pick<MemoryObject, 'id' | 'created_at'>, signals: SignalEvent[]): number;
|
|
35
|
-
/** Эффективный TTL: override из config learning.decay_ttl[type] ?? дефолт (§16); ∞ → Infinity. */
|
|
36
|
-
export declare function effectiveTtl(type: string, overrides?: Record<string, number>): number;
|
|
37
|
-
/** Молчащее правило: доставки были, но нет ни одной за последние 30 сессий
|
|
38
|
-
* (при ≥20 delivery-событий в логе). ponytail: [ВА]-порог rule_utilization
|
|
39
|
-
* <0.5 от baseline упрощён продукт-минимумом до «ноль доставок в окне» —
|
|
40
|
-
* честный апгрейд: baseline-утилизация по delivery-stats (S20-09).
|
|
41
|
-
* Экспортирована для effectiveness-панели (E1.2). */
|
|
42
|
-
export declare function silentRuleIds(signals: SignalEvent[]): {
|
|
43
|
-
ids: Set<string>;
|
|
44
|
-
count: number;
|
|
45
|
-
};
|
|
46
|
-
export interface DecayRunResult {
|
|
47
|
-
/** Переведены в review_required по TTL в этом прогоне. */
|
|
48
|
-
marked: number;
|
|
49
|
-
/** Реактивировано (review_required → accepted после новой доставки) в этом прогоне. */
|
|
50
|
-
reactivations: number;
|
|
51
|
-
/** Правила, переведённые в review_required по rule_utilization-дрейфу. */
|
|
52
|
-
silentRulesMarked: number;
|
|
53
|
-
dryRun: boolean;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Decay-прогон (фоновая часть `wolf learn digest`/`status`, без демона):
|
|
57
|
-
* для каждого active-объекта decay-типов — пробег с последнего срабатывания;
|
|
58
|
-
* при ≥ TTL → review_required (статус остаётся active, спека §6).
|
|
59
|
-
* last_triggered_at — derived-кэш из лога доставок.
|
|
60
|
-
*/
|
|
61
|
-
export declare function runDecayPass(deps: {
|
|
62
|
-
store: MemoryStore;
|
|
63
|
-
clock: Clock;
|
|
64
|
-
}, baseDir: string, opts?: {
|
|
65
|
-
dryRun?: boolean;
|
|
66
|
-
}): Promise<DecayRunResult>;
|
|
67
|
-
export interface DecayStatus {
|
|
68
|
-
/** Очередь пересмотра Стюарда: active-объекты в review_required. */
|
|
69
|
-
reviewQueue: Array<{
|
|
70
|
-
id: string;
|
|
71
|
-
type: string;
|
|
72
|
-
sessions: number;
|
|
73
|
-
reason: string;
|
|
74
|
-
}>;
|
|
75
|
-
indicators: {
|
|
76
|
-
/** Доля review_required среди active-объектов decay-типов. */
|
|
77
|
-
decayShare: number;
|
|
78
|
-
/** Объекты в очереди с новой доставкой — следующий прогон реактивирует. */
|
|
79
|
-
reactivations: number;
|
|
80
|
-
/** error_class_id из tool_error-событий вне проектной и дефолтной таксономий. */
|
|
81
|
-
newErrorClasses: string[];
|
|
82
|
-
/** Молчащие правила (ноль доставок за окно 30 сессий при ≥20 delivery). */
|
|
83
|
-
silentRules: number;
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/** Drift-индикаторы и очередь пересмотра (только факты, без LLM; §6 + Ф26). */
|
|
87
|
-
export declare function decayStatus(deps: {
|
|
88
|
-
store: MemoryStore;
|
|
89
|
-
clock: Clock;
|
|
90
|
-
}, baseDir: string): Promise<DecayStatus>;
|
|
91
|
-
//# sourceMappingURL=learn-decay.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"learn-decay.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/learn-decay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAGzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEjF,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMpD,CAAC;AAEF,eAAO,MAAM,WAAW,UAAiC,CAAC;AAE1D,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,qGAAqG;AACrG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,IAAI,CAQtF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAOpH;AAED,kGAAkG;AAClG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAGrF;AAUD;;;;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;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAC1C,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,OAAO,CAAC,cAAc,CAAC,CA8EzB;AAED,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,UAAU,EAAE;QACV,8DAA8D;QAC9D,UAAU,EAAE,MAAM,CAAC;QACnB,2EAA2E;QAC3E,aAAa,EAAE,MAAM,CAAC;QACtB,iFAAiF;QACjF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,2EAA2E;QAC3E,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6DnH"}
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ф26: decay знаний по ПРОБЕГУ (единица — сессии, не календарь; спека §6, §16).
|
|
3
|
-
* Всё детерминировано по сигнальному логу, без LLM и советов — только факты.
|
|
4
|
-
*
|
|
5
|
-
* Модель: delivery-событие (detail.name = id объекта) = срабатывание —
|
|
6
|
-
* продлевает жизнь (штамп last_triggered_at). Объект, не сработавший TTL
|
|
7
|
-
* сессий, получает review_state 'review_required' — это НЕ lifecycle-переход:
|
|
8
|
-
* статус остаётся active, объект попадает в очередь пересмотра Стюарда
|
|
9
|
-
* (дайджест §2.5). Реактивация: новый delivery после попадания в очередь.
|
|
10
|
-
*/
|
|
11
|
-
import { readSignals } from '../../adapters/fs/session-metrics-log.js';
|
|
12
|
-
import { loadWolfConfigSync } from '../../adapters/fs/config-file.js';
|
|
13
|
-
import { DEFAULT_ERROR_CLASS_RULES, UNCATEGORIZED_ERROR_CLASS } from '../../domain/error-class.js';
|
|
14
|
-
/** TTL [ВА]-дефолты (§16): сессий без срабатывания; core ∞ — не в карте. */
|
|
15
|
-
export const DECAY_TTL_DEFAULT = {
|
|
16
|
-
'session-summary': 30,
|
|
17
|
-
lesson: 90,
|
|
18
|
-
rule: 90,
|
|
19
|
-
playbook: 90,
|
|
20
|
-
decision: 180,
|
|
21
|
-
};
|
|
22
|
-
export const DECAY_TYPES = Object.keys(DECAY_TTL_DEFAULT);
|
|
23
|
-
/** Окно молчания правила для rule_utilization-дрейфа [ВА] (§16). */
|
|
24
|
-
export const SILENT_RULE_WINDOW_SESSIONS = 30;
|
|
25
|
-
/** Минимум delivery-событий в логе, чтобы судить об утилизации правил [ВА] (§16). */
|
|
26
|
-
export const SILENT_RULE_MIN_DELIVERIES = 20;
|
|
27
|
-
/**
|
|
28
|
-
* Пробег = упорядоченные уникальные session_id из run-событий
|
|
29
|
-
* (порядок первого появления в логе = хронология).
|
|
30
|
-
*/
|
|
31
|
-
export function countSessions(signals) {
|
|
32
|
-
const seen = new Set();
|
|
33
|
-
const out = [];
|
|
34
|
-
for (const ev of signals) {
|
|
35
|
-
if (ev.event !== 'run' || ev.session_id === null)
|
|
36
|
-
continue;
|
|
37
|
-
if (!seen.has(ev.session_id)) {
|
|
38
|
-
seen.add(ev.session_id);
|
|
39
|
-
out.push(ev.session_id);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return out;
|
|
43
|
-
}
|
|
44
|
-
/** ts первого run-события каждой сессии (точка отсчёта «сессия началась»). */
|
|
45
|
-
function sessionFirstRunTs(signals) {
|
|
46
|
-
const first = new Map();
|
|
47
|
-
for (const ev of signals) {
|
|
48
|
-
if (ev.event !== 'run' || ev.session_id === null)
|
|
49
|
-
continue;
|
|
50
|
-
if (!first.has(ev.session_id))
|
|
51
|
-
first.set(ev.session_id, ev.ts);
|
|
52
|
-
}
|
|
53
|
-
return first;
|
|
54
|
-
}
|
|
55
|
-
/** ts последнего delivery-события с detail.name === objectId (срабатывание); null — доставок нет. */
|
|
56
|
-
export function lastDeliveryTs(objectId, signals) {
|
|
57
|
-
let last = null;
|
|
58
|
-
for (const ev of signals) {
|
|
59
|
-
if (ev.event === 'delivery' && ev.detail?.name === objectId) {
|
|
60
|
-
if (last === null || ev.ts > last)
|
|
61
|
-
last = ev.ts;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return last;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Пробег объекта: число сессий, чей ПЕРВЫЙ run-эvent имеет ts позже
|
|
68
|
-
* (последней доставки ?? created_at). Нет доставок и сессий после
|
|
69
|
-
* created_at → 0.
|
|
70
|
-
*/
|
|
71
|
-
export function sessionsSinceTrigger(object, signals) {
|
|
72
|
-
const since = lastDeliveryTs(object.id, signals) ?? object.created_at;
|
|
73
|
-
let n = 0;
|
|
74
|
-
for (const ts of sessionFirstRunTs(signals).values()) {
|
|
75
|
-
if (ts > since)
|
|
76
|
-
n += 1;
|
|
77
|
-
}
|
|
78
|
-
return n;
|
|
79
|
-
}
|
|
80
|
-
/** Эффективный TTL: override из config learning.decay_ttl[type] ?? дефолт (§16); ∞ → Infinity. */
|
|
81
|
-
export function effectiveTtl(type, overrides) {
|
|
82
|
-
if (type in DECAY_TTL_DEFAULT === false)
|
|
83
|
-
return Infinity;
|
|
84
|
-
return overrides?.[type] ?? DECAY_TTL_DEFAULT[type];
|
|
85
|
-
}
|
|
86
|
-
function decayTtlOverrides(baseDir) {
|
|
87
|
-
try {
|
|
88
|
-
return loadWolfConfigSync(baseDir)?.learning?.decayTtl;
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return undefined; // битый конфиг — честно дефолты
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
/** Молчащее правило: доставки были, но нет ни одной за последние 30 сессий
|
|
95
|
-
* (при ≥20 delivery-событий в логе). ponytail: [ВА]-порог rule_utilization
|
|
96
|
-
* <0.5 от baseline упрощён продукт-минимумом до «ноль доставок в окне» —
|
|
97
|
-
* честный апгрейд: baseline-утилизация по delivery-stats (S20-09).
|
|
98
|
-
* Экспортирована для effectiveness-панели (E1.2). */
|
|
99
|
-
export function silentRuleIds(signals) {
|
|
100
|
-
const deliveries = signals.filter((s) => s.event === 'delivery');
|
|
101
|
-
if (deliveries.length < SILENT_RULE_MIN_DELIVERIES)
|
|
102
|
-
return { ids: new Set(), count: 0 };
|
|
103
|
-
const sessions = countSessions(signals);
|
|
104
|
-
if (sessions.length <= SILENT_RULE_WINDOW_SESSIONS)
|
|
105
|
-
return { ids: new Set(), count: 0 };
|
|
106
|
-
// граница окна: первый run сессии, открывающей последние 30
|
|
107
|
-
const firstRun = sessionFirstRunTs(signals);
|
|
108
|
-
const boundarySession = sessions[sessions.length - SILENT_RULE_WINDOW_SESSIONS];
|
|
109
|
-
const boundaryTs = firstRun.get(boundarySession);
|
|
110
|
-
const lastByObject = new Map();
|
|
111
|
-
for (const ev of deliveries) {
|
|
112
|
-
const name = ev.detail?.name;
|
|
113
|
-
if (typeof name !== 'string')
|
|
114
|
-
continue;
|
|
115
|
-
const cur = lastByObject.get(name);
|
|
116
|
-
if (cur === undefined || ev.ts > cur)
|
|
117
|
-
lastByObject.set(name, ev.ts);
|
|
118
|
-
}
|
|
119
|
-
const ids = new Set();
|
|
120
|
-
for (const [name, ts] of lastByObject) {
|
|
121
|
-
if (ts < boundaryTs)
|
|
122
|
-
ids.add(name);
|
|
123
|
-
}
|
|
124
|
-
return { ids, count: ids.size };
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Decay-прогон (фоновая часть `wolf learn digest`/`status`, без демона):
|
|
128
|
-
* для каждого active-объекта decay-типов — пробег с последнего срабатывания;
|
|
129
|
-
* при ≥ TTL → review_required (статус остаётся active, спека §6).
|
|
130
|
-
* last_triggered_at — derived-кэш из лога доставок.
|
|
131
|
-
*/
|
|
132
|
-
export async function runDecayPass(deps, baseDir, opts) {
|
|
133
|
-
const signals = readSignals(baseDir);
|
|
134
|
-
const overrides = decayTtlOverrides(baseDir);
|
|
135
|
-
const dryRun = opts?.dryRun === true;
|
|
136
|
-
let marked = 0;
|
|
137
|
-
let reactivations = 0;
|
|
138
|
-
const touched = new Set();
|
|
139
|
-
for (const type of DECAY_TYPES) {
|
|
140
|
-
const objects = await deps.store.list({ type, status: 'active' });
|
|
141
|
-
for (const obj of objects) {
|
|
142
|
-
const rec = obj;
|
|
143
|
-
const lastTrig = lastDeliveryTs(obj.id, signals);
|
|
144
|
-
const n = sessionsSinceTrigger(obj, signals);
|
|
145
|
-
const cachedLast = typeof rec.last_triggered_at === 'string' ? rec.last_triggered_at : undefined;
|
|
146
|
-
if (obj.review_state === 'review_required') {
|
|
147
|
-
// Реактивация: после попадания в очередь была новая доставка
|
|
148
|
-
const hasNewDelivery = lastTrig !== null && (cachedLast === undefined || lastTrig > cachedLast);
|
|
149
|
-
if (hasNewDelivery) {
|
|
150
|
-
if (!dryRun) {
|
|
151
|
-
await deps.store.update(obj.id, {
|
|
152
|
-
review_state: 'accepted',
|
|
153
|
-
sessions_since_last_trigger: n,
|
|
154
|
-
last_triggered_at: lastTrig,
|
|
155
|
-
// удаление: js-yaml пропускает undefined-ключи при dump
|
|
156
|
-
decay_reason: undefined,
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
reactivations += 1;
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
const patch = {};
|
|
163
|
-
if (rec.sessions_since_last_trigger !== n)
|
|
164
|
-
patch.sessions_since_last_trigger = n;
|
|
165
|
-
if (lastTrig !== null && lastTrig !== cachedLast)
|
|
166
|
-
patch.last_triggered_at = lastTrig;
|
|
167
|
-
if (!dryRun && Object.keys(patch).length > 0) {
|
|
168
|
-
await deps.store.update(obj.id, patch);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
touched.add(obj.id);
|
|
172
|
-
continue;
|
|
173
|
-
}
|
|
174
|
-
if (n >= effectiveTtl(type, overrides)) {
|
|
175
|
-
if (!dryRun) {
|
|
176
|
-
await deps.store.update(obj.id, {
|
|
177
|
-
review_state: 'review_required',
|
|
178
|
-
sessions_since_last_trigger: n,
|
|
179
|
-
decay_reason: 'ttl',
|
|
180
|
-
...(lastTrig !== null ? { last_triggered_at: lastTrig } : {}),
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
marked += 1;
|
|
184
|
-
touched.add(obj.id);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
// Досрочный review: молчащие правила (rule_utilization-дрейф, §6/§16)
|
|
189
|
-
let silentRulesMarked = 0;
|
|
190
|
-
const { ids: silent } = silentRuleIds(signals);
|
|
191
|
-
if (silent.size > 0) {
|
|
192
|
-
const rules = await deps.store.list({ type: 'rule', status: 'active' });
|
|
193
|
-
for (const rule of rules) {
|
|
194
|
-
if (!silent.has(rule.id) || touched.has(rule.id))
|
|
195
|
-
continue;
|
|
196
|
-
const lastTrig = lastDeliveryTs(rule.id, signals);
|
|
197
|
-
if (!dryRun) {
|
|
198
|
-
await deps.store.update(rule.id, {
|
|
199
|
-
review_state: 'review_required',
|
|
200
|
-
sessions_since_last_trigger: sessionsSinceTrigger(rule, signals),
|
|
201
|
-
...(lastTrig !== null ? { last_triggered_at: lastTrig } : {}),
|
|
202
|
-
decay_reason: 'rule_utilization',
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
silentRulesMarked += 1;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return { marked, reactivations, silentRulesMarked, dryRun };
|
|
209
|
-
}
|
|
210
|
-
/** Drift-индикаторы и очередь пересмотра (только факты, без LLM; §6 + Ф26). */
|
|
211
|
-
export async function decayStatus(deps, baseDir) {
|
|
212
|
-
const signals = readSignals(baseDir);
|
|
213
|
-
const lastTrigById = new Map();
|
|
214
|
-
for (const ev of signals) {
|
|
215
|
-
if (ev.event === 'delivery' && typeof ev.detail?.name === 'string') {
|
|
216
|
-
const cur = lastTrigById.get(ev.detail.name);
|
|
217
|
-
if (cur === undefined || ev.ts > cur)
|
|
218
|
-
lastTrigById.set(ev.detail.name, ev.ts);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
const reviewQueue = [];
|
|
222
|
-
let activeTotal = 0;
|
|
223
|
-
let reactivations = 0;
|
|
224
|
-
for (const type of DECAY_TYPES) {
|
|
225
|
-
const objects = await deps.store.list({ type, status: 'active' });
|
|
226
|
-
activeTotal += objects.length;
|
|
227
|
-
for (const obj of objects) {
|
|
228
|
-
const rec = obj;
|
|
229
|
-
const cachedLast = typeof rec.last_triggered_at === 'string' ? rec.last_triggered_at : undefined;
|
|
230
|
-
const lastTrig = lastTrigById.get(obj.id);
|
|
231
|
-
// pending-реактивация: та же детекция, что в runDecayPass (новая доставка после кэша)
|
|
232
|
-
if (obj.review_state === 'review_required' &&
|
|
233
|
-
lastTrig !== undefined &&
|
|
234
|
-
(cachedLast === undefined || lastTrig > cachedLast)) {
|
|
235
|
-
reactivations += 1;
|
|
236
|
-
}
|
|
237
|
-
if (obj.review_state !== 'review_required')
|
|
238
|
-
continue;
|
|
239
|
-
reviewQueue.push({
|
|
240
|
-
id: obj.id,
|
|
241
|
-
type,
|
|
242
|
-
sessions: sessionsSinceTrigger(obj, signals),
|
|
243
|
-
reason: typeof rec.decay_reason === 'string' ? rec.decay_reason : 'unknown',
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
const knownClasses = new Set(DEFAULT_ERROR_CLASS_RULES.map((r) => r.id));
|
|
248
|
-
try {
|
|
249
|
-
for (const r of loadWolfConfigSync(baseDir)?.errorClassTaxonomy ?? [])
|
|
250
|
-
knownClasses.add(r.id);
|
|
251
|
-
}
|
|
252
|
-
catch {
|
|
253
|
-
// битый конфиг — дефолтная таблица
|
|
254
|
-
}
|
|
255
|
-
const newErrorClasses = new Set();
|
|
256
|
-
for (const ev of signals) {
|
|
257
|
-
if (ev.event !== 'tool_error')
|
|
258
|
-
continue;
|
|
259
|
-
const cls = ev.error_class_id ?? UNCATEGORIZED_ERROR_CLASS;
|
|
260
|
-
// uncategorized — известный резервный класс (D2-Refiner), не «новый»
|
|
261
|
-
if (cls !== UNCATEGORIZED_ERROR_CLASS && !knownClasses.has(cls))
|
|
262
|
-
newErrorClasses.add(cls);
|
|
263
|
-
}
|
|
264
|
-
return {
|
|
265
|
-
reviewQueue,
|
|
266
|
-
indicators: {
|
|
267
|
-
decayShare: activeTotal > 0 ? reviewQueue.length / activeTotal : 0,
|
|
268
|
-
reactivations,
|
|
269
|
-
newErrorClasses: [...newErrorClasses].sort(),
|
|
270
|
-
silentRules: silentRuleIds(signals).count,
|
|
271
|
-
},
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
//# sourceMappingURL=learn-decay.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"learn-decay.js","sourceRoot":"","sources":["../../../src/app/use-cases/learn-decay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { MemoryStore } from '../../ports/memory-store.port.js';
|
|
2
|
-
import { EventLog } from '../../ports/event-log.port.js';
|
|
3
|
-
import { Clock } from '../../ports/clock.port.js';
|
|
4
|
-
import { IdGenerator } from '../../ports/id-generator.port.js';
|
|
5
|
-
import { SearchIndex } from '../../ports/search-index.port.js';
|
|
6
|
-
import { MemoryLock } from '../../ports/memory-lock.port.js';
|
|
7
|
-
import { MemoryObject } from '../../domain/schemas/memory-object-schema.js';
|
|
8
|
-
import type { MemoryTypeDeclaration } from '../../domain/memory-types.js';
|
|
9
|
-
import { ModelContext } from '../../ports/base-set-renderer.port.js';
|
|
10
|
-
export declare const ROUTING_TAGS: readonly ["wolf-routing", "models"];
|
|
11
|
-
export interface ModelRoutingDeps {
|
|
12
|
-
store: MemoryStore;
|
|
13
|
-
log: EventLog;
|
|
14
|
-
clock: Clock;
|
|
15
|
-
idGen: IdGenerator;
|
|
16
|
-
index?: SearchIndex;
|
|
17
|
-
lock?: MemoryLock;
|
|
18
|
-
declarations?: readonly MemoryTypeDeclaration[];
|
|
19
|
-
}
|
|
20
|
-
export interface UpsertModelRoutingResult {
|
|
21
|
-
action: 'created' | 'unchanged' | 'superseded';
|
|
22
|
-
id: string;
|
|
23
|
-
supersededId?: string;
|
|
24
|
-
}
|
|
25
|
-
/** Guard (как init-отчёт §4.1): активный объект по тегам; один — первый. */
|
|
26
|
-
export declare function findModelRouting(store: MemoryStore): Promise<MemoryObject | null>;
|
|
27
|
-
/** Машинно-читаемые строки `primary: <id>` / `worker: <id>` в body. */
|
|
28
|
-
export declare function parseModelRouting(obj: MemoryObject): ModelContext | null;
|
|
29
|
-
export declare function upsertModelRouting(deps: ModelRoutingDeps, models: ModelContext, createdBy: string): Promise<UpsertModelRoutingResult>;
|
|
30
|
-
//# sourceMappingURL=model-routing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-routing.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/model-routing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAIrE,eAAO,MAAM,YAAY,qCAAsC,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,4EAA4E;AAC5E,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAIvF;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI,CAIxE;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC,CAsBnC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { addMemoryObject } from './add-memory-object.js';
|
|
2
|
-
import { supersedeMemoryObject } from './supersede-memory-object.js';
|
|
3
|
-
export const ROUTING_TAGS = ['wolf-routing', 'models'];
|
|
4
|
-
/** Guard (как init-отчёт §4.1): активный объект по тегам; один — первый. */
|
|
5
|
-
export async function findModelRouting(store) {
|
|
6
|
-
const rules = await store.list({ type: 'rule' });
|
|
7
|
-
const active = rules.filter((o) => o.status === 'active' && ROUTING_TAGS.every((t) => o.tags.includes(t)));
|
|
8
|
-
return active.length > 0 ? active[0] : null;
|
|
9
|
-
}
|
|
10
|
-
/** Машинно-читаемые строки `primary: <id>` / `worker: <id>` в body. */
|
|
11
|
-
export function parseModelRouting(obj) {
|
|
12
|
-
const primary = obj.body.match(/^primary:[ \t]*(\S+)/m)?.[1];
|
|
13
|
-
const worker = obj.body.match(/^worker:[ \t]*(\S+)/m)?.[1];
|
|
14
|
-
return primary && worker ? { primary, worker } : null;
|
|
15
|
-
}
|
|
16
|
-
export async function upsertModelRouting(deps, models, createdBy) {
|
|
17
|
-
const existing = await findModelRouting(deps.store);
|
|
18
|
-
if (existing) {
|
|
19
|
-
const parsed = parseModelRouting(existing);
|
|
20
|
-
if (parsed && parsed.primary === models.primary && parsed.worker === models.worker) {
|
|
21
|
-
return { action: 'unchanged', id: existing.id };
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const { object } = await addMemoryObject(deps, {
|
|
25
|
-
type: 'rule',
|
|
26
|
-
title: 'Routing: agent models',
|
|
27
|
-
body: `Base-set agent models (onboarding v2, §4.5).\nprimary: ${models.primary}\nworker: ${models.worker}\n`,
|
|
28
|
-
createdBy,
|
|
29
|
-
tags: [...ROUTING_TAGS],
|
|
30
|
-
memoryClass: 'working',
|
|
31
|
-
extra: { scope: 'project' },
|
|
32
|
-
});
|
|
33
|
-
if (existing) {
|
|
34
|
-
await supersedeMemoryObject(deps, existing.id, object.id);
|
|
35
|
-
return { action: 'superseded', id: object.id, supersededId: existing.id };
|
|
36
|
-
}
|
|
37
|
-
return { action: 'created', id: object.id };
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=model-routing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../../../src/app/use-cases/model-routing.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAU,CAAC;AAkBhE,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAkB;IACvD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3G,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAsB,EACtB,MAAoB,EACpB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACnF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE;QAC7C,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,uBAAuB;QAC9B,IAAI,EAAE,0DAA0D,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,MAAM,IAAI;QAC5G,SAAS;QACT,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC;QACvB,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC5B,CAAC,CAAC;IACH,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ф21 (D1.3): детерминированная паттерн-детекция по сигнальному логу.
|
|
3
|
-
* Чистые функции без fs (вход — массивы записей); LLM не участвует.
|
|
4
|
-
* Ключ кластера и порог — из session-metrics-log (единый канон Ф20).
|
|
5
|
-
* Спека: docs/superpowers/specs/2026-08-26-self-learning-design.md §2.2, §6.
|
|
6
|
-
*/
|
|
7
|
-
import { type SignalEvent } from '../../adapters/fs/session-metrics-log.js';
|
|
8
|
-
/** Активный паттерн: кластер сигналов, пересёкший порог. */
|
|
9
|
-
export interface PatternSummary {
|
|
10
|
-
key: string;
|
|
11
|
-
count: number;
|
|
12
|
-
first_ts: string;
|
|
13
|
-
last_ts: string;
|
|
14
|
-
/** Evidence-ссылки на исходные сигналы: `session-metrics.jsonl:<строка>` (1-based). */
|
|
15
|
-
evidence: string[];
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Группировка O(n) по signalKey (run-события пропускаются: ключ null).
|
|
19
|
-
* Паттерн = группа с count >= threshold. Сортировка: count убыв., затем key —
|
|
20
|
-
* стабильный вывод без зависимости от порядка входа.
|
|
21
|
-
*/
|
|
22
|
-
export declare function detectPatterns(signals: SignalEvent[], threshold?: number): PatternSummary[];
|
|
23
|
-
/** Здоровье контура: объёмы + Layer 1–2 meta-metrics (§6 observability). */
|
|
24
|
-
export interface SignalLogSummary {
|
|
25
|
-
totalEvents: number;
|
|
26
|
-
byEvent: Record<string, number>;
|
|
27
|
-
/** Последние 5 событий по порядку файла. */
|
|
28
|
-
lastEvents: SignalEvent[];
|
|
29
|
-
layer1: {
|
|
30
|
-
uncategorized_errors: number;
|
|
31
|
-
/** Доля tool_error с классом uncategorized среди всех tool_error; null — ошибок 0. */
|
|
32
|
-
uncategorizedShare: number | null;
|
|
33
|
-
orphanSignals: number;
|
|
34
|
-
/** Доля событий с известной моделью (gen_ai.modelID !== null); null — событий 0. */
|
|
35
|
-
signalCoverage: number | null;
|
|
36
|
-
};
|
|
37
|
-
layer2: {
|
|
38
|
-
/** Средний count по активным паттернам; null — паттернов нет. */
|
|
39
|
-
clusterDensity: number | null;
|
|
40
|
-
emergingPatterns: number;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export declare function summarizeSignalLog(signals: SignalEvent[], threshold?: number): SignalLogSummary;
|
|
44
|
-
//# sourceMappingURL=pattern-detection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-detection.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/pattern-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAwC,KAAK,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAElH,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,GAAE,MAAkC,GAC5C,cAAc,EAAE,CAmBlB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4CAA4C;IAC5C,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,MAAM,EAAE;QACN,oBAAoB,EAAE,MAAM,CAAC;QAC7B,sFAAsF;QACtF,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,aAAa,EAAE,MAAM,CAAC;QACtB,oFAAoF;QACpF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,MAAM,EAAE;QACN,iEAAiE;QACjE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,GAAE,MAAkC,GAC5C,gBAAgB,CAgClB"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ф21 (D1.3): детерминированная паттерн-детекция по сигнальному логу.
|
|
3
|
-
* Чистые функции без fs (вход — массивы записей); LLM не участвует.
|
|
4
|
-
* Ключ кластера и порог — из session-metrics-log (единый канон Ф20).
|
|
5
|
-
* Спека: docs/superpowers/specs/2026-08-26-self-learning-design.md §2.2, §6.
|
|
6
|
-
*/
|
|
7
|
-
import { signalKey, DEFAULT_PATTERN_THRESHOLD } from '../../adapters/fs/session-metrics-log.js';
|
|
8
|
-
/**
|
|
9
|
-
* Группировка O(n) по signalKey (run-события пропускаются: ключ null).
|
|
10
|
-
* Паттерн = группа с count >= threshold. Сортировка: count убыв., затем key —
|
|
11
|
-
* стабильный вывод без зависимости от порядка входа.
|
|
12
|
-
*/
|
|
13
|
-
export function detectPatterns(signals, threshold = DEFAULT_PATTERN_THRESHOLD) {
|
|
14
|
-
const groups = new Map();
|
|
15
|
-
for (let i = 0; i < signals.length; i++) {
|
|
16
|
-
const key = signalKey(signals[i]);
|
|
17
|
-
if (key === null)
|
|
18
|
-
continue;
|
|
19
|
-
const ref = `session-metrics.jsonl:${i + 1}`;
|
|
20
|
-
const g = groups.get(key);
|
|
21
|
-
if (g) {
|
|
22
|
-
g.count += 1;
|
|
23
|
-
g.last_ts = signals[i].ts;
|
|
24
|
-
g.evidence.push(ref);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
groups.set(key, { count: 1, first_ts: signals[i].ts, last_ts: signals[i].ts, evidence: [ref] });
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return [...groups.entries()]
|
|
31
|
-
.filter(([, g]) => g.count >= threshold)
|
|
32
|
-
.map(([key, g]) => ({ key, ...g }))
|
|
33
|
-
.sort((a, b) => b.count - a.count || (a.key < b.key ? -1 : a.key > b.key ? 1 : 0));
|
|
34
|
-
}
|
|
35
|
-
export function summarizeSignalLog(signals, threshold = DEFAULT_PATTERN_THRESHOLD) {
|
|
36
|
-
const byEvent = {};
|
|
37
|
-
let orphans = 0;
|
|
38
|
-
let withModel = 0;
|
|
39
|
-
let toolErrors = 0;
|
|
40
|
-
let uncategorized = 0;
|
|
41
|
-
for (const ev of signals) {
|
|
42
|
-
byEvent[ev.event] = (byEvent[ev.event] ?? 0) + 1;
|
|
43
|
-
if (ev.session_id === null)
|
|
44
|
-
orphans += 1;
|
|
45
|
-
if (ev.gen_ai.modelID !== null)
|
|
46
|
-
withModel += 1;
|
|
47
|
-
if (ev.event === 'tool_error') {
|
|
48
|
-
toolErrors += 1;
|
|
49
|
-
// отсутствующий класс трактуется как uncategorized — так же, как в signalKey
|
|
50
|
-
if ((ev.error_class_id ?? 'uncategorized') === 'uncategorized')
|
|
51
|
-
uncategorized += 1;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const patterns = detectPatterns(signals, threshold);
|
|
55
|
-
return {
|
|
56
|
-
totalEvents: signals.length,
|
|
57
|
-
byEvent,
|
|
58
|
-
lastEvents: signals.slice(-5),
|
|
59
|
-
layer1: {
|
|
60
|
-
uncategorized_errors: uncategorized,
|
|
61
|
-
uncategorizedShare: toolErrors > 0 ? uncategorized / toolErrors : null,
|
|
62
|
-
orphanSignals: orphans,
|
|
63
|
-
signalCoverage: signals.length > 0 ? withModel / signals.length : null,
|
|
64
|
-
},
|
|
65
|
-
layer2: {
|
|
66
|
-
clusterDensity: patterns.length > 0 ? patterns.reduce((s, p) => s + p.count, 0) / patterns.length : null,
|
|
67
|
-
emergingPatterns: patterns.length,
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=pattern-detection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-detection.js","sourceRoot":"","sources":["../../../src/app/use-cases/pattern-detection.ts"],"names":[],"mappings":"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"}
|