cognitive-core 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atlas.d.ts +10 -0
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +65 -0
- package/dist/atlas.js.map +1 -1
- package/dist/learning/pipeline.d.ts +4 -31
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +12 -64
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/memory/curated-loader.d.ts +21 -4
- package/dist/memory/curated-loader.d.ts.map +1 -1
- package/dist/memory/curated-loader.js +53 -16
- package/dist/memory/curated-loader.js.map +1 -1
- package/dist/memory/index.d.ts +2 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/playbook.d.ts +6 -0
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +15 -0
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/source-resolver.d.ts +120 -0
- package/dist/memory/source-resolver.d.ts.map +1 -0
- package/dist/memory/source-resolver.js +300 -0
- package/dist/memory/source-resolver.js.map +1 -0
- package/dist/types/config.d.ts +141 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +40 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/workspace/types.d.ts +12 -54
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +2 -2
- package/playbooks/compound-engineering/adversarial-review.json +51 -0
- package/playbooks/compound-engineering/agent-native-architecture.json +59 -0
- package/playbooks/compound-engineering/agent-native-review.json +54 -0
- package/playbooks/compound-engineering/api-contract-review.json +52 -0
- package/playbooks/compound-engineering/brainstorm-requirements.json +55 -0
- package/playbooks/compound-engineering/bug-reproduction.json +62 -0
- package/playbooks/compound-engineering/confidence-calibration.json +49 -0
- package/playbooks/compound-engineering/correctness-review.json +49 -0
- package/playbooks/compound-engineering/data-migration-safety.json +59 -0
- package/playbooks/compound-engineering/deployment-verification.json +63 -0
- package/playbooks/compound-engineering/error-recovery-patterns.json +53 -0
- package/playbooks/compound-engineering/implementation-planning.json +64 -0
- package/playbooks/compound-engineering/issue-pattern-analysis.json +53 -0
- package/playbooks/compound-engineering/knowledge-compounding.json +63 -0
- package/playbooks/compound-engineering/learnings-research.json +54 -0
- package/playbooks/compound-engineering/maintainability-review.json +49 -0
- package/playbooks/compound-engineering/performance-review.json +54 -0
- package/playbooks/compound-engineering/plan-adversarial-review.json +56 -0
- package/playbooks/compound-engineering/plan-feasibility-review.json +56 -0
- package/playbooks/compound-engineering/project-standards-review.json +52 -0
- package/playbooks/compound-engineering/reliability-review.json +53 -0
- package/playbooks/compound-engineering/review-orchestration.json +64 -0
- package/playbooks/compound-engineering/security-review.json +54 -0
- package/playbooks/compound-engineering/systematic-execution.json +64 -0
- package/playbooks/compound-engineering/testing-review.json +50 -0
- package/src/atlas.ts +96 -0
- package/src/memory/curated-loader.ts +69 -16
- package/src/memory/index.ts +16 -0
- package/src/memory/playbook.ts +19 -0
- package/src/memory/source-resolver.ts +422 -0
- package/src/types/config.ts +46 -0
- package/src/types/index.ts +4 -0
- package/src/workspace/types.ts +22 -78
- package/tests/integration/curated-sources-e2e.test.ts +502 -0
- package/tests/memory/compound-engineering-seed.test.ts +338 -0
- package/tests/memory/curated-loader-extended.test.ts +225 -0
- package/tests/memory/playbook-quality-validation.test.ts +430 -0
- package/tests/memory/source-resolver.test.ts +700 -0
- package/.claude/settings.local.json +0 -11
- package/dist/learning/llm-extractor.d.ts +0 -88
- package/dist/learning/llm-extractor.d.ts.map +0 -1
- package/dist/learning/llm-extractor.js +0 -372
- package/dist/learning/llm-extractor.js.map +0 -1
- package/dist/learning/loop-coordinator.d.ts +0 -61
- package/dist/learning/loop-coordinator.d.ts.map +0 -1
- package/dist/learning/loop-coordinator.js +0 -96
- package/dist/learning/loop-coordinator.js.map +0 -1
- package/references/agent-workspace/CLAUDE.md +0 -74
- package/references/agent-workspace/README.md +0 -587
- package/references/agent-workspace/media/banner.png +0 -0
- package/references/agent-workspace/package-lock.json +0 -2061
- package/references/agent-workspace/package.json +0 -54
- package/references/agent-workspace/src/handle.ts +0 -122
- package/references/agent-workspace/src/index.ts +0 -32
- package/references/agent-workspace/src/manager.ts +0 -102
- package/references/agent-workspace/src/readers/json.ts +0 -71
- package/references/agent-workspace/src/readers/markdown.ts +0 -37
- package/references/agent-workspace/src/readers/raw.ts +0 -27
- package/references/agent-workspace/src/types.ts +0 -68
- package/references/agent-workspace/src/validation.ts +0 -93
- package/references/agent-workspace/src/writers/json.ts +0 -17
- package/references/agent-workspace/src/writers/markdown.ts +0 -27
- package/references/agent-workspace/src/writers/raw.ts +0 -22
- package/references/agent-workspace/tests/errors.test.ts +0 -652
- package/references/agent-workspace/tests/handle.test.ts +0 -144
- package/references/agent-workspace/tests/manager.test.ts +0 -124
- package/references/agent-workspace/tests/readers.test.ts +0 -205
- package/references/agent-workspace/tests/validation.test.ts +0 -196
- package/references/agent-workspace/tests/writers.test.ts +0 -108
- package/references/agent-workspace/tsconfig.json +0 -20
- package/references/agent-workspace/tsup.config.ts +0 -9
- package/references/minimem/.claude/settings.json +0 -7
- package/references/minimem/.sudocode/issues.jsonl +0 -18
- package/references/minimem/.sudocode/specs.jsonl +0 -1
- package/references/minimem/CLAUDE.md +0 -310
- package/references/minimem/README.md +0 -556
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
- package/references/minimem/claude-plugin/.mcp.json +0 -7
- package/references/minimem/claude-plugin/README.md +0 -158
- package/references/minimem/claude-plugin/commands/recall.md +0 -47
- package/references/minimem/claude-plugin/commands/remember.md +0 -41
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
- package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
- package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
- package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
- package/references/minimem/package-lock.json +0 -5373
- package/references/minimem/package.json +0 -60
- package/references/minimem/scripts/postbuild.js +0 -35
- package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
- package/references/minimem/src/__tests__/errors.test.ts +0 -265
- package/references/minimem/src/__tests__/helpers.ts +0 -199
- package/references/minimem/src/__tests__/internal.test.ts +0 -407
- package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
- package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
- package/references/minimem/src/__tests__/session.test.ts +0 -190
- package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
- package/references/minimem/src/cli/commands/append.ts +0 -76
- package/references/minimem/src/cli/commands/config.ts +0 -262
- package/references/minimem/src/cli/commands/conflicts.ts +0 -413
- package/references/minimem/src/cli/commands/daemon.ts +0 -169
- package/references/minimem/src/cli/commands/index.ts +0 -12
- package/references/minimem/src/cli/commands/init.ts +0 -88
- package/references/minimem/src/cli/commands/mcp.ts +0 -177
- package/references/minimem/src/cli/commands/push-pull.ts +0 -213
- package/references/minimem/src/cli/commands/search.ts +0 -158
- package/references/minimem/src/cli/commands/status.ts +0 -84
- package/references/minimem/src/cli/commands/sync-init.ts +0 -290
- package/references/minimem/src/cli/commands/sync.ts +0 -70
- package/references/minimem/src/cli/commands/upsert.ts +0 -197
- package/references/minimem/src/cli/config.ts +0 -584
- package/references/minimem/src/cli/index.ts +0 -264
- package/references/minimem/src/cli/shared.ts +0 -161
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
- package/references/minimem/src/cli/sync/central.ts +0 -292
- package/references/minimem/src/cli/sync/conflicts.ts +0 -204
- package/references/minimem/src/cli/sync/daemon.ts +0 -407
- package/references/minimem/src/cli/sync/detection.ts +0 -138
- package/references/minimem/src/cli/sync/index.ts +0 -107
- package/references/minimem/src/cli/sync/operations.ts +0 -373
- package/references/minimem/src/cli/sync/registry.ts +0 -279
- package/references/minimem/src/cli/sync/state.ts +0 -355
- package/references/minimem/src/cli/sync/validation.ts +0 -206
- package/references/minimem/src/cli/sync/watcher.ts +0 -234
- package/references/minimem/src/cli/version.ts +0 -34
- package/references/minimem/src/core/index.ts +0 -9
- package/references/minimem/src/core/indexer.ts +0 -628
- package/references/minimem/src/core/searcher.ts +0 -221
- package/references/minimem/src/db/schema.ts +0 -183
- package/references/minimem/src/db/sqlite-vec.ts +0 -24
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
- package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
- package/references/minimem/src/embeddings/batch-openai.ts +0 -409
- package/references/minimem/src/embeddings/embeddings.ts +0 -434
- package/references/minimem/src/index.ts +0 -109
- package/references/minimem/src/internal.ts +0 -299
- package/references/minimem/src/minimem.ts +0 -1276
- package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
- package/references/minimem/src/search/graph.ts +0 -234
- package/references/minimem/src/search/hybrid.ts +0 -151
- package/references/minimem/src/search/search.ts +0 -256
- package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
- package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
- package/references/minimem/src/server/mcp.ts +0 -326
- package/references/minimem/src/server/tools.ts +0 -720
- package/references/minimem/src/session.ts +0 -460
- package/references/minimem/tsconfig.json +0 -19
- package/references/minimem/tsup.config.ts +0 -26
- package/references/minimem/vitest.config.ts +0 -24
- package/references/sessionlog/.husky/pre-commit +0 -1
- package/references/sessionlog/.lintstagedrc.json +0 -4
- package/references/sessionlog/.prettierignore +0 -4
- package/references/sessionlog/.prettierrc.json +0 -11
- package/references/sessionlog/LICENSE +0 -21
- package/references/sessionlog/README.md +0 -453
- package/references/sessionlog/eslint.config.js +0 -58
- package/references/sessionlog/package-lock.json +0 -3672
- package/references/sessionlog/package.json +0 -65
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
- package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
- package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
- package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
- package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
- package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
- package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
- package/references/sessionlog/src/__tests__/types.test.ts +0 -166
- package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
- package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
- package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
- package/references/sessionlog/src/agent/agents/claude-code.ts +0 -1089
- package/references/sessionlog/src/agent/agents/cursor.ts +0 -361
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +0 -632
- package/references/sessionlog/src/agent/agents/opencode.ts +0 -540
- package/references/sessionlog/src/agent/registry.ts +0 -143
- package/references/sessionlog/src/agent/session-types.ts +0 -113
- package/references/sessionlog/src/agent/types.ts +0 -220
- package/references/sessionlog/src/cli.ts +0 -597
- package/references/sessionlog/src/commands/clean.ts +0 -133
- package/references/sessionlog/src/commands/disable.ts +0 -84
- package/references/sessionlog/src/commands/doctor.ts +0 -145
- package/references/sessionlog/src/commands/enable.ts +0 -202
- package/references/sessionlog/src/commands/explain.ts +0 -261
- package/references/sessionlog/src/commands/reset.ts +0 -105
- package/references/sessionlog/src/commands/resume.ts +0 -180
- package/references/sessionlog/src/commands/rewind.ts +0 -195
- package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
- package/references/sessionlog/src/commands/status.ts +0 -172
- package/references/sessionlog/src/config.ts +0 -165
- package/references/sessionlog/src/events/event-log.ts +0 -126
- package/references/sessionlog/src/git-operations.ts +0 -558
- package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
- package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
- package/references/sessionlog/src/index.ts +0 -650
- package/references/sessionlog/src/security/redaction.ts +0 -283
- package/references/sessionlog/src/session/state-machine.ts +0 -452
- package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
- package/references/sessionlog/src/store/native-store.ts +0 -173
- package/references/sessionlog/src/store/provider-types.ts +0 -99
- package/references/sessionlog/src/store/session-store.ts +0 -266
- package/references/sessionlog/src/strategy/attribution.ts +0 -296
- package/references/sessionlog/src/strategy/common.ts +0 -207
- package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
- package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
- package/references/sessionlog/src/strategy/types.ts +0 -279
- package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
- package/references/sessionlog/src/summarize/summarize.ts +0 -432
- package/references/sessionlog/src/types.ts +0 -508
- package/references/sessionlog/src/utils/chunk-files.ts +0 -49
- package/references/sessionlog/src/utils/commit-message.ts +0 -65
- package/references/sessionlog/src/utils/detect-agent.ts +0 -36
- package/references/sessionlog/src/utils/hook-managers.ts +0 -125
- package/references/sessionlog/src/utils/ide-tags.ts +0 -32
- package/references/sessionlog/src/utils/paths.ts +0 -79
- package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
- package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
- package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
- package/references/sessionlog/src/utils/string-utils.ts +0 -46
- package/references/sessionlog/src/utils/todo-extract.ts +0 -188
- package/references/sessionlog/src/utils/trailers.ts +0 -187
- package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
- package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
- package/references/sessionlog/src/utils/tree-ops.ts +0 -219
- package/references/sessionlog/src/utils/tty.ts +0 -72
- package/references/sessionlog/src/utils/validation.ts +0 -65
- package/references/sessionlog/src/utils/worktree.ts +0 -58
- package/references/sessionlog/src/wire-types.ts +0 -59
- package/references/sessionlog/templates/setup-env.sh +0 -153
- package/references/sessionlog/tsconfig.json +0 -18
- package/references/sessionlog/vitest.config.ts +0 -12
- package/references/skill-tree/.claude/settings.json +0 -6
- package/references/skill-tree/.sudocode/issues.jsonl +0 -19
- package/references/skill-tree/.sudocode/specs.jsonl +0 -3
- package/references/skill-tree/CLAUDE.md +0 -126
- package/references/skill-tree/README.md +0 -372
- package/references/skill-tree/docs/GAPS_v1.md +0 -221
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
- package/references/skill-tree/docs/TODOS.md +0 -91
- package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
- package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
- package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
- package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
- package/references/skill-tree/docs/scraper/README.md +0 -170
- package/references/skill-tree/examples/basic-usage.ts +0 -164
- package/references/skill-tree/package-lock.json +0 -1852
- package/references/skill-tree/package.json +0 -66
- package/references/skill-tree/scraper/README.md +0 -123
- package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
- package/references/skill-tree/scraper/docs/PLAN.md +0 -336
- package/references/skill-tree/scraper/drizzle.config.ts +0 -10
- package/references/skill-tree/scraper/package-lock.json +0 -6329
- package/references/skill-tree/scraper/package.json +0 -68
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
- package/references/skill-tree/scraper/tsup.config.ts +0 -14
- package/references/skill-tree/scraper/vitest.config.ts +0 -17
- package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
- package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
- package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
- package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
- package/references/skill-tree/test/run-all.ts +0 -106
- package/references/skill-tree/test/utils.ts +0 -128
- package/references/skill-tree/vitest.config.ts +0 -16
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration Management
|
|
3
|
-
*
|
|
4
|
-
* Loads and manages Sessionlog settings from .sessionlog/settings.json
|
|
5
|
-
* and .sessionlog/settings.local.json (local overrides).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import * as fs from 'node:fs';
|
|
9
|
-
import * as path from 'node:path';
|
|
10
|
-
import {
|
|
11
|
-
type SessionlogSettings,
|
|
12
|
-
DEFAULT_SETTINGS,
|
|
13
|
-
} from './types.js';
|
|
14
|
-
import { getWorktreeRoot } from './git-operations.js';
|
|
15
|
-
import { atomicWriteFile } from './git-operations.js';
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Resolve the sessionlog directory for a given repo root.
|
|
19
|
-
* Priority: SESSIONLOG_PROJECT_DIR env var > .swarm/sessionlog exists > .sessionlog
|
|
20
|
-
*/
|
|
21
|
-
export function resolveSessionlogDir(root: string): string {
|
|
22
|
-
const envDir = process.env.SESSIONLOG_PROJECT_DIR;
|
|
23
|
-
if (envDir) return path.join(root, envDir);
|
|
24
|
-
const swarmDir = path.join(root, '.swarm', 'sessionlog');
|
|
25
|
-
if (fs.existsSync(swarmDir)) return swarmDir;
|
|
26
|
-
return path.join(root, '.sessionlog');
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// ============================================================================
|
|
30
|
-
// Load Settings
|
|
31
|
-
// ============================================================================
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Load effective settings (project merged with local overrides)
|
|
35
|
-
*/
|
|
36
|
-
export async function loadSettings(cwd?: string): Promise<SessionlogSettings> {
|
|
37
|
-
const project = await loadProjectSettings(cwd);
|
|
38
|
-
const local = await loadLocalSettings(cwd);
|
|
39
|
-
return mergeSettings(project, local);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Load project-level settings (settings.json inside resolved sessionlog dir)
|
|
44
|
-
*/
|
|
45
|
-
export async function loadProjectSettings(cwd?: string): Promise<SessionlogSettings> {
|
|
46
|
-
const root = cwd ?? (await getWorktreeRoot());
|
|
47
|
-
const settingsPath = path.join(resolveSessionlogDir(root), 'settings.json');
|
|
48
|
-
return loadSettingsFile(settingsPath);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Load local settings (settings.local.json inside resolved sessionlog dir)
|
|
53
|
-
*/
|
|
54
|
-
export async function loadLocalSettings(cwd?: string): Promise<SessionlogSettings> {
|
|
55
|
-
const root = cwd ?? (await getWorktreeRoot());
|
|
56
|
-
const settingsPath = path.join(resolveSessionlogDir(root), 'settings.local.json');
|
|
57
|
-
return loadSettingsFile(settingsPath);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function loadSettingsFile(filePath: string): SessionlogSettings {
|
|
61
|
-
try {
|
|
62
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
63
|
-
const data = JSON.parse(content) as Partial<SessionlogSettings>;
|
|
64
|
-
return { ...DEFAULT_SETTINGS, ...data };
|
|
65
|
-
} catch {
|
|
66
|
-
return { ...DEFAULT_SETTINGS };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function mergeSettings(project: SessionlogSettings, local: SessionlogSettings): SessionlogSettings {
|
|
71
|
-
return {
|
|
72
|
-
enabled: local.enabled !== DEFAULT_SETTINGS.enabled ? local.enabled : project.enabled,
|
|
73
|
-
strategy: local.strategy !== DEFAULT_SETTINGS.strategy ? local.strategy : project.strategy,
|
|
74
|
-
logLevel: local.logLevel ?? project.logLevel,
|
|
75
|
-
skipPushSessions: local.skipPushSessions ?? project.skipPushSessions,
|
|
76
|
-
telemetryEnabled: local.telemetryEnabled ?? project.telemetryEnabled,
|
|
77
|
-
summarizationEnabled: local.summarizationEnabled ?? project.summarizationEnabled,
|
|
78
|
-
sessionRepoPath: local.sessionRepoPath ?? project.sessionRepoPath,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// ============================================================================
|
|
83
|
-
// Save Settings
|
|
84
|
-
// ============================================================================
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Save project-level settings
|
|
88
|
-
*/
|
|
89
|
-
export async function saveProjectSettings(
|
|
90
|
-
settings: Partial<SessionlogSettings>,
|
|
91
|
-
cwd?: string,
|
|
92
|
-
): Promise<void> {
|
|
93
|
-
const root = cwd ?? (await getWorktreeRoot());
|
|
94
|
-
const sessionlogDir = resolveSessionlogDir(root);
|
|
95
|
-
const settingsPath = path.join(sessionlogDir, 'settings.json');
|
|
96
|
-
await ensureSessionlogDir(root);
|
|
97
|
-
await atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Save local settings
|
|
102
|
-
*/
|
|
103
|
-
export async function saveLocalSettings(
|
|
104
|
-
settings: Partial<SessionlogSettings>,
|
|
105
|
-
cwd?: string,
|
|
106
|
-
): Promise<void> {
|
|
107
|
-
const root = cwd ?? (await getWorktreeRoot());
|
|
108
|
-
const sessionlogDir = resolveSessionlogDir(root);
|
|
109
|
-
const settingsPath = path.join(sessionlogDir, 'settings.local.json');
|
|
110
|
-
await ensureSessionlogDir(root);
|
|
111
|
-
await atomicWriteFile(settingsPath, JSON.stringify(settings, null, 2));
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// ============================================================================
|
|
115
|
-
// Queries
|
|
116
|
-
// ============================================================================
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Check if Sessionlog is enabled in the current repository
|
|
120
|
-
*/
|
|
121
|
-
export async function isEnabled(cwd?: string): Promise<boolean> {
|
|
122
|
-
const settings = await loadSettings(cwd);
|
|
123
|
-
return settings.enabled;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Get the current strategy name
|
|
128
|
-
*/
|
|
129
|
-
export async function getStrategy(cwd?: string): Promise<string> {
|
|
130
|
-
const settings = await loadSettings(cwd);
|
|
131
|
-
return settings.strategy;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// ============================================================================
|
|
135
|
-
// Helpers
|
|
136
|
-
// ============================================================================
|
|
137
|
-
|
|
138
|
-
async function ensureSessionlogDir(root: string): Promise<void> {
|
|
139
|
-
const dir = resolveSessionlogDir(root);
|
|
140
|
-
await fs.promises.mkdir(dir, { recursive: true });
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Ensure the .sessionlog directory is gitignored for local files
|
|
145
|
-
*/
|
|
146
|
-
export async function ensureGitignore(cwd?: string): Promise<void> {
|
|
147
|
-
const root = cwd ?? (await getWorktreeRoot());
|
|
148
|
-
const gitignorePath = path.join(resolveSessionlogDir(root), '.gitignore');
|
|
149
|
-
|
|
150
|
-
const content = [
|
|
151
|
-
'# Sessionlog local files (not committed)',
|
|
152
|
-
'settings.local.json',
|
|
153
|
-
'tmp/',
|
|
154
|
-
'logs/',
|
|
155
|
-
'',
|
|
156
|
-
].join('\n');
|
|
157
|
-
|
|
158
|
-
try {
|
|
159
|
-
await fs.promises.access(gitignorePath);
|
|
160
|
-
// Already exists
|
|
161
|
-
} catch {
|
|
162
|
-
await ensureSessionlogDir(root);
|
|
163
|
-
await fs.promises.writeFile(gitignorePath, content);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event Log
|
|
3
|
-
*
|
|
4
|
-
* Appends checkpoint events to a JSONL file (.sessionlog/events.jsonl)
|
|
5
|
-
* for consumption by external systems (e.g., MAP session sync).
|
|
6
|
-
*
|
|
7
|
-
* Sessionlog runs as standalone git hooks (separate processes), so
|
|
8
|
-
* in-process callbacks don't work across process boundaries. This
|
|
9
|
-
* file-based event log bridges that gap.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import * as fs from 'node:fs';
|
|
13
|
-
import * as path from 'node:path';
|
|
14
|
-
import { SESSIONLOG_EVENTS_FILE } from '../types.js';
|
|
15
|
-
import type { TokenUsage } from '../types.js';
|
|
16
|
-
import { atomicWriteFile } from '../git-operations.js';
|
|
17
|
-
|
|
18
|
-
// ============================================================================
|
|
19
|
-
// Types
|
|
20
|
-
// ============================================================================
|
|
21
|
-
|
|
22
|
-
/** Event written to the JSONL log after a checkpoint is committed. */
|
|
23
|
-
export interface CheckpointEvent {
|
|
24
|
-
type: 'checkpoint_committed';
|
|
25
|
-
timestamp: string;
|
|
26
|
-
checkpointID: string;
|
|
27
|
-
sessionID: string;
|
|
28
|
-
agent: string;
|
|
29
|
-
branch?: string;
|
|
30
|
-
filesTouched: string[];
|
|
31
|
-
checkpointsCount: number;
|
|
32
|
-
tokenUsage?: TokenUsage;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export interface EventLogOptions {
|
|
36
|
-
/** Keep only the last N events. 0 or undefined means keep all. */
|
|
37
|
-
maxEvents?: number;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// ============================================================================
|
|
41
|
-
// Write
|
|
42
|
-
// ============================================================================
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Append a checkpoint event to the event log file and optionally prune.
|
|
46
|
-
*
|
|
47
|
-
* @param cwd - Repository root directory
|
|
48
|
-
* @param event - The checkpoint event to record
|
|
49
|
-
* @param opts - Optional retention settings
|
|
50
|
-
*/
|
|
51
|
-
export async function appendCheckpointEvent(
|
|
52
|
-
cwd: string,
|
|
53
|
-
event: CheckpointEvent,
|
|
54
|
-
opts?: EventLogOptions,
|
|
55
|
-
): Promise<void> {
|
|
56
|
-
const filePath = path.join(cwd, SESSIONLOG_EVENTS_FILE);
|
|
57
|
-
const line = JSON.stringify(event) + '\n';
|
|
58
|
-
|
|
59
|
-
// Ensure directory exists
|
|
60
|
-
const dir = path.dirname(filePath);
|
|
61
|
-
await fs.promises.mkdir(dir, { recursive: true });
|
|
62
|
-
|
|
63
|
-
// Append the new event
|
|
64
|
-
await fs.promises.appendFile(filePath, line, 'utf-8');
|
|
65
|
-
|
|
66
|
-
// Prune if maxEvents is configured
|
|
67
|
-
const maxEvents = opts?.maxEvents;
|
|
68
|
-
if (maxEvents && maxEvents > 0) {
|
|
69
|
-
await pruneEventLog(filePath, maxEvents);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// ============================================================================
|
|
74
|
-
// Read
|
|
75
|
-
// ============================================================================
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Read all checkpoint events from the event log file.
|
|
79
|
-
*
|
|
80
|
-
* @param cwd - Repository root directory
|
|
81
|
-
* @returns Array of events in chronological order (oldest first)
|
|
82
|
-
*/
|
|
83
|
-
export function readCheckpointEvents(cwd: string): CheckpointEvent[] {
|
|
84
|
-
const filePath = path.join(cwd, SESSIONLOG_EVENTS_FILE);
|
|
85
|
-
|
|
86
|
-
let content: string;
|
|
87
|
-
try {
|
|
88
|
-
content = fs.readFileSync(filePath, 'utf-8');
|
|
89
|
-
} catch {
|
|
90
|
-
return [];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const events: CheckpointEvent[] = [];
|
|
94
|
-
for (const line of content.split('\n')) {
|
|
95
|
-
const trimmed = line.trim();
|
|
96
|
-
if (!trimmed) continue;
|
|
97
|
-
try {
|
|
98
|
-
events.push(JSON.parse(trimmed) as CheckpointEvent);
|
|
99
|
-
} catch {
|
|
100
|
-
// Skip malformed lines
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return events;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// ============================================================================
|
|
107
|
-
// Prune
|
|
108
|
-
// ============================================================================
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Trim the event log to the last N entries.
|
|
112
|
-
*/
|
|
113
|
-
async function pruneEventLog(filePath: string, maxEvents: number): Promise<void> {
|
|
114
|
-
let content: string;
|
|
115
|
-
try {
|
|
116
|
-
content = await fs.promises.readFile(filePath, 'utf-8');
|
|
117
|
-
} catch {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const lines = content.split('\n').filter((l) => l.trim().length > 0);
|
|
122
|
-
if (lines.length <= maxEvents) return;
|
|
123
|
-
|
|
124
|
-
const kept = lines.slice(-maxEvents);
|
|
125
|
-
await atomicWriteFile(filePath, kept.join('\n') + '\n');
|
|
126
|
-
}
|