bikky 0.4.0 → 0.4.1
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/CHANGELOG.md +20 -0
- package/CODE_OF_CONDUCT.md +80 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +32 -2
- package/SECURITY.md +58 -0
- package/SUPPORT.md +22 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.js +72 -0
- package/dist/daemon/extraction.d.ts +12 -2
- package/dist/daemon/extraction.js +85 -133
- package/dist/daemon/transcript-sources.d.ts +26 -0
- package/dist/daemon/transcript-sources.js +193 -0
- package/dist/daemon/watcher.d.ts +3 -2
- package/dist/daemon/watcher.js +51 -2
- package/dist/install.d.ts +9 -1
- package/dist/install.js +62 -34
- package/dist/mcp/api.d.ts +4 -3
- package/dist/mcp/api.js +4 -3
- package/dist/mcp/tools.js +317 -93
- package/dist/search-scope.d.ts +24 -0
- package/dist/search-scope.js +174 -0
- package/docs/configuration.md +30 -1
- package/docs/privacy-first.md +140 -0
- package/package.json +23 -5
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/config.test.d.ts +0 -9
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -576
- package/dist/config.test.js.map +0 -1
- package/dist/daemon/capture-policy.d.ts.map +0 -1
- package/dist/daemon/capture-policy.js.map +0 -1
- package/dist/daemon/capture-policy.test.d.ts +0 -2
- package/dist/daemon/capture-policy.test.d.ts.map +0 -1
- package/dist/daemon/capture-policy.test.js +0 -48
- package/dist/daemon/capture-policy.test.js.map +0 -1
- package/dist/daemon/consolidation.d.ts.map +0 -1
- package/dist/daemon/consolidation.js.map +0 -1
- package/dist/daemon/entity-typing.d.ts.map +0 -1
- package/dist/daemon/entity-typing.js.map +0 -1
- package/dist/daemon/entity-typing.test.d.ts +0 -2
- package/dist/daemon/entity-typing.test.d.ts.map +0 -1
- package/dist/daemon/entity-typing.test.js +0 -50
- package/dist/daemon/entity-typing.test.js.map +0 -1
- package/dist/daemon/episode-summary.d.ts.map +0 -1
- package/dist/daemon/episode-summary.js.map +0 -1
- package/dist/daemon/episode-summary.test.d.ts +0 -2
- package/dist/daemon/episode-summary.test.d.ts.map +0 -1
- package/dist/daemon/episode-summary.test.js +0 -104
- package/dist/daemon/episode-summary.test.js.map +0 -1
- package/dist/daemon/extraction-quality.test.d.ts +0 -2
- package/dist/daemon/extraction-quality.test.d.ts.map +0 -1
- package/dist/daemon/extraction-quality.test.js +0 -283
- package/dist/daemon/extraction-quality.test.js.map +0 -1
- package/dist/daemon/extraction-rules.d.ts.map +0 -1
- package/dist/daemon/extraction-rules.js.map +0 -1
- package/dist/daemon/extraction-rules.test.d.ts +0 -2
- package/dist/daemon/extraction-rules.test.d.ts.map +0 -1
- package/dist/daemon/extraction-rules.test.js +0 -203
- package/dist/daemon/extraction-rules.test.js.map +0 -1
- package/dist/daemon/extraction.d.ts.map +0 -1
- package/dist/daemon/extraction.js.map +0 -1
- package/dist/daemon/extraction.test.d.ts +0 -2
- package/dist/daemon/extraction.test.d.ts.map +0 -1
- package/dist/daemon/extraction.test.js +0 -225
- package/dist/daemon/extraction.test.js.map +0 -1
- package/dist/daemon/index.d.ts.map +0 -1
- package/dist/daemon/index.js.map +0 -1
- package/dist/daemon/loop.d.ts.map +0 -1
- package/dist/daemon/loop.js.map +0 -1
- package/dist/daemon/loop.test.d.ts +0 -2
- package/dist/daemon/loop.test.d.ts.map +0 -1
- package/dist/daemon/loop.test.js +0 -85
- package/dist/daemon/loop.test.js.map +0 -1
- package/dist/daemon/maintenance-state.d.ts.map +0 -1
- package/dist/daemon/maintenance-state.js.map +0 -1
- package/dist/daemon/maintenance-state.test.d.ts +0 -2
- package/dist/daemon/maintenance-state.test.d.ts.map +0 -1
- package/dist/daemon/maintenance-state.test.js +0 -56
- package/dist/daemon/maintenance-state.test.js.map +0 -1
- package/dist/daemon/qdrant.d.ts.map +0 -1
- package/dist/daemon/qdrant.js.map +0 -1
- package/dist/daemon/qdrant.test.d.ts +0 -8
- package/dist/daemon/qdrant.test.d.ts.map +0 -1
- package/dist/daemon/qdrant.test.js +0 -265
- package/dist/daemon/qdrant.test.js.map +0 -1
- package/dist/daemon/relations-vocab.d.ts.map +0 -1
- package/dist/daemon/relations-vocab.js.map +0 -1
- package/dist/daemon/relations-vocab.test.d.ts +0 -2
- package/dist/daemon/relations-vocab.test.d.ts.map +0 -1
- package/dist/daemon/relations-vocab.test.js +0 -69
- package/dist/daemon/relations-vocab.test.js.map +0 -1
- package/dist/daemon/relations.d.ts.map +0 -1
- package/dist/daemon/relations.js.map +0 -1
- package/dist/daemon/relations.test.d.ts +0 -2
- package/dist/daemon/relations.test.d.ts.map +0 -1
- package/dist/daemon/relations.test.js +0 -36
- package/dist/daemon/relations.test.js.map +0 -1
- package/dist/daemon/session-index.d.ts.map +0 -1
- package/dist/daemon/session-index.js.map +0 -1
- package/dist/daemon/session-index.test.d.ts +0 -2
- package/dist/daemon/session-index.test.d.ts.map +0 -1
- package/dist/daemon/session-index.test.js +0 -60
- package/dist/daemon/session-index.test.js.map +0 -1
- package/dist/daemon/session-summary.d.ts.map +0 -1
- package/dist/daemon/session-summary.js.map +0 -1
- package/dist/daemon/session-summary.test.d.ts +0 -2
- package/dist/daemon/session-summary.test.d.ts.map +0 -1
- package/dist/daemon/session-summary.test.js +0 -162
- package/dist/daemon/session-summary.test.js.map +0 -1
- package/dist/daemon/staleness.d.ts.map +0 -1
- package/dist/daemon/staleness.js.map +0 -1
- package/dist/daemon/staleness.test.d.ts +0 -7
- package/dist/daemon/staleness.test.d.ts.map +0 -1
- package/dist/daemon/staleness.test.js +0 -128
- package/dist/daemon/staleness.test.js.map +0 -1
- package/dist/daemon/watcher-health.d.ts.map +0 -1
- package/dist/daemon/watcher-health.js.map +0 -1
- package/dist/daemon/watcher-health.test.d.ts +0 -5
- package/dist/daemon/watcher-health.test.d.ts.map +0 -1
- package/dist/daemon/watcher-health.test.js +0 -119
- package/dist/daemon/watcher-health.test.js.map +0 -1
- package/dist/daemon/watcher.d.ts.map +0 -1
- package/dist/daemon/watcher.js.map +0 -1
- package/dist/daemon/watcher.test.d.ts +0 -9
- package/dist/daemon/watcher.test.d.ts.map +0 -1
- package/dist/daemon/watcher.test.js +0 -204
- package/dist/daemon/watcher.test.js.map +0 -1
- package/dist/daemon/workstream-resolver.d.ts.map +0 -1
- package/dist/daemon/workstream-resolver.js.map +0 -1
- package/dist/daemon/workstream-resolver.test.d.ts +0 -2
- package/dist/daemon/workstream-resolver.test.d.ts.map +0 -1
- package/dist/daemon/workstream-resolver.test.js +0 -128
- package/dist/daemon/workstream-resolver.test.js.map +0 -1
- package/dist/daemon/workstream-summary.d.ts.map +0 -1
- package/dist/daemon/workstream-summary.js.map +0 -1
- package/dist/daemon/workstream-summary.test.d.ts +0 -2
- package/dist/daemon/workstream-summary.test.d.ts.map +0 -1
- package/dist/daemon/workstream-summary.test.js +0 -89
- package/dist/daemon/workstream-summary.test.js.map +0 -1
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js.map +0 -1
- package/dist/install.test.d.ts +0 -9
- package/dist/install.test.d.ts.map +0 -1
- package/dist/install.test.js +0 -126
- package/dist/install.test.js.map +0 -1
- package/dist/lib/qdrant-client.d.ts.map +0 -1
- package/dist/lib/qdrant-client.js.map +0 -1
- package/dist/lib/qdrant-client.test.d.ts +0 -8
- package/dist/lib/qdrant-client.test.d.ts.map +0 -1
- package/dist/lib/qdrant-client.test.js +0 -274
- package/dist/lib/qdrant-client.test.js.map +0 -1
- package/dist/lib/qdrant-pool.d.ts.map +0 -1
- package/dist/lib/qdrant-pool.js.map +0 -1
- package/dist/lifecycle.d.ts.map +0 -1
- package/dist/lifecycle.js.map +0 -1
- package/dist/lifecycle.test.d.ts +0 -8
- package/dist/lifecycle.test.d.ts.map +0 -1
- package/dist/lifecycle.test.js +0 -74
- package/dist/lifecycle.test.js.map +0 -1
- package/dist/llm/embedding/index.d.ts.map +0 -1
- package/dist/llm/embedding/index.js.map +0 -1
- package/dist/llm/embedding/index.test.d.ts +0 -8
- package/dist/llm/embedding/index.test.d.ts.map +0 -1
- package/dist/llm/embedding/index.test.js +0 -100
- package/dist/llm/embedding/index.test.js.map +0 -1
- package/dist/llm/embedding/providers/bedrock.d.ts.map +0 -1
- package/dist/llm/embedding/providers/bedrock.js.map +0 -1
- package/dist/llm/embedding/providers/bedrock.test.d.ts +0 -2
- package/dist/llm/embedding/providers/bedrock.test.d.ts.map +0 -1
- package/dist/llm/embedding/providers/bedrock.test.js +0 -24
- package/dist/llm/embedding/providers/bedrock.test.js.map +0 -1
- package/dist/llm/embedding/providers/index.d.ts.map +0 -1
- package/dist/llm/embedding/providers/index.js.map +0 -1
- package/dist/llm/embedding/providers/ollama.d.ts.map +0 -1
- package/dist/llm/embedding/providers/ollama.js.map +0 -1
- package/dist/llm/embedding/providers/ollama.test.d.ts +0 -2
- package/dist/llm/embedding/providers/ollama.test.d.ts.map +0 -1
- package/dist/llm/embedding/providers/ollama.test.js +0 -54
- package/dist/llm/embedding/providers/ollama.test.js.map +0 -1
- package/dist/llm/embedding/providers/openai.d.ts.map +0 -1
- package/dist/llm/embedding/providers/openai.js.map +0 -1
- package/dist/llm/embedding/providers/openai.test.d.ts +0 -2
- package/dist/llm/embedding/providers/openai.test.d.ts.map +0 -1
- package/dist/llm/embedding/providers/openai.test.js +0 -48
- package/dist/llm/embedding/providers/openai.test.js.map +0 -1
- package/dist/llm/embedding/providers/portkey.d.ts.map +0 -1
- package/dist/llm/embedding/providers/portkey.js.map +0 -1
- package/dist/llm/embedding/providers/portkey.test.d.ts +0 -2
- package/dist/llm/embedding/providers/portkey.test.d.ts.map +0 -1
- package/dist/llm/embedding/providers/portkey.test.js +0 -56
- package/dist/llm/embedding/providers/portkey.test.js.map +0 -1
- package/dist/llm/embedding/registry.d.ts.map +0 -1
- package/dist/llm/embedding/registry.js.map +0 -1
- package/dist/llm/embedding/registry.test.d.ts +0 -7
- package/dist/llm/embedding/registry.test.d.ts.map +0 -1
- package/dist/llm/embedding/registry.test.js +0 -68
- package/dist/llm/embedding/registry.test.js.map +0 -1
- package/dist/llm/embedding/types.d.ts.map +0 -1
- package/dist/llm/embedding/types.js.map +0 -1
- package/dist/llm/errors.d.ts.map +0 -1
- package/dist/llm/errors.js.map +0 -1
- package/dist/llm/errors.test.d.ts +0 -2
- package/dist/llm/errors.test.d.ts.map +0 -1
- package/dist/llm/errors.test.js +0 -103
- package/dist/llm/errors.test.js.map +0 -1
- package/dist/llm/fetch.d.ts.map +0 -1
- package/dist/llm/fetch.js.map +0 -1
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js.map +0 -1
- package/dist/llm/inference/index.d.ts.map +0 -1
- package/dist/llm/inference/index.js.map +0 -1
- package/dist/llm/inference/index.test.d.ts +0 -6
- package/dist/llm/inference/index.test.d.ts.map +0 -1
- package/dist/llm/inference/index.test.js +0 -150
- package/dist/llm/inference/index.test.js.map +0 -1
- package/dist/llm/inference/providers/bedrock.d.ts.map +0 -1
- package/dist/llm/inference/providers/bedrock.js.map +0 -1
- package/dist/llm/inference/providers/bedrock.test.d.ts +0 -2
- package/dist/llm/inference/providers/bedrock.test.d.ts.map +0 -1
- package/dist/llm/inference/providers/bedrock.test.js +0 -68
- package/dist/llm/inference/providers/bedrock.test.js.map +0 -1
- package/dist/llm/inference/providers/index.d.ts.map +0 -1
- package/dist/llm/inference/providers/index.js.map +0 -1
- package/dist/llm/inference/providers/ollama.d.ts.map +0 -1
- package/dist/llm/inference/providers/ollama.js.map +0 -1
- package/dist/llm/inference/providers/ollama.test.d.ts +0 -2
- package/dist/llm/inference/providers/ollama.test.d.ts.map +0 -1
- package/dist/llm/inference/providers/ollama.test.js +0 -57
- package/dist/llm/inference/providers/ollama.test.js.map +0 -1
- package/dist/llm/inference/providers/openai.d.ts.map +0 -1
- package/dist/llm/inference/providers/openai.js.map +0 -1
- package/dist/llm/inference/providers/openai.test.d.ts +0 -2
- package/dist/llm/inference/providers/openai.test.d.ts.map +0 -1
- package/dist/llm/inference/providers/openai.test.js +0 -82
- package/dist/llm/inference/providers/openai.test.js.map +0 -1
- package/dist/llm/inference/providers/portkey.d.ts.map +0 -1
- package/dist/llm/inference/providers/portkey.js.map +0 -1
- package/dist/llm/inference/providers/portkey.test.d.ts +0 -2
- package/dist/llm/inference/providers/portkey.test.d.ts.map +0 -1
- package/dist/llm/inference/providers/portkey.test.js +0 -48
- package/dist/llm/inference/providers/portkey.test.js.map +0 -1
- package/dist/llm/inference/registry.d.ts.map +0 -1
- package/dist/llm/inference/registry.js.map +0 -1
- package/dist/llm/inference/registry.test.d.ts +0 -6
- package/dist/llm/inference/registry.test.d.ts.map +0 -1
- package/dist/llm/inference/registry.test.js +0 -63
- package/dist/llm/inference/registry.test.js.map +0 -1
- package/dist/llm/inference/types.d.ts.map +0 -1
- package/dist/llm/inference/types.js.map +0 -1
- package/dist/llm/telemetry.d.ts.map +0 -1
- package/dist/llm/telemetry.js.map +0 -1
- package/dist/llm/telemetry.test.d.ts +0 -5
- package/dist/llm/telemetry.test.d.ts.map +0 -1
- package/dist/llm/telemetry.test.js +0 -89
- package/dist/llm/telemetry.test.js.map +0 -1
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/logger.test.d.ts +0 -5
- package/dist/logger.test.d.ts.map +0 -1
- package/dist/logger.test.js +0 -103
- package/dist/logger.test.js.map +0 -1
- package/dist/mcp/api.d.ts.map +0 -1
- package/dist/mcp/api.js.map +0 -1
- package/dist/mcp/helpers.d.ts.map +0 -1
- package/dist/mcp/helpers.js.map +0 -1
- package/dist/mcp/helpers.test.d.ts +0 -5
- package/dist/mcp/helpers.test.d.ts.map +0 -1
- package/dist/mcp/helpers.test.js +0 -530
- package/dist/mcp/helpers.test.js.map +0 -1
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/taxonomy.d.ts.map +0 -1
- package/dist/mcp/taxonomy.js.map +0 -1
- package/dist/mcp/taxonomy.test.d.ts +0 -5
- package/dist/mcp/taxonomy.test.d.ts.map +0 -1
- package/dist/mcp/taxonomy.test.js +0 -215
- package/dist/mcp/taxonomy.test.js.map +0 -1
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js.map +0 -1
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js.map +0 -1
- package/dist/postinstall.d.ts.map +0 -1
- package/dist/postinstall.js.map +0 -1
- package/dist/privacy/redaction.d.ts.map +0 -1
- package/dist/privacy/redaction.js.map +0 -1
- package/dist/privacy/redaction.test.d.ts +0 -2
- package/dist/privacy/redaction.test.d.ts.map +0 -1
- package/dist/privacy/redaction.test.js +0 -51
- package/dist/privacy/redaction.test.js.map +0 -1
- package/dist/prompts/brief.d.ts.map +0 -1
- package/dist/prompts/brief.js.map +0 -1
- package/dist/prompts/contradiction.d.ts.map +0 -1
- package/dist/prompts/contradiction.js.map +0 -1
- package/dist/prompts/distill.d.ts.map +0 -1
- package/dist/prompts/distill.js.map +0 -1
- package/dist/prompts/entity-typing.d.ts.map +0 -1
- package/dist/prompts/entity-typing.js.map +0 -1
- package/dist/prompts/episode-summary.d.ts.map +0 -1
- package/dist/prompts/episode-summary.js.map +0 -1
- package/dist/prompts/extraction.d.ts.map +0 -1
- package/dist/prompts/extraction.js.map +0 -1
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/prompts.test.d.ts +0 -8
- package/dist/prompts/prompts.test.d.ts.map +0 -1
- package/dist/prompts/prompts.test.js +0 -140
- package/dist/prompts/prompts.test.js.map +0 -1
- package/dist/prompts/relations.d.ts.map +0 -1
- package/dist/prompts/relations.js.map +0 -1
- package/dist/prompts/workstream-summary.d.ts.map +0 -1
- package/dist/prompts/workstream-summary.js.map +0 -1
- package/dist/provenance/actor.d.ts.map +0 -1
- package/dist/provenance/actor.js.map +0 -1
- package/dist/provenance/actor.test.d.ts +0 -2
- package/dist/provenance/actor.test.d.ts.map +0 -1
- package/dist/provenance/actor.test.js +0 -49
- package/dist/provenance/actor.test.js.map +0 -1
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js.map +0 -1
- package/dist/render.test.d.ts +0 -8
- package/dist/render.test.d.ts.map +0 -1
- package/dist/render.test.js +0 -244
- package/dist/render.test.js.map +0 -1
- package/dist/routing.d.ts.map +0 -1
- package/dist/routing.js.map +0 -1
- package/dist/routing.test.d.ts +0 -2
- package/dist/routing.test.d.ts.map +0 -1
- package/dist/routing.test.js +0 -79
- package/dist/routing.test.js.map +0 -1
- package/dist/status.d.ts.map +0 -1
- package/dist/status.js.map +0 -1
- package/dist/status.test.d.ts +0 -5
- package/dist/status.test.d.ts.map +0 -1
- package/dist/status.test.js +0 -203
- package/dist/status.test.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to bikky are documented here.
|
|
4
|
+
|
|
5
|
+
This project uses npm package versions for release tracking:
|
|
6
|
+
|
|
7
|
+
- `bikky` — core CLI, MCP server, and daemon.
|
|
8
|
+
- `bikky-ui` — local web dashboard.
|
|
9
|
+
|
|
10
|
+
## Unreleased
|
|
11
|
+
|
|
12
|
+
- Public OSS readiness cleanup: package metadata, support docs, public maintainer ownership, package tarball hygiene, and privacy/transcript-capture documentation.
|
|
13
|
+
- Added package verification CI and a privacy-first quickstart for local storage/local model setups.
|
|
14
|
+
|
|
15
|
+
## 0.4.0
|
|
16
|
+
|
|
17
|
+
- Added multi-destination Qdrant routing and configurable read/search scopes.
|
|
18
|
+
- Added Claude Code user-scoped MCP setup support.
|
|
19
|
+
- Added Claude Code transcript ingestion for daemon memory extraction.
|
|
20
|
+
- Refreshed README screenshots, setup guidance, and configuration docs.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and maintainers pledge to make participation in
|
|
6
|
+
the bikky community a harassment-free experience for everyone, regardless of
|
|
7
|
+
age, body size, visible or invisible disability, ethnicity, sex characteristics,
|
|
8
|
+
gender identity and expression, level of experience, education, socio-economic
|
|
9
|
+
status, nationality, personal appearance, race, religion, or sexual identity
|
|
10
|
+
and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behaviour that contributes to a positive environment:
|
|
18
|
+
|
|
19
|
+
- Demonstrating empathy and kindness toward other people
|
|
20
|
+
- Being respectful of differing opinions, viewpoints, and experiences
|
|
21
|
+
- Giving and gracefully accepting constructive feedback
|
|
22
|
+
- Accepting responsibility and apologising to those affected by our mistakes,
|
|
23
|
+
and learning from the experience
|
|
24
|
+
- Focusing on what is best not just for us as individuals, but for the
|
|
25
|
+
overall community
|
|
26
|
+
|
|
27
|
+
Examples of unacceptable behaviour:
|
|
28
|
+
|
|
29
|
+
- The use of sexualised language or imagery, and sexual attention or advances
|
|
30
|
+
of any kind
|
|
31
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
32
|
+
- Public or private harassment
|
|
33
|
+
- Publishing others' private information, such as a physical or email address,
|
|
34
|
+
without their explicit permission
|
|
35
|
+
- Other conduct which could reasonably be considered inappropriate in a
|
|
36
|
+
professional setting
|
|
37
|
+
|
|
38
|
+
## Enforcement Responsibilities
|
|
39
|
+
|
|
40
|
+
Project maintainers are responsible for clarifying and enforcing our standards
|
|
41
|
+
of acceptable behaviour and will take appropriate and fair corrective action in
|
|
42
|
+
response to any behaviour that they deem inappropriate, threatening, offensive,
|
|
43
|
+
or harmful.
|
|
44
|
+
|
|
45
|
+
## Scope
|
|
46
|
+
|
|
47
|
+
This Code of Conduct applies within all community spaces (issues, PRs,
|
|
48
|
+
Discussions, Discord/Slack if any), and also applies when an individual is
|
|
49
|
+
officially representing the community in public spaces.
|
|
50
|
+
|
|
51
|
+
## Enforcement
|
|
52
|
+
|
|
53
|
+
Instances of abusive, harassing, or otherwise unacceptable behaviour may be
|
|
54
|
+
reported to the project maintainers via the GitHub Security Advisories private
|
|
55
|
+
reporting flow at:
|
|
56
|
+
https://github.com/bikky-dev/bikky/security/advisories/new
|
|
57
|
+
|
|
58
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
59
|
+
|
|
60
|
+
All maintainers are obligated to respect the privacy and security of the
|
|
61
|
+
reporter of any incident.
|
|
62
|
+
|
|
63
|
+
## Enforcement Guidelines
|
|
64
|
+
|
|
65
|
+
Maintainers will follow these Community Impact Guidelines in determining the
|
|
66
|
+
consequences for any action they deem in violation of this Code of Conduct:
|
|
67
|
+
|
|
68
|
+
1. **Correction** — Private, written warning. A public apology may be requested.
|
|
69
|
+
2. **Warning** — A warning with consequences for continued behaviour.
|
|
70
|
+
3. **Temporary ban** — A temporary ban from any sort of interaction or public
|
|
71
|
+
communication with the community.
|
|
72
|
+
4. **Permanent ban** — Permanent ban from any sort of public interaction within
|
|
73
|
+
the community.
|
|
74
|
+
|
|
75
|
+
## Attribution
|
|
76
|
+
|
|
77
|
+
This Code of Conduct is adapted from the
|
|
78
|
+
[Contributor Covenant](https://www.contributor-covenant.org/), version 2.1,
|
|
79
|
+
available at
|
|
80
|
+
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
|
package/CONTRIBUTING.md
CHANGED
|
@@ -59,7 +59,7 @@ We aim for **focused, fast unit tests** that lock in behaviour without being a m
|
|
|
59
59
|
|
|
60
60
|
We deliberately **do not** test:
|
|
61
61
|
|
|
62
|
-
- LLM prompt quality or extraction accuracy.
|
|
62
|
+
- LLM prompt quality or extraction accuracy. Prompt-level evals live outside the default unit-test suite so day-to-day contributor tests stay fast and deterministic.
|
|
63
63
|
- Implementation details (private function internals, exact log strings) — these change often and tests that pin them slow contributors down.
|
|
64
64
|
- The React frontend — the testable surface there is small; we rely on type-checking and manual smoke tests.
|
|
65
65
|
|
package/README.md
CHANGED
|
@@ -77,6 +77,8 @@ JSON
|
|
|
77
77
|
bikky setup # writes MCP config for Copilot + Claude Code, then starts the daemon
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
+
`npm install -g bikky` runs a best-effort postinstall setup hook for convenience. It never fails the install, and you should still run `bikky setup` after writing your config to make setup explicit and repeatable.
|
|
81
|
+
|
|
80
82
|
Restart your editor. The memory tools appear automatically in supported MCP clients.
|
|
81
83
|
|
|
82
84
|
```bash
|
|
@@ -130,6 +132,8 @@ For hosted models, custom providers, multiple profiles, or advanced tuning, use
|
|
|
130
132
|
|
|
131
133
|
> 📖 **Full configuration guide:** [docs/configuration.md][configuration-guide]
|
|
132
134
|
>
|
|
135
|
+
> 🔒 **Privacy-first setup:** [local storage, local models, and transcript-capture controls][privacy-quickstart]
|
|
136
|
+
>
|
|
133
137
|
> 🛠 Want to add a new embedding or LLM provider (Vertex, OpenRouter, etc.)? See **[CONTRIBUTING.md][contributing]** — it's a single-file change.
|
|
134
138
|
|
|
135
139
|
#### Optional: separate memory stores
|
|
@@ -141,6 +145,7 @@ Most installs use one Qdrant destination. If you need clean separation later, re
|
|
|
141
145
|
"destinations": [
|
|
142
146
|
{
|
|
143
147
|
"name": "platform",
|
|
148
|
+
"description": "Shared platform engineering memory.",
|
|
144
149
|
"qdrant_url": "https://platform.cloud.qdrant.io:6333",
|
|
145
150
|
"qdrant_api_key": "...",
|
|
146
151
|
"collection": "bikky-platform",
|
|
@@ -148,15 +153,17 @@ Most installs use one Qdrant destination. If you need clean separation later, re
|
|
|
148
153
|
},
|
|
149
154
|
{
|
|
150
155
|
"name": "client-a",
|
|
156
|
+
"description": "Client A project memory.",
|
|
151
157
|
"qdrant_url": "https://client-a.cloud.qdrant.io:6333",
|
|
152
158
|
"qdrant_api_key": "...",
|
|
153
159
|
"collection": "bikky-client-a"
|
|
154
160
|
}
|
|
155
|
-
]
|
|
161
|
+
],
|
|
162
|
+
"default_search_scope": "routed"
|
|
156
163
|
}
|
|
157
164
|
```
|
|
158
165
|
|
|
159
|
-
That is enough for explicit selection in the UI and tools. Add routing rules only when you want automatic placement by cwd, entity, content, or metadata. Existing single-Qdrant configs continue to work.
|
|
166
|
+
That is enough for explicit selection in the UI and tools. Add routing rules only when you want automatic placement by cwd, entity, content, or metadata. Search tools can also use `search_scope: "all"` or a named/listed scope when context may span stores. Existing single-Qdrant configs continue to work.
|
|
160
167
|
|
|
161
168
|
> 📖 **Details:** [multi-destination configuration](docs/configuration.md#multi-destination-routing)
|
|
162
169
|
|
|
@@ -165,6 +172,7 @@ That is enough for explicit selection in the UI and tools. Add routing rules onl
|
|
|
165
172
|
[local-config]: https://cdn.jsdelivr.net/npm/bikky@latest/docs/config/local.md
|
|
166
173
|
[hosted-qdrant-local-models-config]: https://cdn.jsdelivr.net/npm/bikky@latest/docs/config/hosted-qdrant-local-models.md
|
|
167
174
|
[configuration-guide]: https://cdn.jsdelivr.net/npm/bikky@latest/docs/configuration.md
|
|
175
|
+
[privacy-quickstart]: https://cdn.jsdelivr.net/npm/bikky@latest/docs/privacy-first.md
|
|
168
176
|
[contributing]: https://cdn.jsdelivr.net/npm/bikky@latest/CONTRIBUTING.md
|
|
169
177
|
|
|
170
178
|
---
|
|
@@ -212,6 +220,28 @@ bikky render # render a prompt to JSON (for eval harnesses & debugging)
|
|
|
212
220
|
|
|
213
221
|
`bikky status` is the first thing to run when setup feels wrong. It checks the config, Qdrant, embeddings, background daemon, and local UI health, then tells you what needs attention. Use `bikky status --json` for automation.
|
|
214
222
|
|
|
223
|
+
## Privacy and transcript capture
|
|
224
|
+
|
|
225
|
+
bikky stores memory in the Qdrant destination you configure. The daemon runs locally and reads supported coding-agent transcript locations so it can extract durable facts for future sessions:
|
|
226
|
+
|
|
227
|
+
- GitHub Copilot session state: `~/.copilot/session-state`
|
|
228
|
+
- Claude Code project transcripts: `~/.claude/projects`
|
|
229
|
+
|
|
230
|
+
Only the configured daemon process reads these files. Extracted facts are redacted before storage, but they are still sent to your configured LLM provider for extraction unless you use a local provider such as Ollama. To disable transcript capture, set the relevant watcher to `false` in `~/.bikky/config.json`:
|
|
231
|
+
|
|
232
|
+
```json
|
|
233
|
+
{
|
|
234
|
+
"watchers": {
|
|
235
|
+
"copilot": { "enabled": false },
|
|
236
|
+
"claude": { "enabled": false }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
You can also set `daemon.extract_every_sec` to `0` to disable background extraction while keeping MCP recall tools available.
|
|
242
|
+
|
|
243
|
+
For a local-storage, local-model setup that minimizes what leaves your machine, see the [privacy-first quickstart][privacy-quickstart].
|
|
244
|
+
|
|
215
245
|
## License
|
|
216
246
|
|
|
217
247
|
AGPL-3.0 — see [LICENSE](LICENSE).
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
Thanks for helping keep bikky and its users safe.
|
|
4
|
+
|
|
5
|
+
## Supported Versions
|
|
6
|
+
|
|
7
|
+
Security fixes land on the latest minor release of each package:
|
|
8
|
+
|
|
9
|
+
| Package | Supported versions |
|
|
10
|
+
| ---------- | ------------------------ |
|
|
11
|
+
| `bikky` | latest minor (`0.4.x`) |
|
|
12
|
+
| `bikky-ui` | latest minor (`0.1.x`) |
|
|
13
|
+
|
|
14
|
+
Older versions are not patched. If you're on an old version, please upgrade before reporting a vulnerability that may already be fixed.
|
|
15
|
+
|
|
16
|
+
## Reporting a Vulnerability
|
|
17
|
+
|
|
18
|
+
**Please do not open a public GitHub issue for security reports.**
|
|
19
|
+
|
|
20
|
+
Use GitHub's private vulnerability reporting:
|
|
21
|
+
|
|
22
|
+
1. Go to https://github.com/bikky-dev/bikky/security/advisories/new
|
|
23
|
+
2. Fill in the details — include reproduction steps, affected versions, and impact.
|
|
24
|
+
3. Submit. We'll get an email and respond from there.
|
|
25
|
+
|
|
26
|
+
If you can't use GitHub for any reason, open a regular issue titled "Security contact request" (no details) and we'll arrange a private channel.
|
|
27
|
+
|
|
28
|
+
## What to Expect
|
|
29
|
+
|
|
30
|
+
| When | What happens |
|
|
31
|
+
| ----------------------------------- | ----------------------------------------------------------------------------- |
|
|
32
|
+
| Within **3 business days** | We acknowledge the report and confirm we can reproduce (or ask for more info). |
|
|
33
|
+
| Within **7 business days** | We share an initial assessment: severity, affected versions, intended fix. |
|
|
34
|
+
| Within **90 days** (typical) | We ship a patched release and publish a GitHub Security Advisory with credit. |
|
|
35
|
+
|
|
36
|
+
For critical issues actively being exploited, we'll move faster and coordinate disclosure timing with you.
|
|
37
|
+
|
|
38
|
+
## Scope
|
|
39
|
+
|
|
40
|
+
In scope:
|
|
41
|
+
- The `bikky` npm package (CLI, MCP server, daemon).
|
|
42
|
+
- The `bikky-ui` npm package (local web UI server + frontend).
|
|
43
|
+
- The default daemon, postinstall scripts, and any code shipped in either tarball.
|
|
44
|
+
|
|
45
|
+
Out of scope:
|
|
46
|
+
- Vulnerabilities in dependencies that are already tracked upstream (please report to the upstream maintainer).
|
|
47
|
+
- Vulnerabilities that require physical access to the user's machine or already-compromised credentials.
|
|
48
|
+
- Findings from automated scanners with no demonstrated impact.
|
|
49
|
+
- Issues in third-party services bikky integrates with (Qdrant Cloud, OpenAI, etc.) — report those to the respective vendors.
|
|
50
|
+
|
|
51
|
+
## Safe Harbor
|
|
52
|
+
|
|
53
|
+
We support good-faith security research. If you make a reasonable effort to comply with this policy, we will:
|
|
54
|
+
- Not pursue legal action against you for the research.
|
|
55
|
+
- Work with you to understand and resolve the issue quickly.
|
|
56
|
+
- Recognise your contribution publicly (with your permission) in the advisory and release notes.
|
|
57
|
+
|
|
58
|
+
Thank you for helping make bikky safer for everyone.
|
package/SUPPORT.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Support
|
|
2
|
+
|
|
3
|
+
Thanks for using bikky.
|
|
4
|
+
|
|
5
|
+
## Questions and usage help
|
|
6
|
+
|
|
7
|
+
Open a GitHub issue using the most relevant template. Include your OS, Node.js version, package version, MCP client, and the output of:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bikky status
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Please redact API keys, access tokens, local file contents, and any private transcript data before posting.
|
|
14
|
+
|
|
15
|
+
## Bugs
|
|
16
|
+
|
|
17
|
+
Use the bug report template and include a minimal reproduction when possible. If the issue involves setup, include whether you installed with `npm install -g bikky`, `npx bikky`, or a local checkout.
|
|
18
|
+
|
|
19
|
+
## Security reports
|
|
20
|
+
|
|
21
|
+
Do not open a public issue for vulnerabilities. Follow [SECURITY.md](SECURITY.md) and use GitHub private vulnerability reporting.
|
|
22
|
+
|
package/dist/config.d.ts
CHANGED
|
@@ -95,6 +95,8 @@ export interface DestinationMatch {
|
|
|
95
95
|
export interface Destination {
|
|
96
96
|
/** Stable, unique name. Used as the `destination` override on tool calls. */
|
|
97
97
|
name: string;
|
|
98
|
+
/** Human-readable guidance for LLMs/users about when to use this destination. */
|
|
99
|
+
description?: string;
|
|
98
100
|
qdrant_url: string;
|
|
99
101
|
qdrant_api_key: string | null;
|
|
100
102
|
collection: string;
|
|
@@ -103,6 +105,15 @@ export interface Destination {
|
|
|
103
105
|
/** Routing rules. Omit for a destination that is only reachable by override. */
|
|
104
106
|
match?: DestinationMatch;
|
|
105
107
|
}
|
|
108
|
+
export type SearchScopeTarget = "routed" | "all" | string | string[];
|
|
109
|
+
export interface SearchScopeDefinition {
|
|
110
|
+
/** Stable scope name that MCP clients can pass as `search_scope`. */
|
|
111
|
+
name: string;
|
|
112
|
+
/** Guidance for LLMs/users about when this scope should be used. */
|
|
113
|
+
description: string;
|
|
114
|
+
/** Destination selector: "routed", "all", a destination name, or destination names. */
|
|
115
|
+
destinations: SearchScopeTarget;
|
|
116
|
+
}
|
|
106
117
|
export interface BikkyConfig {
|
|
107
118
|
/**
|
|
108
119
|
* Top-level Qdrant fields. When `destinations` is empty, a single default
|
|
@@ -118,6 +129,14 @@ export interface BikkyConfig {
|
|
|
118
129
|
* default flag → first entry.
|
|
119
130
|
*/
|
|
120
131
|
destinations: Destination[];
|
|
132
|
+
/**
|
|
133
|
+
* Default read/search scope. "routed" preserves historical behavior
|
|
134
|
+
* (one destination via routing rules); "all" fans out to every destination;
|
|
135
|
+
* a destination name or list searches only those destinations.
|
|
136
|
+
*/
|
|
137
|
+
default_search_scope: SearchScopeTarget;
|
|
138
|
+
/** Optional named search scopes exposed to MCP clients with descriptions. */
|
|
139
|
+
search_scopes: SearchScopeDefinition[];
|
|
121
140
|
aws_profile: string | null;
|
|
122
141
|
embedding: EmbeddingConfig;
|
|
123
142
|
llm: LLMConfig;
|
package/dist/config.js
CHANGED
|
@@ -29,6 +29,8 @@ const DEFAULTS = {
|
|
|
29
29
|
qdrant_api_key: null,
|
|
30
30
|
collection: "bikky",
|
|
31
31
|
destinations: [],
|
|
32
|
+
default_search_scope: "routed",
|
|
33
|
+
search_scopes: [],
|
|
32
34
|
aws_profile: null,
|
|
33
35
|
embedding: {
|
|
34
36
|
provider: "ollama",
|
|
@@ -185,17 +187,29 @@ const destinationMatchSchema = z.object({
|
|
|
185
187
|
}).passthrough();
|
|
186
188
|
const destinationFileSchema = z.object({
|
|
187
189
|
name: z.string().min(1),
|
|
190
|
+
description: z.string().optional(),
|
|
188
191
|
qdrant_url: z.string().min(1),
|
|
189
192
|
qdrant_api_key: z.string().nullable().optional(),
|
|
190
193
|
collection: z.string().min(1),
|
|
191
194
|
default: z.boolean().optional(),
|
|
192
195
|
match: destinationMatchSchema.optional(),
|
|
193
196
|
}).passthrough();
|
|
197
|
+
const searchScopeTargetSchema = z.union([
|
|
198
|
+
z.string().min(1),
|
|
199
|
+
z.array(z.string().min(1)).min(1),
|
|
200
|
+
]);
|
|
201
|
+
const searchScopeDefinitionFileSchema = z.object({
|
|
202
|
+
name: z.string().min(1),
|
|
203
|
+
description: z.string().min(1),
|
|
204
|
+
destinations: searchScopeTargetSchema,
|
|
205
|
+
}).passthrough();
|
|
194
206
|
const configFileSchema = z.object({
|
|
195
207
|
qdrant_url: z.string().nullable().optional(),
|
|
196
208
|
qdrant_api_key: z.string().nullable().optional(),
|
|
197
209
|
collection: z.string().optional(),
|
|
198
210
|
destinations: z.array(destinationFileSchema).optional(),
|
|
211
|
+
default_search_scope: searchScopeTargetSchema.optional(),
|
|
212
|
+
search_scopes: z.array(searchScopeDefinitionFileSchema).optional(),
|
|
199
213
|
aws_profile: z.string().nullable().optional(),
|
|
200
214
|
embedding: embeddingConfigFileSchema.optional(),
|
|
201
215
|
llm: llmConfigFileSchema.optional(),
|
|
@@ -363,6 +377,63 @@ export function validateConfigObject(raw) {
|
|
|
363
377
|
issues.push({ severity: "error", path: "destinations", message: `at most one destination may set 'default: true' (found ${defaultCount})` });
|
|
364
378
|
}
|
|
365
379
|
}
|
|
380
|
+
const destinationNames = new Set();
|
|
381
|
+
if (Array.isArray(raw.destinations)) {
|
|
382
|
+
for (const entry of raw.destinations) {
|
|
383
|
+
if (isObject(entry) && typeof entry.name === "string" && entry.name.trim() !== "") {
|
|
384
|
+
destinationNames.add(entry.name);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
const searchScopeNames = new Set();
|
|
389
|
+
if (Array.isArray(raw.search_scopes)) {
|
|
390
|
+
for (const entry of raw.search_scopes) {
|
|
391
|
+
if (isObject(entry) && typeof entry.name === "string" && entry.name.trim() !== "") {
|
|
392
|
+
searchScopeNames.add(entry.name);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
const validateSearchScopeTarget = (target, pathName) => {
|
|
397
|
+
const values = Array.isArray(target) ? target : [target];
|
|
398
|
+
for (const [idx, value] of values.entries()) {
|
|
399
|
+
const valuePath = Array.isArray(target) ? `${pathName}[${idx}]` : pathName;
|
|
400
|
+
if (typeof value !== "string" || value.trim() === "")
|
|
401
|
+
continue;
|
|
402
|
+
const normalized = value.trim();
|
|
403
|
+
if (normalized === "all" || normalized === "routed" || destinationNames.size === 0)
|
|
404
|
+
continue;
|
|
405
|
+
if (searchScopeNames.has(normalized))
|
|
406
|
+
continue;
|
|
407
|
+
if (!destinationNames.has(normalized)) {
|
|
408
|
+
issues.push({
|
|
409
|
+
severity: "warning",
|
|
410
|
+
path: valuePath,
|
|
411
|
+
message: `references unknown destination '${normalized}'`,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
if (Object.prototype.hasOwnProperty.call(raw, "default_search_scope")) {
|
|
417
|
+
validateSearchScopeTarget(raw.default_search_scope, "default_search_scope");
|
|
418
|
+
}
|
|
419
|
+
if (Array.isArray(raw.search_scopes)) {
|
|
420
|
+
const seenScopeNames = new Set();
|
|
421
|
+
raw.search_scopes.forEach((entry, idx) => {
|
|
422
|
+
const base = `search_scopes[${idx}]`;
|
|
423
|
+
if (!isObject(entry)) {
|
|
424
|
+
issues.push({ severity: "error", path: base, message: "must be an object" });
|
|
425
|
+
return;
|
|
426
|
+
}
|
|
427
|
+
const name = entry.name;
|
|
428
|
+
if (typeof name === "string" && name.trim() !== "") {
|
|
429
|
+
if (seenScopeNames.has(name)) {
|
|
430
|
+
issues.push({ severity: "error", path: `${base}.name`, message: `duplicate search scope name '${name}'` });
|
|
431
|
+
}
|
|
432
|
+
seenScopeNames.add(name);
|
|
433
|
+
}
|
|
434
|
+
validateSearchScopeTarget(entry.destinations, `${base}.destinations`);
|
|
435
|
+
});
|
|
436
|
+
}
|
|
366
437
|
const embedding = childObject(raw, "embedding");
|
|
367
438
|
if (embedding)
|
|
368
439
|
validateUrlLike(embedding.base_url, "embedding.base_url", issues);
|
|
@@ -599,6 +670,7 @@ export function getEffectiveDestinations(config = loadConfig()) {
|
|
|
599
670
|
return [];
|
|
600
671
|
return [{
|
|
601
672
|
name: "default",
|
|
673
|
+
description: "Default Qdrant destination synthesized from the top-level qdrant_url, qdrant_api_key, and collection settings.",
|
|
602
674
|
qdrant_url: config.qdrant_url,
|
|
603
675
|
qdrant_api_key: config.qdrant_api_key,
|
|
604
676
|
collection: config.collection,
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Events-based memory extraction — reads
|
|
2
|
+
* Events-based memory extraction — reads supported coding-agent transcripts,
|
|
3
3
|
* extracts facts via LLM, and stores them in Qdrant with source: "system".
|
|
4
4
|
*
|
|
5
5
|
* Uses a JSON file for extraction state (high-water byte offsets) instead of SQLite.
|
|
6
|
-
*
|
|
6
|
+
* Copilot session detection uses lock files. Claude Code detection uses
|
|
7
|
+
* top-level JSONL transcripts under ~/.claude/projects.
|
|
7
8
|
*/
|
|
8
9
|
import type { BikkyConfig } from "../config.js";
|
|
9
10
|
import type { LogFn } from "./qdrant.js";
|
|
11
|
+
import { type TranscriptSource } from "./transcript-sources.js";
|
|
10
12
|
export declare const setLogger: (fn: LogFn) => void;
|
|
11
13
|
export declare const DEFAULT_EXTRACTION_PROMPT = "You are Bikky's memory extraction agent for open-source coding agents. Extract durable, reusable facts that help a future agent continue work without rereading the whole transcript.\n\n## Core rule\nExtract fewer, sharper memories. A candidate fact must be independently useful after the session is gone.\n\n## Quality gate\nEvery fact must pass at least one gate:\n1. GREPPABLE: names a file path, package, symbol, config key, CLI flag, issue/PR, service, or API a future agent can search for.\n2. RUNNABLE: contains a command, URL, setting, port, or procedure that can be executed or checked.\n3. NAVIGABLE: tells a future agent where to look and what that location means.\n4. DECISIVE: records a durable decision, rationale, constraint, convention, or preference.\n5. DIAGNOSTIC: captures a repeatable failure mode, root cause, or troubleshooting gotcha.\n\n## Ontology\n- domain is the activity profile. For coding-agent captures use \"software_engineering\".\n- category is subject matter: engineering | product | human | system.\n- kind is object shape. For this prompt, emit only kind=\"fact\".\n- memory_subtype must be one of:\n codebase_map | architecture_decision | infra_topology | access_pattern | operational_procedure | domain_rule | product_decision | product_requirement | user_workflow | roadmap_item | success_metric | market_insight | troubleshooting_gotcha | preference | person_profile | ownership_note | working_agreement | activity_event.\n\n## Examples\nGOOD:\n- \"The UI smoke tests live in packages/ui/tests/smoke.spec.ts and run through npm run test:e2e with mocked /api/memory/* responses.\"\n- \"Use workspace_id as the tenancy/access boundary; domain is reserved for activity profile such as software_engineering.\"\n- \"If Qdrant order_by fails with a missing index error, create a datetime payload index for the sorted field before retrying.\"\n- \"The memory page should show categories and concrete subtype chips directly; a sub-tab layer makes the ontology harder to understand.\"\n- \"Saber prefers Node's built-in test runner for root tests; do not add Jest just for daemon unit tests.\"\n- \"Saber merged PR #85 after approving the subtype UX copy changes.\"\n\nBAD:\n- \"The tests were fixed.\" (status only)\n- \"We reviewed the code.\" (session narration)\n- \"The deployment succeeded.\" (transient and not reusable)\n- \"The agent used npm.\" (tool narration)\n- \"There was an error.\" (no root cause or reusable detail)\n\n## Output format\nReturn strict JSON:\n{\"facts\":[\n {\n \"content\":\"One self-contained durable fact.\",\n \"category\":\"engineering\",\n \"memory_subtype\":\"codebase_map\",\n \"action_actor\":\"optional actor for activity_event only\",\n \"action_type\":\"optional action verb for activity_event only\",\n \"action_object\":\"optional durable object for activity_event only\",\n \"action_outcome\":\"optional durable outcome for activity_event only\",\n \"entities\":[\"repo-or-tool\",\"specific-module\"],\n \"confidence\":0.9,\n \"importance\":0.7,\n \"quality_score\":0.8,\n \"confidence_reason\":\"Explicitly stated in the transcript.\",\n \"repo\":\"optional/repo-or-package\",\n \"branch\":\"optional-branch\",\n \"task_key\":\"optional issue/PR/task key\",\n \"workstream_key\":\"optional stable workstream key\"\n }\n]}\n\nScoring:\n- confidence: 0.9 explicit, 0.7 strong inference, 0.55 weak but useful inference.\n- importance: 0.8+ for decisions, infra, procedures, access, recurring failures, product requirements, ownership, and state-changing activity events; 0.6+ for useful codebase maps/preferences.\n- quality_score: 0.8+ passes multiple gates, 0.6+ passes one strong gate, below 0.6 should usually be omitted.\n\nIf nothing passes the quality gate, return {\"facts\":[]}.";
|
|
12
14
|
export type Volatility = "stable" | "evolving" | "transient" | "ephemeral";
|
|
@@ -60,5 +62,13 @@ export interface ExtractionHealth {
|
|
|
60
62
|
active_session_count: number;
|
|
61
63
|
/** Configured copilot watcher path at the time of the tick. */
|
|
62
64
|
watcher_path: string;
|
|
65
|
+
/** Per-source health, including non-Copilot watchers. */
|
|
66
|
+
sources?: Record<TranscriptSource, ExtractionSourceHealth>;
|
|
67
|
+
}
|
|
68
|
+
export interface ExtractionSourceHealth {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
watcher_path: string;
|
|
71
|
+
active_session_count: number;
|
|
72
|
+
last_active_session_at: string | null;
|
|
63
73
|
}
|
|
64
74
|
//# sourceMappingURL=extraction.d.ts.map
|