sensorium-mcp 3.1.2 → 3.1.3-board.10
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/Install-Sensorium.ps1 +257 -43
- package/README.md +2 -0
- package/dist/board/api/api.js +84 -0
- package/dist/board/api/api.test.ts +23 -0
- package/dist/board/api/client.js +113 -0
- package/dist/board/components/BottomNav.js +32 -0
- package/dist/board/components/Card.js +78 -0
- package/dist/board/components/Combobox.js +79 -0
- package/dist/board/components/CommentComposer.js +29 -0
- package/dist/board/components/CommentList.js +42 -0
- package/dist/board/components/DirTreePicker.js +128 -0
- package/dist/board/components/Dropdown.js +67 -0
- package/dist/board/components/Lane.js +47 -0
- package/dist/board/components/PriorityChip.js +20 -0
- package/dist/board/components/ProfileSummary.js +89 -0
- package/dist/board/components/StateBanner.js +24 -0
- package/dist/board/components/StatusChip.js +26 -0
- package/dist/board/components/rateLimit.js +32 -0
- package/dist/board/components/rateLimit.test.ts +16 -0
- package/dist/board/components/time.js +14 -0
- package/dist/board/config.js +56 -0
- package/dist/board/index.html +18 -0
- package/dist/board/main.js +37 -0
- package/dist/board/mock/api.mock.js +491 -0
- package/dist/board/mock/api.mock.test.ts +460 -0
- package/dist/board/mock/fixtures.js +512 -0
- package/dist/board/schema/policy.js +261 -0
- package/dist/board/state/recur.js +24 -0
- package/dist/board/state/recur.test.ts +24 -0
- package/dist/board/state/useBoard.js +161 -0
- package/dist/board/state/useBuilder.js +357 -0
- package/dist/board/state/useBuilder.test.ts +468 -0
- package/dist/board/state/useCard.js +193 -0
- package/dist/board/state/useCard.test.ts +435 -0
- package/dist/board/state/useDirBrowser.js +23 -0
- package/dist/board/styles/board.css +2885 -0
- package/dist/board/styles/tokens.css +72 -0
- package/dist/board/vendor/vue.esm-browser.js +9 -0
- package/dist/board/views/App.js +61 -0
- package/dist/board/views/BoardView.js +153 -0
- package/dist/board/views/BuilderView.js +582 -0
- package/dist/board/views/CardView.js +382 -0
- package/dist/board/views/SettingsView.js +152 -0
- package/dist/config/agent-settings.d.ts +11 -0
- package/dist/config/agent-settings.d.ts.map +1 -1
- package/dist/config/agent-settings.js +79 -0
- package/dist/config/agent-settings.js.map +1 -1
- package/dist/config/detail-grant.d.ts +7 -16
- package/dist/config/detail-grant.d.ts.map +1 -1
- package/dist/config/detail-grant.js +12 -35
- package/dist/config/detail-grant.js.map +1 -1
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +17 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-settings.d.ts +7 -1
- package/dist/config/mcp-settings.d.ts.map +1 -1
- package/dist/config/mcp-settings.js +9 -0
- package/dist/config/mcp-settings.js.map +1 -1
- package/dist/config/misc-settings.d.ts +22 -1
- package/dist/config/misc-settings.d.ts.map +1 -1
- package/dist/config/misc-settings.js +93 -3
- package/dist/config/misc-settings.js.map +1 -1
- package/dist/config/operator-grant.d.ts +9 -0
- package/dist/config/operator-grant.d.ts.map +1 -0
- package/dist/config/operator-grant.js +24 -0
- package/dist/config/operator-grant.js.map +1 -0
- package/dist/config/voice-grant.d.ts +10 -0
- package/dist/config/voice-grant.d.ts.map +1 -0
- package/dist/config/voice-grant.js +18 -0
- package/dist/config/voice-grant.js.map +1 -0
- package/dist/dashboard/board-static.d.ts +22 -0
- package/dist/dashboard/board-static.d.ts.map +1 -0
- package/dist/dashboard/board-static.js +130 -0
- package/dist/dashboard/board-static.js.map +1 -0
- package/dist/dashboard/presets.d.ts +1 -1
- package/dist/dashboard/presets.d.ts.map +1 -1
- package/dist/dashboard/presets.js +1 -1
- package/dist/dashboard/presets.js.map +1 -1
- package/dist/dashboard/routes/agent-templates.d.ts.map +1 -1
- package/dist/dashboard/routes/agent-templates.js +6 -9
- package/dist/dashboard/routes/agent-templates.js.map +1 -1
- package/dist/dashboard/routes/board-body.d.ts +8 -0
- package/dist/dashboard/routes/board-body.d.ts.map +1 -0
- package/dist/dashboard/routes/board-body.js +20 -0
- package/dist/dashboard/routes/board-body.js.map +1 -0
- package/dist/dashboard/routes/board-dir-listing.d.ts +70 -0
- package/dist/dashboard/routes/board-dir-listing.d.ts.map +1 -0
- package/dist/dashboard/routes/board-dir-listing.js +192 -0
- package/dist/dashboard/routes/board-dir-listing.js.map +1 -0
- package/dist/dashboard/routes/board-lane-groups.d.ts +6 -0
- package/dist/dashboard/routes/board-lane-groups.d.ts.map +1 -0
- package/dist/dashboard/routes/board-lane-groups.js +52 -0
- package/dist/dashboard/routes/board-lane-groups.js.map +1 -0
- package/dist/dashboard/routes/board-policy.d.ts +224 -0
- package/dist/dashboard/routes/board-policy.d.ts.map +1 -0
- package/dist/dashboard/routes/board-policy.js +214 -0
- package/dist/dashboard/routes/board-policy.js.map +1 -0
- package/dist/dashboard/routes/board-profile-parse.d.ts +32 -0
- package/dist/dashboard/routes/board-profile-parse.d.ts.map +1 -0
- package/dist/dashboard/routes/board-profile-parse.js +338 -0
- package/dist/dashboard/routes/board-profile-parse.js.map +1 -0
- package/dist/dashboard/routes/board.d.ts +90 -0
- package/dist/dashboard/routes/board.d.ts.map +1 -0
- package/dist/dashboard/routes/board.js +721 -0
- package/dist/dashboard/routes/board.js.map +1 -0
- package/dist/dashboard/routes/codex.d.ts +14 -0
- package/dist/dashboard/routes/codex.d.ts.map +1 -0
- package/dist/dashboard/routes/codex.js +92 -0
- package/dist/dashboard/routes/codex.js.map +1 -0
- package/dist/dashboard/routes/prompts.d.ts +2 -2
- package/dist/dashboard/routes/prompts.d.ts.map +1 -1
- package/dist/dashboard/routes/prompts.js +2 -2
- package/dist/dashboard/routes/prompts.js.map +1 -1
- package/dist/dashboard/routes/settings.d.ts +2 -0
- package/dist/dashboard/routes/settings.d.ts.map +1 -1
- package/dist/dashboard/routes/settings.js +24 -1
- package/dist/dashboard/routes/settings.js.map +1 -1
- package/dist/dashboard/routes/skills.d.ts +7 -1
- package/dist/dashboard/routes/skills.d.ts.map +1 -1
- package/dist/dashboard/routes/skills.js +6 -6
- package/dist/dashboard/routes/skills.js.map +1 -1
- package/dist/dashboard/routes/snapshots.d.ts +2 -1
- package/dist/dashboard/routes/snapshots.d.ts.map +1 -1
- package/dist/dashboard/routes/snapshots.js +24 -18
- package/dist/dashboard/routes/snapshots.js.map +1 -1
- package/dist/dashboard/routes/templates.js +5 -5
- package/dist/dashboard/routes/templates.js.map +1 -1
- package/dist/dashboard/routes/threads-create.d.ts +17 -0
- package/dist/dashboard/routes/threads-create.d.ts.map +1 -1
- package/dist/dashboard/routes/threads-create.js +32 -10
- package/dist/dashboard/routes/threads-create.js.map +1 -1
- package/dist/dashboard/routes/threads-helpers.d.ts +11 -2
- package/dist/dashboard/routes/threads-helpers.d.ts.map +1 -1
- package/dist/dashboard/routes/threads-helpers.js +20 -3
- package/dist/dashboard/routes/threads-helpers.js.map +1 -1
- package/dist/dashboard/routes/threads-read.d.ts +16 -4
- package/dist/dashboard/routes/threads-read.d.ts.map +1 -1
- package/dist/dashboard/routes/threads-read.js +61 -55
- package/dist/dashboard/routes/threads-read.js.map +1 -1
- package/dist/dashboard/routes/threads.d.ts +2 -2
- package/dist/dashboard/routes/threads.d.ts.map +1 -1
- package/dist/dashboard/routes/threads.js +143 -29
- package/dist/dashboard/routes/threads.js.map +1 -1
- package/dist/dashboard/routes/types.d.ts +6 -0
- package/dist/dashboard/routes/types.d.ts.map +1 -1
- package/dist/dashboard/routes/types.js.map +1 -1
- package/dist/dashboard/routes.d.ts +2 -2
- package/dist/dashboard/routes.d.ts.map +1 -1
- package/dist/dashboard/routes.js +85 -7
- package/dist/dashboard/routes.js.map +1 -1
- package/dist/dashboard/spa.html +15 -12
- package/dist/data/board/board-schema.d.ts +29 -0
- package/dist/data/board/board-schema.d.ts.map +1 -0
- package/dist/data/board/board-schema.js +202 -0
- package/dist/data/board/board-schema.js.map +1 -0
- package/dist/data/board/board-types.d.ts +175 -0
- package/dist/data/board/board-types.d.ts.map +1 -0
- package/dist/data/board/board-types.js +9 -0
- package/dist/data/board/board-types.js.map +1 -0
- package/dist/data/board/card.repository.d.ts +137 -0
- package/dist/data/board/card.repository.d.ts.map +1 -0
- package/dist/data/board/card.repository.js +470 -0
- package/dist/data/board/card.repository.js.map +1 -0
- package/dist/data/board/comment.repository.d.ts +14 -0
- package/dist/data/board/comment.repository.d.ts.map +1 -0
- package/dist/data/board/comment.repository.js +42 -0
- package/dist/data/board/comment.repository.js.map +1 -0
- package/dist/data/board/lane-group.repository.d.ts +19 -0
- package/dist/data/board/lane-group.repository.d.ts.map +1 -0
- package/dist/data/board/lane-group.repository.js +66 -0
- package/dist/data/board/lane-group.repository.js.map +1 -0
- package/dist/data/board/profile-defaults.d.ts +17 -0
- package/dist/data/board/profile-defaults.d.ts.map +1 -0
- package/dist/data/board/profile-defaults.js +107 -0
- package/dist/data/board/profile-defaults.js.map +1 -0
- package/dist/data/interfaces.d.ts +1 -0
- package/dist/data/interfaces.d.ts.map +1 -1
- package/dist/data/memory/bootstrap.d.ts +1 -8
- package/dist/data/memory/bootstrap.d.ts.map +1 -1
- package/dist/data/memory/bootstrap.js +27 -37
- package/dist/data/memory/bootstrap.js.map +1 -1
- package/dist/data/memory/consolidation.d.ts +9 -31
- package/dist/data/memory/consolidation.d.ts.map +1 -1
- package/dist/data/memory/consolidation.js +22 -32
- package/dist/data/memory/consolidation.js.map +1 -1
- package/dist/data/memory/db-maintenance.d.ts +54 -0
- package/dist/data/memory/db-maintenance.d.ts.map +1 -0
- package/dist/data/memory/db-maintenance.js +81 -0
- package/dist/data/memory/db-maintenance.js.map +1 -0
- package/dist/data/memory/episodes.d.ts +2 -1
- package/dist/data/memory/episodes.d.ts.map +1 -1
- package/dist/data/memory/episodes.js +5 -1
- package/dist/data/memory/episodes.js.map +1 -1
- package/dist/data/memory/index.d.ts +0 -4
- package/dist/data/memory/index.d.ts.map +1 -1
- package/dist/data/memory/index.js +0 -4
- package/dist/data/memory/index.js.map +1 -1
- package/dist/data/memory/key-knowledge.d.ts +51 -0
- package/dist/data/memory/key-knowledge.d.ts.map +1 -0
- package/dist/data/memory/key-knowledge.js +128 -0
- package/dist/data/memory/key-knowledge.js.map +1 -0
- package/dist/data/memory/migration-runner.d.ts +1 -1
- package/dist/data/memory/migration-runner.d.ts.map +1 -1
- package/dist/data/memory/migration-runner.js +407 -1
- package/dist/data/memory/migration-runner.js.map +1 -1
- package/dist/data/memory/narrative-lint.d.ts +2 -2
- package/dist/data/memory/narrative-lint.d.ts.map +1 -1
- package/dist/data/memory/narrative-lint.js +23 -13
- package/dist/data/memory/narrative-lint.js.map +1 -1
- package/dist/data/memory/narrative-resolutions.d.ts +9 -2
- package/dist/data/memory/narrative-resolutions.d.ts.map +1 -1
- package/dist/data/memory/narrative-resolutions.js +9 -8
- package/dist/data/memory/narrative-resolutions.js.map +1 -1
- package/dist/data/memory/narrative-sources.d.ts +1 -1
- package/dist/data/memory/narrative-sources.d.ts.map +1 -1
- package/dist/data/memory/narrative-sources.js +8 -3
- package/dist/data/memory/narrative-sources.js.map +1 -1
- package/dist/data/memory/narrative-store.d.ts +24 -0
- package/dist/data/memory/narrative-store.d.ts.map +1 -1
- package/dist/data/memory/narrative-store.js +73 -35
- package/dist/data/memory/narrative-store.js.map +1 -1
- package/dist/data/memory/narrative.d.ts.map +1 -1
- package/dist/data/memory/narrative.js +47 -29
- package/dist/data/memory/narrative.js.map +1 -1
- package/dist/data/memory/note-archival.d.ts +1 -1
- package/dist/data/memory/note-archival.d.ts.map +1 -1
- package/dist/data/memory/note-archival.js +7 -3
- package/dist/data/memory/note-archival.js.map +1 -1
- package/dist/data/memory/note-embeddings.d.ts +7 -0
- package/dist/data/memory/note-embeddings.d.ts.map +1 -1
- package/dist/data/memory/note-embeddings.js +6 -2
- package/dist/data/memory/note-embeddings.js.map +1 -1
- package/dist/data/memory/passive-notice.repository.d.ts +70 -0
- package/dist/data/memory/passive-notice.repository.d.ts.map +1 -0
- package/dist/data/memory/passive-notice.repository.js +85 -0
- package/dist/data/memory/passive-notice.repository.js.map +1 -0
- package/dist/data/memory/schema-ddl.d.ts +120 -1
- package/dist/data/memory/schema-ddl.d.ts.map +1 -1
- package/dist/data/memory/schema-ddl.js +171 -4
- package/dist/data/memory/schema-ddl.js.map +1 -1
- package/dist/data/memory/schema-guard.d.ts.map +1 -1
- package/dist/data/memory/schema-guard.js +5 -41
- package/dist/data/memory/schema-guard.js.map +1 -1
- package/dist/data/memory/schema.d.ts.map +1 -1
- package/dist/data/memory/schema.js +10 -34
- package/dist/data/memory/schema.js.map +1 -1
- package/dist/data/memory/semantic-notes.d.ts +13 -8
- package/dist/data/memory/semantic-notes.d.ts.map +1 -1
- package/dist/data/memory/semantic-notes.js +12 -17
- package/dist/data/memory/semantic-notes.js.map +1 -1
- package/dist/data/memory/thread-registry.d.ts +330 -15
- package/dist/data/memory/thread-registry.d.ts.map +1 -1
- package/dist/data/memory/thread-registry.js +523 -67
- package/dist/data/memory/thread-registry.js.map +1 -1
- package/dist/data/memory/utils.d.ts +6 -0
- package/dist/data/memory/utils.d.ts.map +1 -1
- package/dist/data/memory/utils.js +13 -0
- package/dist/data/memory/utils.js.map +1 -1
- package/dist/data/memory/worker-lifecycle.repository.d.ts +308 -0
- package/dist/data/memory/worker-lifecycle.repository.d.ts.map +1 -0
- package/dist/data/memory/worker-lifecycle.repository.js +428 -0
- package/dist/data/memory/worker-lifecycle.repository.js.map +1 -0
- package/dist/data/optional.d.ts +16 -0
- package/dist/data/optional.d.ts.map +1 -0
- package/dist/data/optional.js +47 -0
- package/dist/data/optional.js.map +1 -0
- package/dist/index.js +156 -24
- package/dist/index.js.map +1 -1
- package/dist/integrations/openai/speech.d.ts.map +1 -1
- package/dist/integrations/openai/speech.js +52 -19
- package/dist/integrations/openai/speech.js.map +1 -1
- package/dist/integrations/openai/video.d.ts +1 -1
- package/dist/integrations/openai/video.d.ts.map +1 -1
- package/dist/integrations/openai/video.js +13 -8
- package/dist/integrations/openai/video.js.map +1 -1
- package/dist/integrations/telegram/types.d.ts +11 -0
- package/dist/integrations/telegram/types.d.ts.map +1 -1
- package/dist/lib/http-retry.d.ts +91 -0
- package/dist/lib/http-retry.d.ts.map +1 -0
- package/dist/lib/http-retry.js +177 -0
- package/dist/lib/http-retry.js.map +1 -0
- package/dist/lib/mcp-http-port.d.ts +12 -0
- package/dist/lib/mcp-http-port.d.ts.map +1 -0
- package/dist/lib/mcp-http-port.js +19 -0
- package/dist/lib/mcp-http-port.js.map +1 -0
- package/dist/lib/paths.d.ts +29 -4
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +31 -4
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/types.d.ts +2 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/usage-metering/pricing.js +1 -1
- package/dist/lib/usage-metering/pricing.js.map +1 -1
- package/dist/lib/usage-metering/sink.d.ts +4 -0
- package/dist/lib/usage-metering/sink.d.ts.map +1 -1
- package/dist/lib/usage-metering/sink.js +6 -4
- package/dist/lib/usage-metering/sink.js.map +1 -1
- package/dist/lib/utils.d.ts +31 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +49 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/llm/prompts/narrative.d.ts.map +1 -1
- package/dist/llm/prompts/narrative.js +27 -86
- package/dist/llm/prompts/narrative.js.map +1 -1
- package/dist/log-parsing/log-events.d.ts +38 -0
- package/dist/log-parsing/log-events.d.ts.map +1 -0
- package/dist/log-parsing/log-events.js +2 -0
- package/dist/log-parsing/log-events.js.map +1 -0
- package/dist/log-parsing/parser-registry.d.ts +4 -0
- package/dist/log-parsing/parser-registry.d.ts.map +1 -0
- package/dist/log-parsing/parser-registry.js +18 -0
- package/dist/log-parsing/parser-registry.js.map +1 -0
- package/dist/log-parsing/parsers/claude.d.ts +6 -0
- package/dist/log-parsing/parsers/claude.d.ts.map +1 -0
- package/dist/log-parsing/parsers/claude.js +100 -0
- package/dist/log-parsing/parsers/claude.js.map +1 -0
- package/dist/log-parsing/parsers/codex.d.ts +6 -0
- package/dist/log-parsing/parsers/codex.d.ts.map +1 -0
- package/dist/log-parsing/parsers/codex.js +116 -0
- package/dist/log-parsing/parsers/codex.js.map +1 -0
- package/dist/log-parsing/parsers/copilot.d.ts +6 -0
- package/dist/log-parsing/parsers/copilot.d.ts.map +1 -0
- package/dist/log-parsing/parsers/copilot.js +65 -0
- package/dist/log-parsing/parsers/copilot.js.map +1 -0
- package/dist/log-parsing/parsers/json-lines.d.ts +9 -0
- package/dist/log-parsing/parsers/json-lines.d.ts.map +1 -0
- package/dist/log-parsing/parsers/json-lines.js +25 -0
- package/dist/log-parsing/parsers/json-lines.js.map +1 -0
- package/dist/log-parsing/render.d.ts +33 -0
- package/dist/log-parsing/render.d.ts.map +1 -0
- package/dist/log-parsing/render.js +113 -0
- package/dist/log-parsing/render.js.map +1 -0
- package/dist/log-parsing/text.d.ts +8 -0
- package/dist/log-parsing/text.d.ts.map +1 -0
- package/dist/log-parsing/text.js +20 -0
- package/dist/log-parsing/text.js.map +1 -0
- package/dist/server/http-server.d.ts +8 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +41 -19
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/port-holder.d.ts +94 -0
- package/dist/server/port-holder.d.ts.map +1 -0
- package/dist/server/port-holder.js +122 -0
- package/dist/server/port-holder.js.map +1 -0
- package/dist/services/agent-spawn.service.d.ts +50 -5
- package/dist/services/agent-spawn.service.d.ts.map +1 -1
- package/dist/services/agent-spawn.service.js +59 -66
- package/dist/services/agent-spawn.service.js.map +1 -1
- package/dist/services/background-runner.d.ts +0 -1
- package/dist/services/background-runner.d.ts.map +1 -1
- package/dist/services/background-runner.js +0 -58
- package/dist/services/background-runner.js.map +1 -1
- package/dist/services/board/board-signals.d.ts +45 -0
- package/dist/services/board/board-signals.d.ts.map +1 -0
- package/dist/services/board/board-signals.js +170 -0
- package/dist/services/board/board-signals.js.map +1 -0
- package/dist/services/board/card-briefing.d.ts +24 -0
- package/dist/services/board/card-briefing.d.ts.map +1 -0
- package/dist/services/board/card-briefing.js +132 -0
- package/dist/services/board/card-briefing.js.map +1 -0
- package/dist/services/board/card-diagnostics.d.ts +25 -0
- package/dist/services/board/card-diagnostics.d.ts.map +1 -0
- package/dist/services/board/card-diagnostics.js +50 -0
- package/dist/services/board/card-diagnostics.js.map +1 -0
- package/dist/services/board/live-root-thread.d.ts +8 -0
- package/dist/services/board/live-root-thread.d.ts.map +1 -0
- package/dist/services/board/live-root-thread.js +2 -0
- package/dist/services/board/live-root-thread.js.map +1 -0
- package/dist/services/board/orchestrator.service.d.ts +119 -0
- package/dist/services/board/orchestrator.service.d.ts.map +1 -0
- package/dist/services/board/orchestrator.service.js +387 -0
- package/dist/services/board/orchestrator.service.js.map +1 -0
- package/dist/services/board/release-worker.d.ts +43 -0
- package/dist/services/board/release-worker.d.ts.map +1 -0
- package/dist/services/board/release-worker.js +96 -0
- package/dist/services/board/release-worker.js.map +1 -0
- package/dist/services/board/report-capture.d.ts +94 -0
- package/dist/services/board/report-capture.d.ts.map +1 -0
- package/dist/services/board/report-capture.js +398 -0
- package/dist/services/board/report-capture.js.map +1 -0
- package/dist/services/board/worker-spawn.d.ts +89 -0
- package/dist/services/board/worker-spawn.d.ts.map +1 -0
- package/dist/services/board/worker-spawn.js +177 -0
- package/dist/services/board/worker-spawn.js.map +1 -0
- package/dist/services/board/worktree.d.ts +45 -0
- package/dist/services/board/worktree.d.ts.map +1 -0
- package/dist/services/board/worktree.js +183 -0
- package/dist/services/board/worktree.js.map +1 -0
- package/dist/services/broker-client.d.ts +84 -2
- package/dist/services/broker-client.d.ts.map +1 -1
- package/dist/services/broker-client.js +72 -6
- package/dist/services/broker-client.js.map +1 -1
- package/dist/services/claude-spawn.service.d.ts +5 -0
- package/dist/services/claude-spawn.service.d.ts.map +1 -1
- package/dist/services/claude-spawn.service.js +37 -21
- package/dist/services/claude-spawn.service.js.map +1 -1
- package/dist/services/codex-spawn.service.d.ts +8 -3
- package/dist/services/codex-spawn.service.d.ts.map +1 -1
- package/dist/services/codex-spawn.service.js +84 -67
- package/dist/services/codex-spawn.service.js.map +1 -1
- package/dist/services/consolidation.service.d.ts.map +1 -1
- package/dist/services/consolidation.service.js +5 -49
- package/dist/services/consolidation.service.js.map +1 -1
- package/dist/services/copilot-spawn.service.d.ts +1 -1
- package/dist/services/copilot-spawn.service.d.ts.map +1 -1
- package/dist/services/copilot-spawn.service.js +10 -5
- package/dist/services/copilot-spawn.service.js.map +1 -1
- package/dist/services/daily-session.d.ts +24 -11
- package/dist/services/daily-session.d.ts.map +1 -1
- package/dist/services/daily-session.js +113 -33
- package/dist/services/daily-session.js.map +1 -1
- package/dist/services/death-alert.service.d.ts +55 -0
- package/dist/services/death-alert.service.d.ts.map +1 -0
- package/dist/services/death-alert.service.js +64 -0
- package/dist/services/death-alert.service.js.map +1 -0
- package/dist/services/dispatcher/broker.d.ts +66 -0
- package/dist/services/dispatcher/broker.d.ts.map +1 -1
- package/dist/services/dispatcher/broker.js +60 -52
- package/dist/services/dispatcher/broker.js.map +1 -1
- package/dist/services/dispatcher/poller.d.ts.map +1 -1
- package/dist/services/dispatcher/poller.js +31 -24
- package/dist/services/dispatcher/poller.js.map +1 -1
- package/dist/services/http-retry.d.ts +1 -90
- package/dist/services/http-retry.d.ts.map +1 -1
- package/dist/services/http-retry.js +1 -176
- package/dist/services/http-retry.js.map +1 -1
- package/dist/services/intent.d.ts +15 -1
- package/dist/services/intent.d.ts.map +1 -1
- package/dist/services/intent.js +39 -27
- package/dist/services/intent.js.map +1 -1
- package/dist/services/keeper.service.d.ts +76 -3
- package/dist/services/keeper.service.d.ts.map +1 -1
- package/dist/services/keeper.service.js +112 -35
- package/dist/services/keeper.service.js.map +1 -1
- package/dist/services/mcp-config.service.d.ts.map +1 -1
- package/dist/services/mcp-config.service.js +14 -1
- package/dist/services/mcp-config.service.js.map +1 -1
- package/dist/services/memory-briefing.service.d.ts +1 -1
- package/dist/services/memory-briefing.service.d.ts.map +1 -1
- package/dist/services/memory-briefing.service.js +28 -73
- package/dist/services/memory-briefing.service.js.map +1 -1
- package/dist/services/passive-notice.service.d.ts +56 -0
- package/dist/services/passive-notice.service.d.ts.map +1 -0
- package/dist/services/passive-notice.service.js +92 -0
- package/dist/services/passive-notice.service.js.map +1 -0
- package/dist/services/predefined-prompts.d.ts +11 -0
- package/dist/services/predefined-prompts.d.ts.map +1 -0
- package/dist/services/predefined-prompts.js +25 -0
- package/dist/services/predefined-prompts.js.map +1 -0
- package/dist/services/process.service.d.ts +111 -27
- package/dist/services/process.service.d.ts.map +1 -1
- package/dist/services/process.service.js +245 -173
- package/dist/services/process.service.js.map +1 -1
- package/dist/services/spawn-common.d.ts +281 -5
- package/dist/services/spawn-common.d.ts.map +1 -1
- package/dist/services/spawn-common.js +884 -188
- package/dist/services/spawn-common.js.map +1 -1
- package/dist/services/spawn-exit-watcher.d.ts +45 -35
- package/dist/services/spawn-exit-watcher.d.ts.map +1 -1
- package/dist/services/spawn-exit-watcher.js +120 -100
- package/dist/services/spawn-exit-watcher.js.map +1 -1
- package/dist/services/telegram.d.ts +31 -8
- package/dist/services/telegram.d.ts.map +1 -1
- package/dist/services/telegram.js +58 -26
- package/dist/services/telegram.js.map +1 -1
- package/dist/services/thread-health.service.d.ts +8 -0
- package/dist/services/thread-health.service.d.ts.map +1 -1
- package/dist/services/thread-health.service.js +14 -10
- package/dist/services/thread-health.service.js.map +1 -1
- package/dist/services/thread-lifecycle.service.d.ts +17 -1
- package/dist/services/thread-lifecycle.service.d.ts.map +1 -1
- package/dist/services/thread-lifecycle.service.js +47 -6
- package/dist/services/thread-lifecycle.service.js.map +1 -1
- package/dist/services/thread-log-reader.d.ts +81 -0
- package/dist/services/thread-log-reader.d.ts.map +1 -0
- package/dist/services/thread-log-reader.js +141 -0
- package/dist/services/thread-log-reader.js.map +1 -0
- package/dist/services/thread-purge.service.d.ts +200 -0
- package/dist/services/thread-purge.service.d.ts.map +1 -0
- package/dist/services/thread-purge.service.js +644 -0
- package/dist/services/thread-purge.service.js.map +1 -0
- package/dist/services/topic.service.d.ts +44 -2
- package/dist/services/topic.service.d.ts.map +1 -1
- package/dist/services/topic.service.js +74 -13
- package/dist/services/topic.service.js.map +1 -1
- package/dist/services/usage/usage-inbox-notifier.d.ts +50 -0
- package/dist/services/usage/usage-inbox-notifier.d.ts.map +1 -0
- package/dist/services/usage/usage-inbox-notifier.js +118 -0
- package/dist/services/usage/usage-inbox-notifier.js.map +1 -0
- package/dist/services/usage/usage-poller.service.d.ts +41 -0
- package/dist/services/usage/usage-poller.service.d.ts.map +1 -0
- package/dist/services/usage/usage-poller.service.js +67 -0
- package/dist/services/usage/usage-poller.service.js.map +1 -0
- package/dist/services/usage/usage-snapshot-provider.d.ts +40 -0
- package/dist/services/usage/usage-snapshot-provider.d.ts.map +1 -0
- package/dist/services/usage/usage-snapshot-provider.js +89 -0
- package/dist/services/usage/usage-snapshot-provider.js.map +1 -0
- package/dist/services/usage/usage-types.d.ts +28 -0
- package/dist/services/usage/usage-types.d.ts.map +1 -0
- package/dist/services/usage/usage-types.js +14 -0
- package/dist/services/usage/usage-types.js.map +1 -0
- package/dist/services/worker-birth.d.ts +154 -0
- package/dist/services/worker-birth.d.ts.map +1 -0
- package/dist/services/worker-birth.js +274 -0
- package/dist/services/worker-birth.js.map +1 -0
- package/dist/services/worker-cleanup.service.d.ts +242 -19
- package/dist/services/worker-cleanup.service.d.ts.map +1 -1
- package/dist/services/worker-cleanup.service.js +893 -355
- package/dist/services/worker-cleanup.service.js.map +1 -1
- package/dist/services/worker-lifecycle-executor.d.ts +42 -0
- package/dist/services/worker-lifecycle-executor.d.ts.map +1 -0
- package/dist/services/worker-lifecycle-executor.js +63 -0
- package/dist/services/worker-lifecycle-executor.js.map +1 -0
- package/dist/services/worker-single-use.d.ts +92 -0
- package/dist/services/worker-single-use.d.ts.map +1 -0
- package/dist/services/worker-single-use.js +155 -0
- package/dist/services/worker-single-use.js.map +1 -0
- package/dist/sessions/mcp-registry.d.ts +33 -2
- package/dist/sessions/mcp-registry.d.ts.map +1 -1
- package/dist/sessions/mcp-registry.js +153 -30
- package/dist/sessions/mcp-registry.js.map +1 -1
- package/dist/test-bootstrap.d.ts +19 -12
- package/dist/test-bootstrap.d.ts.map +1 -1
- package/dist/test-bootstrap.js +69 -21
- package/dist/test-bootstrap.js.map +1 -1
- package/dist/test-tripwire.test-support.d.ts +75 -0
- package/dist/test-tripwire.test-support.d.ts.map +1 -0
- package/dist/test-tripwire.test-support.js +353 -0
- package/dist/test-tripwire.test-support.js.map +1 -0
- package/dist/tools/defs/memory-defs.d.ts.map +1 -1
- package/dist/tools/defs/memory-defs.js +12 -4
- package/dist/tools/defs/memory-defs.js.map +1 -1
- package/dist/tools/defs/session-defs.d.ts.map +1 -1
- package/dist/tools/defs/session-defs.js +26 -10
- package/dist/tools/defs/session-defs.js.map +1 -1
- package/dist/tools/defs/utility-defs.js +1 -1
- package/dist/tools/defs/utility-defs.js.map +1 -1
- package/dist/tools/delegate-tool.d.ts +81 -1
- package/dist/tools/delegate-tool.d.ts.map +1 -1
- package/dist/tools/delegate-tool.js +840 -219
- package/dist/tools/delegate-tool.js.map +1 -1
- package/dist/tools/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory-tools.js +66 -9
- package/dist/tools/memory-tools.js.map +1 -1
- package/dist/tools/response-builders.d.ts.map +1 -1
- package/dist/tools/response-builders.js +12 -8
- package/dist/tools/response-builders.js.map +1 -1
- package/dist/tools/session-tools.d.ts.map +1 -1
- package/dist/tools/session-tools.js +3 -32
- package/dist/tools/session-tools.js.map +1 -1
- package/dist/tools/skill-tools.js +1 -1
- package/dist/tools/skill-tools.js.map +1 -1
- package/dist/tools/start-session-tool.d.ts.map +1 -1
- package/dist/tools/start-session-tool.js +66 -20
- package/dist/tools/start-session-tool.js.map +1 -1
- package/dist/tools/utility-tools.d.ts.map +1 -1
- package/dist/tools/utility-tools.js +38 -3
- package/dist/tools/utility-tools.js.map +1 -1
- package/dist/tools/wait/auto-forward.d.ts.map +1 -1
- package/dist/tools/wait/auto-forward.js +8 -3
- package/dist/tools/wait/auto-forward.js.map +1 -1
- package/dist/tools/wait/consolidation-strategy.d.ts +42 -0
- package/dist/tools/wait/consolidation-strategy.d.ts.map +1 -0
- package/dist/tools/wait/consolidation-strategy.js +50 -0
- package/dist/tools/wait/consolidation-strategy.js.map +1 -0
- package/dist/tools/wait/drive-handler.d.ts +5 -7
- package/dist/tools/wait/drive-handler.d.ts.map +1 -1
- package/dist/tools/wait/drive-handler.js +45 -59
- package/dist/tools/wait/drive-handler.js.map +1 -1
- package/dist/tools/wait/media-processor.d.ts.map +1 -1
- package/dist/tools/wait/media-processor.js +8 -4
- package/dist/tools/wait/media-processor.js.map +1 -1
- package/dist/tools/wait/message-delivery.d.ts +9 -6
- package/dist/tools/wait/message-delivery.d.ts.map +1 -1
- package/dist/tools/wait/message-delivery.js +77 -58
- package/dist/tools/wait/message-delivery.js.map +1 -1
- package/dist/tools/wait/message-processing.d.ts.map +1 -1
- package/dist/tools/wait/message-processing.js +2 -1
- package/dist/tools/wait/message-processing.js.map +1 -1
- package/dist/tools/wait/poll-loop.d.ts.map +1 -1
- package/dist/tools/wait/poll-loop.js +339 -239
- package/dist/tools/wait/poll-loop.js.map +1 -1
- package/package.json +4 -3
- package/templates/azure-devops-securevault.default.md +20 -6
- package/templates/board-quality-checklist.default.md +121 -0
- package/templates/buildless-vue-preview.default.md +47 -0
- package/templates/expert-code-review.default.md +12 -0
- package/templates/handoff.default.md +41 -18
- package/templates/increment-pr-pipeline.default.md +79 -0
- package/templates/swarm.default.md +1 -0
- package/templates/worker-autonomous.default.md +1 -0
- package/templates/worker-delegate.default.md +1 -0
- package/dist/dashboard/log-parser.d.ts +0 -65
- package/dist/dashboard/log-parser.d.ts.map +0 -1
- package/dist/dashboard/log-parser.js +0 -219
- package/dist/dashboard/log-parser.js.map +0 -1
- package/dist/data/memory/reflection-dedup.d.ts +0 -17
- package/dist/data/memory/reflection-dedup.d.ts.map +0 -1
- package/dist/data/memory/reflection-dedup.js +0 -55
- package/dist/data/memory/reflection-dedup.js.map +0 -1
- package/dist/data/memory/reflection-gates.d.ts +0 -40
- package/dist/data/memory/reflection-gates.d.ts.map +0 -1
- package/dist/data/memory/reflection-gates.js +0 -220
- package/dist/data/memory/reflection-gates.js.map +0 -1
- package/dist/data/memory/reflection-sources.d.ts +0 -13
- package/dist/data/memory/reflection-sources.d.ts.map +0 -1
- package/dist/data/memory/reflection-sources.js +0 -115
- package/dist/data/memory/reflection-sources.js.map +0 -1
- package/dist/data/memory/reflection.d.ts +0 -43
- package/dist/data/memory/reflection.d.ts.map +0 -1
- package/dist/data/memory/reflection.js +0 -329
- package/dist/data/memory/reflection.js.map +0 -1
- package/dist/llm/prompts/reflection.d.ts +0 -6
- package/dist/llm/prompts/reflection.d.ts.map +0 -1
- package/dist/llm/prompts/reflection.js +0 -77
- package/dist/llm/prompts/reflection.js.map +0 -1
- package/dist/services/memory-pruning.service.d.ts +0 -12
- package/dist/services/memory-pruning.service.d.ts.map +0 -1
- package/dist/services/memory-pruning.service.js +0 -179
- package/dist/services/memory-pruning.service.js.map +0 -1
- package/templates/daily-review.default.md +0 -26
- package/templates/fire-and-forget.default.md +0 -76
- package/templates/offload.default.md +0 -33
- package/templates/sensorium-repair.default.md +0 -114
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { Database } from "./schema.js";
|
|
8
8
|
import type { IThreadRepository } from "../interfaces.js";
|
|
9
|
+
import { Optional } from "../optional.js";
|
|
9
10
|
export interface ThreadRegistryEntry {
|
|
10
11
|
id: number;
|
|
11
12
|
threadId: number;
|
|
12
13
|
name: string;
|
|
13
14
|
type: "root" | "daily" | "branch" | "worker";
|
|
14
15
|
rootThreadId: number | null;
|
|
16
|
+
notifyThreadId: number | null;
|
|
15
17
|
badge: string;
|
|
16
18
|
client: string;
|
|
17
19
|
maxRetries: number;
|
|
@@ -26,7 +28,9 @@ export interface ThreadRegistryEntry {
|
|
|
26
28
|
lastActiveAt: string | null;
|
|
27
29
|
sessionResetAt: string | null;
|
|
28
30
|
cleanShutdown: boolean;
|
|
29
|
-
|
|
31
|
+
/** Mirrors the persisted thread_registry status CHECK (schema-ddl.ts / migration 23).
|
|
32
|
+
* Narrower than the CHECK would make reads an unchecked cast. */
|
|
33
|
+
status: "created" | "spawning" | "active" | "stuck" | "exiting" | "exited" | "archived" | "expired";
|
|
30
34
|
archivedAt: string | null;
|
|
31
35
|
summary: string | null;
|
|
32
36
|
}
|
|
@@ -35,6 +39,7 @@ type RegisterThreadEntry = {
|
|
|
35
39
|
name: string;
|
|
36
40
|
type: ThreadRegistryEntry["type"];
|
|
37
41
|
rootThreadId?: number;
|
|
42
|
+
notifyThreadId?: number;
|
|
38
43
|
badge?: string;
|
|
39
44
|
client?: string;
|
|
40
45
|
maxRetries?: number;
|
|
@@ -53,37 +58,238 @@ export declare class ThreadRepository implements IThreadRepository {
|
|
|
53
58
|
getRootThreads(db: Database): ThreadRegistryEntry[];
|
|
54
59
|
}
|
|
55
60
|
export declare const threadRepository: ThreadRepository;
|
|
61
|
+
/**
|
|
62
|
+
* The row seam, and the one place the minted-id rule is stated for `thread_registry`.
|
|
63
|
+
*
|
|
64
|
+
* A worker's identity is MINTED ({@link mintThreadId}, called from `birthWorker`), so a
|
|
65
|
+
* `type = 'worker'` row below {@link MINTED_THREAD_ID_FLOOR} is not a worker anything
|
|
66
|
+
* mints — it is a Telegram topic number wearing a worker's type, and every id-reuse
|
|
67
|
+
* failure this line has chased (a worker inheriting an earlier occupant's lifecycle, a
|
|
68
|
+
* sweep deleting a live thread's forum topic because the id IS the topic) starts there.
|
|
69
|
+
*
|
|
70
|
+
* It is refused HERE because this statement is where `type` enters the table: the INSERT
|
|
71
|
+
* writes `entry.type`, and the ON CONFLICT arm below either PRESERVES the stored type
|
|
72
|
+
* (while `keep_alive = 1`) or writes `excluded.type`, which is this same `entry.type`.
|
|
73
|
+
* No other writer introduces one — `UpdateThreadPatch` has no `type` field, and
|
|
74
|
+
* `handleConvertToRoot`'s direct UPDATE writes the literal 'root'. A preserved type was
|
|
75
|
+
* therefore introduced by an earlier call through this guard, or predates migration 39,
|
|
76
|
+
* which purged what did.
|
|
77
|
+
*
|
|
78
|
+
* It THROWS where the entrances above it answer in prose. `handleCreateThread` and
|
|
79
|
+
* `handleStartThread` refuse their own callers with a sentence naming the one way to get
|
|
80
|
+
* a worker, because those callers are an agent or an HTTP client that can act on it;
|
|
81
|
+
* an entry arriving here already carries the contradiction, and there is no row this
|
|
82
|
+
* function could write instead that the caller asked for.
|
|
83
|
+
*/
|
|
56
84
|
export declare function registerThread(db: Database, entry: RegisterThreadEntry): ThreadRegistryEntry;
|
|
85
|
+
/**
|
|
86
|
+
* Allocate a thread id that no thread has ever held and none ever will again —
|
|
87
|
+
* GIVEN the allocating INSERT autocommits, which is what the first guard enforces.
|
|
88
|
+
* Inside an enclosing `db.transaction`, SQLite's AUTOINCREMENT mark rolls back with
|
|
89
|
+
* everything else and the next mint is handed the same number (measured), so the
|
|
90
|
+
* promise is not available mid-transaction and is refused rather than weakened.
|
|
91
|
+
*
|
|
92
|
+
* That refusal breaks no correct caller, because the sound order is mint, commit,
|
|
93
|
+
* then register: the id has to be durable before any row, file, process or wire
|
|
94
|
+
* message names it. A caller wanting mint-and-register atomically still mints first
|
|
95
|
+
* and tolerates the gap on a crash — a minted-never-used id is this design's native
|
|
96
|
+
* waste product, and never reusing one is exactly what makes those gaps free.
|
|
97
|
+
*
|
|
98
|
+
* Why the sequence is shaped the way it is — and why the mark survives a hard
|
|
99
|
+
* `deleteThread` and the 180-day purge — is argued on THREAD_ID_SEQUENCE_DDL. The
|
|
100
|
+
* trim that keeps the table at one row carries a WHERE and so cannot lower it.
|
|
101
|
+
*
|
|
102
|
+
* The floor is asserted rather than assumed. An id below it is a Telegram topic
|
|
103
|
+
* number as far as every reader of `thread_registry.thread_id` is concerned, and the
|
|
104
|
+
* two states that produce one — an unseeded sequence, or a lowered floor — are
|
|
105
|
+
* both silent. Refusing to mint is the only answer a caller cannot paper over.
|
|
106
|
+
*/
|
|
107
|
+
export declare function mintThreadId(db: Database): number;
|
|
57
108
|
export declare function getThread(db: Database, threadId: number): ThreadRegistryEntry | null;
|
|
109
|
+
/** Registry badge marking an ephemeral task-board card worker. */
|
|
110
|
+
export declare const BOARD_WORKER_BADGE = "board-worker";
|
|
111
|
+
/**
|
|
112
|
+
* Whether a thread's own episodic memory writes are suppressed. Currently true
|
|
113
|
+
* for ephemeral board-card workers, whose state lives in card comments rather
|
|
114
|
+
* than Sensorium episodes. Named for the memory concern so the episode layer
|
|
115
|
+
* asks a memory-domain question and never learns the board badge value.
|
|
116
|
+
*/
|
|
117
|
+
export declare function suppressesEpisodicMemory(db: Database, threadId: number): boolean;
|
|
58
118
|
export declare function getThreadByName(db: Database, name: string): ThreadRegistryEntry | null;
|
|
59
119
|
export declare function getThreadsByRoot(db: Database, rootThreadId: number): ThreadRegistryEntry[];
|
|
60
120
|
export declare function getRootThreads(db: Database): ThreadRegistryEntry[];
|
|
61
|
-
|
|
121
|
+
/**
|
|
122
|
+
* All non-worker, non-archived threads. The nightly memory pass (consolidation,
|
|
123
|
+
* reflection, narrative) runs for every one of these — memory integrity is
|
|
124
|
+
* required by all threads, not just those opted into session rotation. Workers
|
|
125
|
+
* are excluded because their memory is no-persist (discarded on decommission).
|
|
126
|
+
*/
|
|
127
|
+
export declare function getConsolidationThreads(db: Database): ThreadRegistryEntry[];
|
|
62
128
|
export declare function getKeepAliveThreads(db: Database): ThreadRegistryEntry[];
|
|
63
129
|
export declare function getAllThreads(db: Database): ThreadRegistryEntry[];
|
|
64
130
|
export declare function getActiveThreads(db: Database): ThreadRegistryEntry[];
|
|
65
131
|
/** All non-archived threads — for dashboard display. */
|
|
66
132
|
export declare function getDashboardThreads(db: Database): ThreadRegistryEntry[];
|
|
67
133
|
export declare function updateThread(db: Database, threadId: number, updates: UpdateThreadPatch): boolean;
|
|
134
|
+
/** Archive a row. False when there is no row, a start holds it ('spawning'), or a
|
|
135
|
+
* purge has marked it — re-stamping archived_at under a purge would be a false 200. */
|
|
68
136
|
export declare function archiveThread(db: Database, threadId: number): boolean;
|
|
69
137
|
export declare function unarchiveThread(db: Database, threadId: number): boolean;
|
|
70
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Archived threads, workers EXCLUDED by default.
|
|
140
|
+
*
|
|
141
|
+
* The exclusion is right for the overview this feed was written for — a swarm
|
|
142
|
+
* run leaves dozens of decommissioned workers that would bury the handful of
|
|
143
|
+
* roots and branches an operator actually recognises. It was wrong as the ONLY
|
|
144
|
+
* answer: this is the single feed behind the archived-threads tab, which is the
|
|
145
|
+
* single place the permanent delete can be invoked from, and 220 of the 225
|
|
146
|
+
* per-thread config dirs on the live host (230 of its 320 MB) belong to exactly
|
|
147
|
+
* the archived workers it hid. The delete API itself never had a type filter —
|
|
148
|
+
* only the list did — so the bytes were unreachable rather than protected.
|
|
149
|
+
*
|
|
150
|
+
* `includeWorkers` is opt-in so every existing caller keeps the behaviour it
|
|
151
|
+
* was written against.
|
|
152
|
+
*/
|
|
153
|
+
export declare function getArchivedThreads(db: Database, opts?: {
|
|
154
|
+
includeWorkers?: boolean;
|
|
155
|
+
}): ThreadRegistryEntry[];
|
|
156
|
+
/**
|
|
157
|
+
* Drop ONLY the registry row. Not a purge, and not reachable from the operator's
|
|
158
|
+
* delete any more — that goes through `purgeThread`, which takes every dependent
|
|
159
|
+
* table with it.
|
|
160
|
+
*
|
|
161
|
+
* It stays because worker-birth's PRE-SPAWN teardown wants exactly this: a row it
|
|
162
|
+
* registered moments ago, for a worker no process has run as, so nothing has been
|
|
163
|
+
* written against the id yet and there is nothing for a purge to find.
|
|
164
|
+
* `purgeThread` would refuse that row (no purge marked it: it is active, not
|
|
165
|
+
* archived). Do not reach for this to retire a thread that has ever run.
|
|
166
|
+
*/
|
|
71
167
|
export declare function deleteThread(db: Database, threadId: number): boolean;
|
|
72
168
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
169
|
+
* How long an archived thread survives before the daily sweep purges it.
|
|
170
|
+
*
|
|
171
|
+
* Was 180 days. The sweep is a floor, not the only way out — an archived thread
|
|
172
|
+
* now also has an explicit, operator-driven permanent delete (purgeThread +
|
|
173
|
+
* purgeThreadFiles, surfaced as `DELETE /api/threads/:id?hard=true`). With a
|
|
174
|
+
* deliberate path available, the automatic one no longer has to be the thing
|
|
175
|
+
* that reclaims disk, so the window is long enough that nothing is ever lost to
|
|
176
|
+
* a timer the operator forgot about. Exported so operator-facing text states
|
|
177
|
+
* the real number instead of a stale literal.
|
|
178
|
+
*/
|
|
179
|
+
export declare const ARCHIVED_THREAD_PURGE_DAYS = 730;
|
|
180
|
+
/**
|
|
181
|
+
* Mark an archived row as being purged, answering the stamp written: the fence
|
|
182
|
+
* a finisher must still see to act. Empty means the purge lost: the row is not
|
|
183
|
+
* archived any more (a start claimed it), already marked, gone, or — when
|
|
184
|
+
* `archivedAt` is given — re-archived with a newer stamp than the one judged.
|
|
76
185
|
*/
|
|
77
|
-
export declare function
|
|
186
|
+
export declare function markThreadPurging(db: Database, threadId: number, archivedAt?: string): Optional<string>;
|
|
187
|
+
/** True while a purge owns the row (markThreadPurging): every door refuses it. */
|
|
188
|
+
export declare function isThreadMarkedForPurge(db: Database, threadId: number): boolean;
|
|
189
|
+
/** The mark a purge holds on the row now, or empty when none does. */
|
|
190
|
+
export declare function threadPurgeMark(db: Database, threadId: number): Optional<string>;
|
|
191
|
+
/**
|
|
192
|
+
* What a start's claim on a thread row found:
|
|
193
|
+
* - "claimed": the row was resting (`previous`) and is now `claimedAs`, so the
|
|
194
|
+
* start owns it and must hand it back (releaseThreadStart) if it does not go
|
|
195
|
+
* ahead;
|
|
196
|
+
* - "free": nothing to take — no row yet, or a row a process is already on;
|
|
197
|
+
* - "starting": the row is 'spawning' — another start holds it between its
|
|
198
|
+
* claim and its spawn's answer. A spawning start (start_thread, dashboard
|
|
199
|
+
* /start) must refuse ("already starting") rather than write the same id's
|
|
200
|
+
* files beside it (inc66 M3); start_session attaches instead, taking nothing;
|
|
201
|
+
* - "purging": a purge owns the row, and the start must refuse.
|
|
202
|
+
*/
|
|
203
|
+
export type ThreadStartClaim = {
|
|
204
|
+
kind: "claimed";
|
|
205
|
+
previous: string;
|
|
206
|
+
claimedAs: "spawning" | "active";
|
|
207
|
+
} | {
|
|
208
|
+
kind: "free";
|
|
209
|
+
} | {
|
|
210
|
+
kind: "starting";
|
|
211
|
+
} | {
|
|
212
|
+
kind: "purging";
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Every start of an existing id calls this BEFORE its first file write. It flips
|
|
216
|
+
* a resting row to `status` ('spawning' for a spawn, 'active' for a session that
|
|
217
|
+
* revives its thread), which is a state a purge refuses to mark. Synchronous and
|
|
218
|
+
* in one transaction, so the read, the flip and the note restore see the same row.
|
|
219
|
+
* A revived ARCHIVED row gets its archived notes back, exactly as unarchiveThread.
|
|
220
|
+
*/
|
|
221
|
+
export declare function claimThreadStart(db: Database, threadId: number, status: "spawning" | "active"): ThreadStartClaim;
|
|
222
|
+
/** Hand a claimed row back to the status it was taken from when its start failed. */
|
|
223
|
+
export declare function releaseThreadStart(db: Database, threadId: number, claim: ThreadStartClaim): void;
|
|
224
|
+
/**
|
|
225
|
+
* Delete ONE thread's entire DB footprint — the registry row, then every table in
|
|
226
|
+
* THREAD_DEPENDENT_DELETES — in a single transaction. This is the LAST step of a
|
|
227
|
+
* purge: only a row still carrying the exact mark `purgingAt` this purge holds is
|
|
228
|
+
* deleted, so a row nobody marked, one a start took first, or a successor's row
|
|
229
|
+
* marked again matches nothing and the purge touches no dependent row. A row
|
|
230
|
+
* already gone means another purge finished it, and anything still keyed to the
|
|
231
|
+
* id is an orphan, which this cleans up. Returns true when this call deleted the
|
|
232
|
+
* registry row.
|
|
233
|
+
*
|
|
234
|
+
* DB only. On-disk per-thread artifacts are purgeThreadFiles' job
|
|
235
|
+
* (src/services/thread-purge.service.ts), and they are removed BEFORE this runs.
|
|
236
|
+
*/
|
|
237
|
+
export declare function purgeThread(db: Database, threadId: number, purgingAt: string): boolean;
|
|
238
|
+
/** Rows a purge marked and has not finished, with each mark: a crash between
|
|
239
|
+
* mark and row delete, a leftover that kept the rows, or a purge still awaiting
|
|
240
|
+
* its file work. */
|
|
241
|
+
export declare function selectThreadsMidPurge(db: Database): {
|
|
242
|
+
threadId: number;
|
|
243
|
+
purgingAt: string;
|
|
244
|
+
}[];
|
|
245
|
+
/**
|
|
246
|
+
* One archived row carrying an archive anchor, STRAIGHT FROM THE DB AND
|
|
247
|
+
* UNVALIDATED. The column types are what the schema declares, not what SQLite
|
|
248
|
+
* enforces: `thread_id` becomes a filesystem path segment and `archived_at`
|
|
249
|
+
* decides whether a thread is old enough to destroy, so the purge service
|
|
250
|
+
* validates both before either is used (isPurgeableThreadId and archiveAnchorMs
|
|
251
|
+
* in sweepOldArchivedThreads).
|
|
252
|
+
*/
|
|
253
|
+
export interface AnchoredArchivedRow {
|
|
254
|
+
threadId: number;
|
|
255
|
+
archivedAt: string;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Every archived thread that has an archive anchor — NOT a cutoff query, and
|
|
259
|
+
* nothing is deleted here. The age test lives in the sweep, in JavaScript, on
|
|
260
|
+
* parsed instants: `archived_at < cutoff` in SQL is a TEXT comparison, so a
|
|
261
|
+
* stamp that is not a canonical UTC ISO instant (`...-02:00`, a different
|
|
262
|
+
* precision) compares by characters rather than by time, and this is the
|
|
263
|
+
* predicate of an unattended delete.
|
|
264
|
+
*
|
|
265
|
+
* The sweep also has to gate each candidate on liveness — an async question no
|
|
266
|
+
* SQLite transaction can hold open — which is why selection and deletion are
|
|
267
|
+
* separate calls at all: `sweepOldArchivedThreads` in
|
|
268
|
+
* services/thread-purge.service.ts selects, validates, gates, marks, then purges.
|
|
269
|
+
*
|
|
270
|
+
* ANCHORED ON `archived_at`, NOT `last_active_at`. "730 days of grace after
|
|
271
|
+
* archiving" is what the window means, and last activity does not express it: a
|
|
272
|
+
* thread archived today whose last message was three years ago was eligible on
|
|
273
|
+
* the very next sweep. Every archived row has an anchor: updateThread derives it
|
|
274
|
+
* from the status, and migration 40 stamped the rows archived before it did.
|
|
275
|
+
*/
|
|
276
|
+
export declare function selectAnchoredArchivedThreads(db: Database): AnchoredArchivedRow[];
|
|
78
277
|
/**
|
|
79
278
|
* Reset the daily session timestamp for a thread.
|
|
80
279
|
* Sets session_reset_at = now, used by bootstrap to filter the message buffer.
|
|
81
280
|
*/
|
|
82
281
|
export declare function resetDailySession(db: Database, threadId: number): boolean;
|
|
83
282
|
/**
|
|
84
|
-
* Mark a thread's session as running (clean_shutdown = 0). Called
|
|
85
|
-
*
|
|
86
|
-
*
|
|
283
|
+
* Mark a thread's session as running (clean_shutdown = 0). Called from
|
|
284
|
+
* start_session, and the only write that clears the flag.
|
|
285
|
+
*
|
|
286
|
+
* The column now carries ONE meaning that code acts on: 0 = "the process
|
|
287
|
+
* currently attached to this thread reached start_session". spawn-common's
|
|
288
|
+
* registerSpawnedProcess sets it back to 1 for every new process, and the
|
|
289
|
+
* birth-death respawn net reads it to tell a thread that died before it ever
|
|
290
|
+
* registered from one that ran and then exited. (Its original job — letting the
|
|
291
|
+
* next resume notice an interrupted session — is handled by the memory
|
|
292
|
+
* briefing's self-judge prompt instead.)
|
|
87
293
|
*/
|
|
88
294
|
export declare function markSessionRunning(db: Database, threadId: number): boolean;
|
|
89
295
|
/**
|
|
@@ -91,8 +297,13 @@ export declare function markSessionRunning(db: Database, threadId: number): bool
|
|
|
91
297
|
* alive at graceful exit (SIGTERM/SIGINT, maintenance restart), so a planned
|
|
92
298
|
* server stop is not mistaken for a crash by the threads it takes down.
|
|
93
299
|
* A thread that had already crashed lingers as status='active' but is absent
|
|
94
|
-
* from aliveThreadIds, so its
|
|
95
|
-
*
|
|
300
|
+
* from aliveThreadIds, so its flag stays 0. An empty list marks nothing.
|
|
301
|
+
*
|
|
302
|
+
* In the {@link markSessionRunning} reading this says "no live process of ours
|
|
303
|
+
* is registered on that thread any more", which is true — the server is exiting.
|
|
304
|
+
* Agent children are detached and outlive it, so nothing re-reads the flag until
|
|
305
|
+
* they are re-adopted or respawned, and the respawn net's uptime window keeps a
|
|
306
|
+
* long-lived survivor out of scope.
|
|
96
307
|
*/
|
|
97
308
|
export declare function markAliveThreadsCleanShutdown(db: Database, aliveThreadIds: number[]): number;
|
|
98
309
|
/**
|
|
@@ -108,9 +319,113 @@ export declare function resolveTelegramTopicId(db: Database, threadId: number):
|
|
|
108
319
|
*/
|
|
109
320
|
export declare function getExplicitTelegramTopicId(db: Database, threadId: number): number | null;
|
|
110
321
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
322
|
+
* Record that `topicId` is gone by clearing the thread's stored pointer — only while
|
|
323
|
+
* the pointer still names `topicId`. A compare-and-clear, because every caller clears
|
|
324
|
+
* after an AWAITED delete: a pointer written in the meantime (the dashboard PATCH)
|
|
325
|
+
* names a topic that caller never deleted, and blanking it would hide that topic from
|
|
326
|
+
* the orphan sweep, which selects only stored pointers. Returns whether it cleared.
|
|
327
|
+
*/
|
|
328
|
+
export declare function clearTelegramTopicIdIfStill(db: Database, threadId: number, topicId: number): boolean;
|
|
329
|
+
/**
|
|
330
|
+
* The topic number a DESTRUCTIVE teardown may aim at, stated once so no call site
|
|
331
|
+
* has to guess. Three arms, and the third is the point:
|
|
332
|
+
*
|
|
333
|
+
* 1. the explicit pointer when the row carries one — the only positive evidence of
|
|
334
|
+
* which topic this thread owns;
|
|
335
|
+
* 2. else the thread id itself, but ONLY below {@link MINTED_THREAD_ID_FLOOR}: a
|
|
336
|
+
* NULL column on a topic-numbered thread means the id IS the topic, which is
|
|
337
|
+
* still true of every thread not born on the board's minting path;
|
|
338
|
+
* 3. else NOTHING. A minted id is not a topic number — the floor sits above int32
|
|
339
|
+
* and Telegram topic ids are int32 — so falling back to it aims the delete at a
|
|
340
|
+
* number no topic can have. Telegram answers TOPIC_ID_INVALID, which teardown
|
|
341
|
+
* reads as "already gone", and the real topic is archived out of reach of every
|
|
342
|
+
* sweep that looks for a stored pointer. Returning nothing is safe precisely
|
|
343
|
+
* because no topic is recorded: there is no delete to retry later, so a caller
|
|
344
|
+
* may treat the empty answer as a reached end state rather than a failure.
|
|
345
|
+
*
|
|
346
|
+
* Arm 2 becomes dead code once no below-floor worker remains.
|
|
347
|
+
*/
|
|
348
|
+
export declare function resolveDeletableTelegramTopicId(db: Database, threadId: number): Optional<number>;
|
|
349
|
+
/**
|
|
350
|
+
* The liveness predicate for a Telegram topic: which OTHER live thread, if any,
|
|
351
|
+
* still claims `topicId`.
|
|
352
|
+
*
|
|
353
|
+
* A Telegram topic is a shared, externally owned, DESTRUCTIVE resource, and this
|
|
354
|
+
* is the one question every delete site must ask first. Three separate paths
|
|
355
|
+
* (a stale `decommissionWorker` that continued past a failed transition, the
|
|
356
|
+
* periodic archived-worker orphan sweep, and the dashboard archive/hard-delete
|
|
357
|
+
* route) each resolved a topic and deleted it while a live thread still owned it,
|
|
358
|
+
* because each checked only its OWN row.
|
|
359
|
+
*
|
|
360
|
+
* Two arms, both load-bearing:
|
|
361
|
+
* - `telegram_topic_id = ?` — the explicit claim.
|
|
362
|
+
* - `telegram_topic_id IS NULL AND thread_id = ?` — the IMPLICIT claim.
|
|
363
|
+
* `resolveTelegramTopicId` reads a NULL column as "my topic is my thread_id",
|
|
364
|
+
* so a live row with a NULL column genuinely owns that topic number. Without
|
|
365
|
+
* this arm the orphan sweep can delete a live thread's topic.
|
|
366
|
+
*
|
|
367
|
+
* `excludingThreadId` is the thread doing the deleting: it must never count
|
|
368
|
+
* itself as a claimant, or the ordinary case (a row tearing down the topic it
|
|
369
|
+
* alone holds) would stop deleting anything at all.
|
|
370
|
+
*
|
|
371
|
+
* Synchronous, like every other read here — which is what lets the dashboard's
|
|
372
|
+
* sync `handleDeleteThread` gate its fire-and-forget delete without becoming
|
|
373
|
+
* async and without moving its response.
|
|
374
|
+
*/
|
|
375
|
+
export declare function liveThreadClaimingTopic(db: Database, topicId: number, excludingThreadId: number): Optional<number>;
|
|
376
|
+
/**
|
|
377
|
+
* The routing half of the ownership question: which thread, if any, should
|
|
378
|
+
* receive a message that arrived in `topicId`.
|
|
379
|
+
*
|
|
380
|
+
* TWO STAGES, and the priority between them is the point:
|
|
381
|
+
* 1. the LIVE owner — `TERMINAL_TOPIC_STATUSES` excluded, as the delete gate
|
|
382
|
+
* does;
|
|
383
|
+
* 2. only when stage 1 is empty, the `exited` row that explicitly claims it.
|
|
384
|
+
*
|
|
385
|
+
* The stages are two SEQUENTIAL QUERIES with an early return, NOT an ordering
|
|
386
|
+
* inside one SELECT, and the distinction is worth stating because the paragraph
|
|
387
|
+
* below argues against an `ORDER BY`. The thing rejected there is an ARBITRARY
|
|
388
|
+
* tiebreak between rows no requirement ranks; this is a named priority between
|
|
389
|
+
* two different QUESTIONS, asked in order. A reader must not take one for the
|
|
390
|
+
* other.
|
|
391
|
+
*
|
|
392
|
+
* LIVE ALWAYS BEATS EXITED. That ordering is what stops a dead predecessor
|
|
393
|
+
* stealing a live successor's messages when both claim one topic — a state the
|
|
394
|
+
* dashboard PATCH route makes reachable today, and one that mint-once thread ids
|
|
395
|
+
* will GUARANTEE, since every respawn then has an exited row and a live row on
|
|
396
|
+
* the same topic by design.
|
|
397
|
+
*
|
|
398
|
+
* Stage 2 admits `exited` and only `exited`. `exited` → Active is a legal
|
|
399
|
+
* transition (`VALID_TRANSITIONS`), the dashboard permits starting an exited
|
|
400
|
+
* thread, and the wait poll loop evicts a parked agent only on `archived` /
|
|
401
|
+
* `expired` — so an exited row is one that may still be listening at its logical
|
|
402
|
+
* id, or be resumed to consume its backlog, while a message left at
|
|
403
|
+
* `<topicId>.jsonl` is read by nothing. `expired` stays OUT because `expired` →
|
|
404
|
+
* Active is structurally forbidden (Expired goes only to Archived) and the
|
|
405
|
+
* dashboard refuses to start it; `archived` stays OUT because an archived thread
|
|
406
|
+
* resumes by being REMAPPED onto a new topic while its old one is torn down by
|
|
407
|
+
* design.
|
|
408
|
+
*
|
|
409
|
+
* Only the EXPLICIT claim, in both stages. `liveThreadClaimingTopic`'s second arm
|
|
410
|
+
* (`telegram_topic_id IS NULL AND thread_id = ?`) is dead for routing: it can
|
|
411
|
+
* only ever answer `thread_id`, which equals `topicId`, which is already what the
|
|
412
|
+
* caller falls back to when this returns empty.
|
|
413
|
+
*
|
|
414
|
+
* No ORDER BY, matching the sibling. No LIFECYCLE writer can give two rows the
|
|
415
|
+
* same explicit `telegram_topic_id`: the column's one write seam is
|
|
416
|
+
* `updateThread`, every lifecycle caller writes either the row's own `thread_id`
|
|
417
|
+
* or an id Telegram just minted for that write, and the orphan sweep and
|
|
418
|
+
* `decommissionWorker` only clear.
|
|
419
|
+
* Minted ids are assumed unique within the configured chat — Telegram's
|
|
420
|
+
* numbering, not ours; unenforced here, and void if this registry is ever pointed
|
|
421
|
+
* at a different chat. The dashboard PATCH route (`buildThreadUpdates`) is the
|
|
422
|
+
* known exception: it writes any number the operator sends, so a two-claimant
|
|
423
|
+
* pair is operator-reachable, and WITHIN one stage this query then returns
|
|
424
|
+
* whichever row SQLite scans first — exactly the base behaviour. An ORDER BY
|
|
425
|
+
* would encode a winner no requirement names. The typed-open
|
|
426
|
+
* `ActivateThreadInput` / `TouchThreadInput` seam accepts a `telegramTopicId`
|
|
427
|
+
* too, with no production caller passing one today.
|
|
113
428
|
*/
|
|
114
|
-
export declare function
|
|
429
|
+
export declare function threadOwningTopic(db: Database, topicId: number): Optional<number>;
|
|
115
430
|
export {};
|
|
116
431
|
//# sourceMappingURL=thread-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-registry.d.ts","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"thread-registry.d.ts","sourceRoot":"","sources":["../../../src/data/memory/thread-registry.ts"],"names":[],"mappings":"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"}
|