crewly 1.20.356 → 1.20.358
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/config/constants.ts +11 -0
- package/dist/backend/backend/src/constants.d.ts +254 -17
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +257 -17
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +70 -4
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +10 -2
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +27 -2
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +34 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +69 -13
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +8 -0
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +26 -2
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/resource-mode.service.d.ts +9 -0
- package/dist/backend/backend/src/services/agent/resource-mode.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/resource-mode.service.js +16 -0
- package/dist/backend/backend/src/services/agent/resource-mode.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +44 -3
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +126 -11
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +2 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +9 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.d.ts +150 -0
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js +319 -0
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js.map +1 -0
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts +9 -7
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js +19 -17
- package/dist/backend/backend/src/services/memory/auto-learning.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +11 -0
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts +104 -0
- package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/startup-briefing.service.js +302 -0
- package/dist/backend/backend/src/services/memory/startup-briefing.service.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.d.ts +33 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.js +69 -4
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.wiring.d.ts +24 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.wiring.js +54 -3
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts +9 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.js +16 -2
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-prefixes.d.ts +30 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-prefixes.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-prefixes.js +48 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-prefixes.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +8 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +29 -8
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +27 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +78 -24
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts +23 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +38 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/slack/agent-coordination.d.ts +119 -0
- package/dist/backend/backend/src/services/slack/agent-coordination.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/agent-coordination.js +174 -0
- package/dist/backend/backend/src/services/slack/agent-coordination.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +7 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +167 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +619 -9
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts +22 -0
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.js +49 -12
- package/dist/backend/backend/src/services/slack/slack-thread-context.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts +7 -0
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js +25 -4
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-chat.d.ts +21 -1
- package/dist/backend/backend/src/services/team-move/team-move-chat.d.ts.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-chat.js +54 -2
- package/dist/backend/backend/src/services/team-move/team-move-chat.js.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-exporter.d.ts +9 -4
- package/dist/backend/backend/src/services/team-move/team-move-exporter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-exporter.js +32 -10
- package/dist/backend/backend/src/services/team-move/team-move-exporter.js.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-importer.d.ts +19 -0
- package/dist/backend/backend/src/services/team-move/team-move-importer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-importer.js +78 -3
- package/dist/backend/backend/src/services/team-move/team-move-importer.js.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-runtime.d.ts.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-runtime.js +8 -0
- package/dist/backend/backend/src/services/team-move/team-move-runtime.js.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move-transcripts.d.ts +106 -0
- package/dist/backend/backend/src/services/team-move/team-move-transcripts.d.ts.map +1 -0
- package/dist/backend/backend/src/services/team-move/team-move-transcripts.js +212 -0
- package/dist/backend/backend/src/services/team-move/team-move-transcripts.js.map +1 -0
- package/dist/backend/backend/src/services/team-move/team-move.types.d.ts +20 -0
- package/dist/backend/backend/src/services/team-move/team-move.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/team-move/team-move.types.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +2 -2
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +11 -4
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.js +3 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js +4 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js +4 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +33 -4
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js +75 -7
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.js +3 -1
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts +116 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js +227 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-entries.d.ts +142 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-entries.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-entries.js +222 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-entries.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.d.ts +93 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.js +142 -0
- package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.d.ts +104 -0
- package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.js +192 -0
- package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts +3 -2
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js +23 -39
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-queue-drain.service.d.ts +105 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue-drain.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue-drain.service.js +195 -0
- package/dist/backend/backend/src/services/wiki/wiki-queue-drain.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.js +3 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts +28 -5
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js +96 -25
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-vault-walk.d.ts +11 -0
- package/dist/backend/backend/src/services/wiki/wiki-vault-walk.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-vault-walk.js +17 -1
- package/dist/backend/backend/src/services/wiki/wiki-vault-walk.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +11 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +11 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +254 -17
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +257 -17
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +10 -2
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +27 -2
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +34 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +69 -13
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/resource-mode.service.d.ts +9 -0
- package/dist/cli/backend/src/services/agent/resource-mode.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/resource-mode.service.js +16 -0
- package/dist/cli/backend/src/services/agent/resource-mode.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +44 -3
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +126 -11
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +2 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +9 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +11 -0
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts +104 -0
- package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/startup-briefing.service.js +302 -0
- package/dist/cli/backend/src/services/memory/startup-briefing.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.d.ts +33 -1
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.js +69 -4
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/agent-coordination.d.ts +119 -0
- package/dist/cli/backend/src/services/slack/agent-coordination.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/agent-coordination.js +174 -0
- package/dist/cli/backend/src/services/slack/agent-coordination.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +167 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +619 -9
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts +22 -0
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.js +49 -12
- package/dist/cli/backend/src/services/slack/slack-thread-context.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts +7 -0
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js +25 -4
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +33 -4
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js +75 -7
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-log-entries.d.ts +142 -0
- package/dist/cli/backend/src/services/wiki/wiki-log-entries.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-log-entries.js +222 -0
- package/dist/cli/backend/src/services/wiki/wiki-log-entries.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-recent.service.d.ts +51 -0
- package/dist/cli/backend/src/services/wiki/wiki-recent.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-recent.service.js +105 -0
- package/dist/cli/backend/src/services/wiki/wiki-recent.service.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-search.service.d.ts +28 -5
- package/dist/cli/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-search.service.js +96 -25
- package/dist/cli/backend/src/services/wiki/wiki-search.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-vault-walk.d.ts +11 -0
- package/dist/cli/backend/src/services/wiki/wiki-vault-walk.d.ts.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-vault-walk.js +17 -1
- package/dist/cli/backend/src/services/wiki/wiki-vault-walk.js.map +1 -1
- package/dist/cli/config/constants.d.ts +11 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +11 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WikiLogCompileService — turns the week's log entries into a digest page.
|
|
3
|
+
*
|
|
4
|
+
* Agents append learnings to `llm-curated/log.md` and nothing ever read
|
|
5
|
+
* them back (#1345): bookkeep waited for ten net-new *pages* and reflect
|
|
6
|
+
* fed a queue nobody drained. This service does the deterministic half of
|
|
7
|
+
* "compile": once a day it takes the non-noise, not-yet-compiled entries
|
|
8
|
+
* of the last `COMPILE_WINDOW_DAYS`, groups them by category and topic,
|
|
9
|
+
* and writes (or appends to) one page per vault and ISO week under
|
|
10
|
+
* `llm-curated/digests/`, through the normal ingest path so the page gets
|
|
11
|
+
* frontmatter, an index line and history. Compiled entries are remembered
|
|
12
|
+
* by body key in `<vault>/.wiki-compile-state.json` so a later run does
|
|
13
|
+
* not compile them again. No LLM; an agent can still rewrite a digest into
|
|
14
|
+
* a proper topic page.
|
|
15
|
+
*
|
|
16
|
+
* @module services/wiki/wiki-log-compile.service
|
|
17
|
+
*/
|
|
18
|
+
import { WikiIngestService } from './wiki-ingest.service.js';
|
|
19
|
+
/** Options for {@link WikiLogCompileService.compile}. */
|
|
20
|
+
export interface WikiLogCompileOptions {
|
|
21
|
+
/** Report only; write nothing (page or state). */
|
|
22
|
+
dryRun?: boolean;
|
|
23
|
+
/** Clock (tests). */
|
|
24
|
+
now?: number;
|
|
25
|
+
/** Window override (tests). */
|
|
26
|
+
windowDays?: number;
|
|
27
|
+
/** Minimum-entries override (tests). */
|
|
28
|
+
minEntries?: number;
|
|
29
|
+
}
|
|
30
|
+
/** Outcome of one vault's compile. */
|
|
31
|
+
export interface WikiLogCompileResult {
|
|
32
|
+
vaultPath: string;
|
|
33
|
+
/** False when the log is missing, too few new entries, or ingest refused the page. */
|
|
34
|
+
compiled: boolean;
|
|
35
|
+
reason?: 'no_log' | 'too_few_entries' | 'ingest_refused';
|
|
36
|
+
/** Uncompiled non-noise entries found in the window. */
|
|
37
|
+
candidates: number;
|
|
38
|
+
/** Entries written into the digest. */
|
|
39
|
+
entriesCompiled: number;
|
|
40
|
+
/** Vault-relative digest page (planned in a dry run). */
|
|
41
|
+
pagePath?: string;
|
|
42
|
+
/** Topic groups written. */
|
|
43
|
+
groups: number;
|
|
44
|
+
dryRun: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* ISO-8601 week label (`YYYY-Www`) of a date.
|
|
48
|
+
*
|
|
49
|
+
* @param ms - Epoch ms
|
|
50
|
+
* @returns Label such as `2026-W42`
|
|
51
|
+
*/
|
|
52
|
+
export declare function isoWeekLabel(ms: number): string;
|
|
53
|
+
/**
|
|
54
|
+
* Compiles vault log entries into weekly digest pages. Stateless singleton
|
|
55
|
+
* apart from the per-vault state file.
|
|
56
|
+
*/
|
|
57
|
+
export declare class WikiLogCompileService {
|
|
58
|
+
private readonly ingest;
|
|
59
|
+
private static instance;
|
|
60
|
+
private readonly logger;
|
|
61
|
+
constructor(ingest?: WikiIngestService);
|
|
62
|
+
static getInstance(): WikiLogCompileService;
|
|
63
|
+
/** Test-only reset. */
|
|
64
|
+
static _resetForTesting(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Compile one vault's uncompiled recent entries into this week's digest.
|
|
67
|
+
*
|
|
68
|
+
* @param vaultPath - Vault root
|
|
69
|
+
* @param opts - Dry run, clock and threshold overrides
|
|
70
|
+
* @returns What was (or would be) written
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const r = await WikiLogCompileService.getInstance().compile(vault);
|
|
75
|
+
* // r.compiled && r.pagePath === 'llm-curated/digests/2026-W42.md'
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
compile(vaultPath: string, opts?: WikiLogCompileOptions): Promise<WikiLogCompileResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Compile every vault in a list; failures are logged per vault.
|
|
81
|
+
*
|
|
82
|
+
* @param vaults - Vault roots
|
|
83
|
+
* @param opts - Passed to {@link compile}
|
|
84
|
+
* @returns One result per vault checked
|
|
85
|
+
*/
|
|
86
|
+
compileAll(vaults: readonly string[], opts?: WikiLogCompileOptions): Promise<WikiLogCompileResult[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Group entries by `<category> / <topic>`, largest groups first, stable
|
|
89
|
+
* within a group (oldest first).
|
|
90
|
+
*
|
|
91
|
+
* @param entries - Candidate entries
|
|
92
|
+
* @returns Groups with a label and members
|
|
93
|
+
*/
|
|
94
|
+
private group;
|
|
95
|
+
/**
|
|
96
|
+
* `k gotchas, m decisions, …` for the page summary.
|
|
97
|
+
*
|
|
98
|
+
* @param entries - Entries
|
|
99
|
+
* @returns Comma-separated counts, most frequent first
|
|
100
|
+
*/
|
|
101
|
+
private categoryCounts;
|
|
102
|
+
/**
|
|
103
|
+
* Markdown body of one compile run: a dated heading, then one `###` per
|
|
104
|
+
* group with one bullet per entry (author, date, body clipped).
|
|
105
|
+
*
|
|
106
|
+
* @param groups - Grouped entries
|
|
107
|
+
* @param all - All entries in the run (for the date range)
|
|
108
|
+
* @param now - Epoch ms of the run
|
|
109
|
+
* @returns Markdown
|
|
110
|
+
*/
|
|
111
|
+
private renderBody;
|
|
112
|
+
private statePath;
|
|
113
|
+
private readState;
|
|
114
|
+
private writeState;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=wiki-log-compile.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-log-compile.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-compile.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAkB7D,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACzD,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAIpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAEZ,MAAM,GAAE,iBAAmD;IAIxF,MAAM,CAAC,WAAW,IAAI,qBAAqB;IAK3C,uBAAuB;IACvB,MAAM,CAAC,gBAAgB,IAAI,IAAI;IAI/B;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6DjG;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAc9G;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAeb;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;YAIH,SAAS;YAQT,UAAU;CAGzB"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WikiLogCompileService — turns the week's log entries into a digest page.
|
|
3
|
+
*
|
|
4
|
+
* Agents append learnings to `llm-curated/log.md` and nothing ever read
|
|
5
|
+
* them back (#1345): bookkeep waited for ten net-new *pages* and reflect
|
|
6
|
+
* fed a queue nobody drained. This service does the deterministic half of
|
|
7
|
+
* "compile": once a day it takes the non-noise, not-yet-compiled entries
|
|
8
|
+
* of the last `COMPILE_WINDOW_DAYS`, groups them by category and topic,
|
|
9
|
+
* and writes (or appends to) one page per vault and ISO week under
|
|
10
|
+
* `llm-curated/digests/`, through the normal ingest path so the page gets
|
|
11
|
+
* frontmatter, an index line and history. Compiled entries are remembered
|
|
12
|
+
* by body key in `<vault>/.wiki-compile-state.json` so a later run does
|
|
13
|
+
* not compile them again. No LLM; an agent can still rewrite a digest into
|
|
14
|
+
* a proper topic page.
|
|
15
|
+
*
|
|
16
|
+
* @module services/wiki/wiki-log-compile.service
|
|
17
|
+
*/
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
import * as fs from 'fs/promises';
|
|
20
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
21
|
+
import { WIKI_LOG_CONSTANTS } from '../../constants.js';
|
|
22
|
+
import { atomicWriteJson, safeReadJson } from '../../utils/file-io.utils.js';
|
|
23
|
+
import { WikiIngestService } from './wiki-ingest.service.js';
|
|
24
|
+
import { logBodyKey, logEntryCategory, logEntryTopic, parseLogEntries, recentContentEntries, } from './wiki-log-entries.js';
|
|
25
|
+
/**
|
|
26
|
+
* ISO-8601 week label (`YYYY-Www`) of a date.
|
|
27
|
+
*
|
|
28
|
+
* @param ms - Epoch ms
|
|
29
|
+
* @returns Label such as `2026-W42`
|
|
30
|
+
*/
|
|
31
|
+
export function isoWeekLabel(ms) {
|
|
32
|
+
const d = new Date(ms);
|
|
33
|
+
const date = new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
|
|
34
|
+
// Thursday of the current week decides the ISO year.
|
|
35
|
+
const day = date.getUTCDay() || 7;
|
|
36
|
+
date.setUTCDate(date.getUTCDate() + 4 - day);
|
|
37
|
+
const yearStart = Date.UTC(date.getUTCFullYear(), 0, 1);
|
|
38
|
+
const week = Math.ceil(((date.getTime() - yearStart) / 86_400_000 + 1) / 7);
|
|
39
|
+
return `${date.getUTCFullYear()}-W${String(week).padStart(2, '0')}`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Compiles vault log entries into weekly digest pages. Stateless singleton
|
|
43
|
+
* apart from the per-vault state file.
|
|
44
|
+
*/
|
|
45
|
+
export class WikiLogCompileService {
|
|
46
|
+
ingest;
|
|
47
|
+
static instance = null;
|
|
48
|
+
logger;
|
|
49
|
+
constructor(ingest = WikiIngestService.getInstance()) {
|
|
50
|
+
this.ingest = ingest;
|
|
51
|
+
this.logger = LoggerService.getInstance().createComponentLogger('WikiLogCompile');
|
|
52
|
+
}
|
|
53
|
+
static getInstance() {
|
|
54
|
+
if (!this.instance)
|
|
55
|
+
this.instance = new WikiLogCompileService();
|
|
56
|
+
return this.instance;
|
|
57
|
+
}
|
|
58
|
+
/** Test-only reset. */
|
|
59
|
+
static _resetForTesting() {
|
|
60
|
+
this.instance = null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Compile one vault's uncompiled recent entries into this week's digest.
|
|
64
|
+
*
|
|
65
|
+
* @param vaultPath - Vault root
|
|
66
|
+
* @param opts - Dry run, clock and threshold overrides
|
|
67
|
+
* @returns What was (or would be) written
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const r = await WikiLogCompileService.getInstance().compile(vault);
|
|
72
|
+
* // r.compiled && r.pagePath === 'llm-curated/digests/2026-W42.md'
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
async compile(vaultPath, opts = {}) {
|
|
76
|
+
const dryRun = opts.dryRun === true;
|
|
77
|
+
const now = opts.now ?? Date.now();
|
|
78
|
+
const windowDays = opts.windowDays ?? WIKI_LOG_CONSTANTS.COMPILE_WINDOW_DAYS;
|
|
79
|
+
const minEntries = opts.minEntries ?? WIKI_LOG_CONSTANTS.COMPILE_MIN_ENTRIES;
|
|
80
|
+
const base = { vaultPath, compiled: false, candidates: 0, entriesCompiled: 0, groups: 0, dryRun };
|
|
81
|
+
let raw;
|
|
82
|
+
try {
|
|
83
|
+
raw = await fs.readFile(path.join(vaultPath, WIKI_LOG_CONSTANTS.LOG_RELATIVE_PATH), 'utf8');
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return { ...base, reason: 'no_log' };
|
|
87
|
+
}
|
|
88
|
+
const state = await this.readState(vaultPath);
|
|
89
|
+
const done = new Set(state.compiledKeys);
|
|
90
|
+
const candidates = recentContentEntries(parseLogEntries(raw), windowDays, now)
|
|
91
|
+
.filter((e) => !done.has(logBodyKey(e.body)))
|
|
92
|
+
.sort((a, b) => a.timestampMs - b.timestampMs)
|
|
93
|
+
.slice(0, WIKI_LOG_CONSTANTS.COMPILE_MAX_ENTRIES);
|
|
94
|
+
base.candidates = candidates.length;
|
|
95
|
+
if (candidates.length < minEntries)
|
|
96
|
+
return { ...base, reason: 'too_few_entries' };
|
|
97
|
+
const week = isoWeekLabel(now);
|
|
98
|
+
const pagePath = `${WIKI_LOG_CONSTANTS.COMPILE_DIR}/${week}.md`;
|
|
99
|
+
const groups = this.group(candidates);
|
|
100
|
+
const body = this.renderBody(groups, candidates, now);
|
|
101
|
+
const result = { ...base, compiled: true, entriesCompiled: candidates.length, pagePath, groups: groups.length };
|
|
102
|
+
if (dryRun) {
|
|
103
|
+
this.logger.info('WikiLogCompile dry run — would write digest', { vaultPath, pagePath, entries: candidates.length, groups: groups.length });
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
const counts = this.categoryCounts(candidates);
|
|
107
|
+
const outcome = await this.ingest.ingest({
|
|
108
|
+
vaultPath,
|
|
109
|
+
sourceType: 'record_learning',
|
|
110
|
+
sourceRef: `wiki-log-compile:${week}:${new Date(now).toISOString()}`,
|
|
111
|
+
sourceBody: body,
|
|
112
|
+
callerSession: 'system:wiki-log-compile',
|
|
113
|
+
targetRelativePath: pagePath,
|
|
114
|
+
title: `Digest ${week}`,
|
|
115
|
+
summary: `${candidates.length} learnings from the vault log (${counts}) compiled ${new Date(now).toISOString().slice(0, 10)} — read before working on these topics; promote what still matters to its own page.`,
|
|
116
|
+
keepBecause: 'reusable_method',
|
|
117
|
+
tags: ['digest', week],
|
|
118
|
+
});
|
|
119
|
+
if (!outcome.ok) {
|
|
120
|
+
this.logger.warn('WikiLogCompile: ingest refused the digest page (non-fatal)', { vaultPath, pagePath, reason: outcome.reason });
|
|
121
|
+
return { ...base, reason: 'ingest_refused', candidates: candidates.length };
|
|
122
|
+
}
|
|
123
|
+
const keys = [...state.compiledKeys, ...candidates.map((e) => logBodyKey(e.body))];
|
|
124
|
+
await this.writeState(vaultPath, {
|
|
125
|
+
compiledKeys: keys.slice(-WIKI_LOG_CONSTANTS.COMPILE_STATE_MAX_KEYS),
|
|
126
|
+
lastCompiledAt: new Date(now).toISOString(),
|
|
127
|
+
});
|
|
128
|
+
this.logger.info('WikiLogCompile wrote digest', { vaultPath, pagePath, entries: candidates.length, groups: groups.length });
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Compile every vault in a list; failures are logged per vault.
|
|
133
|
+
*
|
|
134
|
+
* @param vaults - Vault roots
|
|
135
|
+
* @param opts - Passed to {@link compile}
|
|
136
|
+
* @returns One result per vault checked
|
|
137
|
+
*/
|
|
138
|
+
async compileAll(vaults, opts = {}) {
|
|
139
|
+
const out = [];
|
|
140
|
+
for (const vaultPath of vaults) {
|
|
141
|
+
try {
|
|
142
|
+
out.push(await this.compile(vaultPath, opts));
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
this.logger.warn('WikiLogCompile failed for vault (non-fatal)', { vaultPath, error: err instanceof Error ? err.message : String(err) });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
// ---------------------------------------------------------------------------
|
|
151
|
+
/**
|
|
152
|
+
* Group entries by `<category> / <topic>`, largest groups first, stable
|
|
153
|
+
* within a group (oldest first).
|
|
154
|
+
*
|
|
155
|
+
* @param entries - Candidate entries
|
|
156
|
+
* @returns Groups with a label and members
|
|
157
|
+
*/
|
|
158
|
+
group(entries) {
|
|
159
|
+
const byLabel = new Map();
|
|
160
|
+
for (const e of entries) {
|
|
161
|
+
const category = logEntryCategory(e.body);
|
|
162
|
+
const topic = logEntryTopic(e.body);
|
|
163
|
+
const label = topic.toLowerCase() === category ? category : `${category} / ${topic}`;
|
|
164
|
+
const list = byLabel.get(label) ?? [];
|
|
165
|
+
list.push(e);
|
|
166
|
+
byLabel.set(label, list);
|
|
167
|
+
}
|
|
168
|
+
return [...byLabel.entries()]
|
|
169
|
+
.map(([label, members]) => ({ label, members }))
|
|
170
|
+
.sort((a, b) => b.members.length - a.members.length || a.label.localeCompare(b.label));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* `k gotchas, m decisions, …` for the page summary.
|
|
174
|
+
*
|
|
175
|
+
* @param entries - Entries
|
|
176
|
+
* @returns Comma-separated counts, most frequent first
|
|
177
|
+
*/
|
|
178
|
+
categoryCounts(entries) {
|
|
179
|
+
const counts = new Map();
|
|
180
|
+
for (const e of entries) {
|
|
181
|
+
const c = logEntryCategory(e.body);
|
|
182
|
+
counts.set(c, (counts.get(c) ?? 0) + 1);
|
|
183
|
+
}
|
|
184
|
+
return [...counts.entries()]
|
|
185
|
+
.sort((a, b) => b[1] - a[1])
|
|
186
|
+
.map(([c, n]) => `${n} ${c}`)
|
|
187
|
+
.join(', ');
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Markdown body of one compile run: a dated heading, then one `###` per
|
|
191
|
+
* group with one bullet per entry (author, date, body clipped).
|
|
192
|
+
*
|
|
193
|
+
* @param groups - Grouped entries
|
|
194
|
+
* @param all - All entries in the run (for the date range)
|
|
195
|
+
* @param now - Epoch ms of the run
|
|
196
|
+
* @returns Markdown
|
|
197
|
+
*/
|
|
198
|
+
renderBody(groups, all, now) {
|
|
199
|
+
const first = all[0]?.timestamp.slice(0, 10) ?? '';
|
|
200
|
+
const last = all[all.length - 1]?.timestamp.slice(0, 10) ?? '';
|
|
201
|
+
const lines = [`## Compiled ${new Date(now).toISOString().slice(0, 10)} — ${all.length} entries from ${first} to ${last}`, ''];
|
|
202
|
+
for (const g of groups) {
|
|
203
|
+
lines.push(`### ${g.label} (${g.members.length})`, '');
|
|
204
|
+
for (const e of g.members) {
|
|
205
|
+
const body = e.body.replace(/\s+/g, ' ').trim();
|
|
206
|
+
const clipped = body.length > WIKI_LOG_CONSTANTS.COMPILE_ENTRY_MAX_CHARS ? `${body.slice(0, WIKI_LOG_CONSTANTS.COMPILE_ENTRY_MAX_CHARS - 1)}…` : body;
|
|
207
|
+
lines.push(`- ${e.timestamp.slice(0, 10)} · ${e.caller}: ${clipped}`);
|
|
208
|
+
}
|
|
209
|
+
lines.push('');
|
|
210
|
+
}
|
|
211
|
+
return lines.join('\n').trim();
|
|
212
|
+
}
|
|
213
|
+
statePath(vaultPath) {
|
|
214
|
+
return path.join(vaultPath, WIKI_LOG_CONSTANTS.COMPILE_STATE_FILE);
|
|
215
|
+
}
|
|
216
|
+
async readState(vaultPath) {
|
|
217
|
+
const data = await safeReadJson(this.statePath(vaultPath), null);
|
|
218
|
+
return {
|
|
219
|
+
compiledKeys: Array.isArray(data?.compiledKeys) ? data.compiledKeys.filter((k) => typeof k === 'string') : [],
|
|
220
|
+
lastCompiledAt: typeof data?.lastCompiledAt === 'string' ? data.lastCompiledAt : null,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
async writeState(vaultPath, state) {
|
|
224
|
+
await atomicWriteJson(this.statePath(vaultPath), state);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=wiki-log-compile.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-log-compile.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-compile.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAuC/B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACrF,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAIH;IAHrB,MAAM,CAAC,QAAQ,GAAiC,IAAI,CAAC;IAC5C,MAAM,CAAkB;IAEzC,YAA6B,SAA4B,iBAAiB,CAAC,WAAW,EAAE;QAA3D,WAAM,GAAN,MAAM,CAAqD;QACtF,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,gBAAgB;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,OAA8B,EAAE;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,mBAAmB,CAAC;QAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,kBAAkB,CAAC,mBAAmB,CAAC;QAC7E,MAAM,IAAI,GAAyB,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QAExH,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC;aAC3E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aAC5C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;aAC7C,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;QACpC,IAAI,UAAU,CAAC,MAAM,GAAG,UAAU;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAElF,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,GAAG,kBAAkB,CAAC,WAAW,IAAI,IAAI,KAAK,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,MAAM,GAAyB,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAEtI,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5I,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC,SAAS;YACT,UAAU,EAAE,iBAAiB;YAC7B,SAAS,EAAE,oBAAoB,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YACpE,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,yBAAyB;YACxC,kBAAkB,EAAE,QAAQ;YAC5B,KAAK,EAAE,UAAU,IAAI,EAAE;YACvB,OAAO,EAAE,GAAG,UAAU,CAAC,MAAM,kCAAkC,MAAM,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qFAAqF;YAChN,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAChI,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;QAC9E,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;YAC/B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,sBAAsB,CAAC;YACpE,cAAc,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;SAC5C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5H,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,MAAyB,EAAE,OAA8B,EAAE;QAC1E,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1I,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8EAA8E;IAE9E;;;;;;OAMG;IACK,KAAK,CAAC,OAAsC;QAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,KAAK,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,OAAsC;QAC3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAED;;;;;;;;OAQG;IACK,UAAU,CAAC,MAAuE,EAAE,GAAkC,EAAE,GAAW;QACzI,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAa,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,iBAAiB,KAAK,OAAO,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzI,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;YACvD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,uBAAuB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAEO,SAAS,CAAC,SAAiB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,SAAiB;QACvC,MAAM,IAAI,GAAG,MAAM,YAAY,CAA+B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/F,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1H,cAAc,EAAE,OAAO,IAAI,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;SACtF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,KAAmB;QAC7D,MAAM,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The vault activity log (`llm-curated/log.md`) as entries.
|
|
3
|
+
*
|
|
4
|
+
* One place that knows the entry format `WikiIngestService` appends:
|
|
5
|
+
*
|
|
6
|
+
* ## [<ISO>] <sourceType> | <caller>
|
|
7
|
+
*
|
|
8
|
+
* ref: <sourceRef>
|
|
9
|
+
*
|
|
10
|
+
* <body>
|
|
11
|
+
*
|
|
12
|
+
* Used by search (one document per recent entry), rotation (carry forward
|
|
13
|
+
* the recent non-noise entries), the digest compiler and the startup
|
|
14
|
+
* briefing. Also decides what counts as a content-free entry (#1345): a
|
|
15
|
+
* templated state transition carries nothing a reader could use.
|
|
16
|
+
*
|
|
17
|
+
* @module services/wiki/wiki-log-entries
|
|
18
|
+
*/
|
|
19
|
+
/** One parsed `log.md` entry. */
|
|
20
|
+
export interface WikiLogEntryRecord {
|
|
21
|
+
/** ISO timestamp from the header. */
|
|
22
|
+
timestamp: string;
|
|
23
|
+
/** Epoch ms of `timestamp`, or NaN when it does not parse. */
|
|
24
|
+
timestampMs: number;
|
|
25
|
+
/** Source type from the header (`record_learning`, `user_chat`, ...). */
|
|
26
|
+
sourceType: string;
|
|
27
|
+
/** Caller session (or source ref) from the header. */
|
|
28
|
+
caller: string;
|
|
29
|
+
/** `ref:` line value, '' when absent. */
|
|
30
|
+
ref: string;
|
|
31
|
+
/** Entry body after the `ref:` line, trimmed. */
|
|
32
|
+
body: string;
|
|
33
|
+
/** The entry's raw text, header included, as it stands in the file. */
|
|
34
|
+
raw: string;
|
|
35
|
+
}
|
|
36
|
+
/** Header a fresh `log.md` starts with. */
|
|
37
|
+
export declare const WIKI_LOG_HEADER = "# Activity log\n\nAppend-only log of ingested sources. Each entry: `## [<ISO>] <sourceType> | <caller>`.\n";
|
|
38
|
+
/**
|
|
39
|
+
* Whether a learning / log body is a content-free templated record.
|
|
40
|
+
*
|
|
41
|
+
* @param body - Entry body or learning text
|
|
42
|
+
* @returns True when the text matches a known templated shape or is blank
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* isNoiseLogBody('(learning) [pattern] [[WorkItem-1]] task:done running→done. timestamp=2026-10-17T00:00:00Z. Source: x.'); // true
|
|
47
|
+
* isNoiseLogBody('(gotcha) complete-task rejects queued→done; accept-task first.'); // false
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function isNoiseLogBody(body: string | undefined | null): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Conversation handover snapshots (`**Conversation handover — <agent> — task <id>** (fact) …`)
|
|
53
|
+
* that the fresh-conversation path mirrors into the vault. They are state,
|
|
54
|
+
* not knowledge: a thousand of them a week on one machine. They stay in the
|
|
55
|
+
* log (the agent is pointed at them) but are not knowledge for search, the
|
|
56
|
+
* digest, memory or the briefing.
|
|
57
|
+
*
|
|
58
|
+
* @param body - Entry body
|
|
59
|
+
* @returns True for a handover snapshot
|
|
60
|
+
*/
|
|
61
|
+
export declare function isHandoverLogBody(body: string | undefined | null): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Normalised form of a body used for duplicate detection: whitespace
|
|
64
|
+
* collapsed, case folded, trailing punctuation dropped.
|
|
65
|
+
*
|
|
66
|
+
* @param body - Entry body
|
|
67
|
+
* @returns Normalised text
|
|
68
|
+
*/
|
|
69
|
+
export declare function normalizeLogBody(body: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Stable key of an entry's content (sha1 of the normalised body). Two
|
|
72
|
+
* entries with the same body share a key whatever their timestamps.
|
|
73
|
+
*
|
|
74
|
+
* @param body - Entry body
|
|
75
|
+
* @returns 40-char hex digest
|
|
76
|
+
*/
|
|
77
|
+
export declare function logBodyKey(body: string): string;
|
|
78
|
+
/**
|
|
79
|
+
* Parse a whole `log.md` into entries, in file order. Text before the
|
|
80
|
+
* first entry header (the preamble, a migrated learnings import) is not an
|
|
81
|
+
* entry and is dropped.
|
|
82
|
+
*
|
|
83
|
+
* @param raw - File content
|
|
84
|
+
* @returns Entries in file order
|
|
85
|
+
*/
|
|
86
|
+
export declare function parseLogEntries(raw: string): WikiLogEntryRecord[];
|
|
87
|
+
/**
|
|
88
|
+
* Serialise an entry back into the append format (leading blank line,
|
|
89
|
+
* header, ref line, body, trailing blank line).
|
|
90
|
+
*
|
|
91
|
+
* @param entry - Entry to serialise
|
|
92
|
+
* @returns Markdown block
|
|
93
|
+
*/
|
|
94
|
+
export declare function serializeLogEntry(entry: Pick<WikiLogEntryRecord, 'timestamp' | 'sourceType' | 'caller' | 'ref' | 'body'>): string;
|
|
95
|
+
/**
|
|
96
|
+
* The entries from the last `days` days that carry content, newest first,
|
|
97
|
+
* with duplicate bodies collapsed (the newest copy wins). Handover
|
|
98
|
+
* snapshots are left out unless `includeHandovers` is set (rotation keeps
|
|
99
|
+
* them; search, digest, memory and briefing do not).
|
|
100
|
+
*
|
|
101
|
+
* @param entries - Parsed entries (any order)
|
|
102
|
+
* @param days - Window length
|
|
103
|
+
* @param now - Current epoch ms
|
|
104
|
+
* @param limit - Cap on returned entries
|
|
105
|
+
* @param options - `includeHandovers` keeps handover snapshots
|
|
106
|
+
* @returns Recent, non-noise, deduped entries, newest first
|
|
107
|
+
*/
|
|
108
|
+
export declare function recentContentEntries(entries: readonly WikiLogEntryRecord[], days: number, now?: number, limit?: number, options?: {
|
|
109
|
+
includeHandovers?: boolean;
|
|
110
|
+
}): WikiLogEntryRecord[];
|
|
111
|
+
/**
|
|
112
|
+
* Vault-relative "path" of a log entry as surfaced by search:
|
|
113
|
+
* `llm-curated/log.md#<ISO timestamp>`.
|
|
114
|
+
*
|
|
115
|
+
* @param entry - Entry
|
|
116
|
+
* @returns Pseudo path
|
|
117
|
+
*/
|
|
118
|
+
export declare function logEntryPath(entry: Pick<WikiLogEntryRecord, 'timestamp'>): string;
|
|
119
|
+
/**
|
|
120
|
+
* Whether a vault-relative path points at a log entry (as opposed to a page).
|
|
121
|
+
*
|
|
122
|
+
* @param relativePath - Path from a search hit
|
|
123
|
+
* @returns True for `llm-curated/log.md#…`
|
|
124
|
+
*/
|
|
125
|
+
export declare function isLogEntryPath(relativePath: string): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* The `(category)` prefix `MemoryService` puts on a mirrored memory
|
|
128
|
+
* (`(gotcha) …`, `(decision) …`) or the `[tag]` an auto-recorder uses.
|
|
129
|
+
*
|
|
130
|
+
* @param body - Entry body
|
|
131
|
+
* @returns Lower-case category, or 'learning' when none is present
|
|
132
|
+
*/
|
|
133
|
+
export declare function logEntryCategory(body: string): string;
|
|
134
|
+
/**
|
|
135
|
+
* Topic of an entry for grouping in a digest: the first `[[Entity]]` link,
|
|
136
|
+
* else a bold `**Title**` lead, else the category.
|
|
137
|
+
*
|
|
138
|
+
* @param body - Entry body
|
|
139
|
+
* @returns Short topic label
|
|
140
|
+
*/
|
|
141
|
+
export declare function logEntryTopic(body: string): string;
|
|
142
|
+
//# sourceMappingURL=wiki-log-entries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-log-entries.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-entries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,2CAA2C;AAC3C,eAAO,MAAM,eAAe,+GACkF,CAAC;AAe/G;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAKvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAG1E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAgCjE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAEjI;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,EACxB,KAAK,GAAE,MAAgC,EACvC,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,kBAAkB,EAAE,CAgBtB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,MAAM,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD"}
|