agent-recall-core 3.3.14 → 3.3.16

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.
Files changed (59) hide show
  1. package/README.md +404 -148
  2. package/dist/digest/match.d.ts +31 -0
  3. package/dist/digest/match.d.ts.map +1 -0
  4. package/dist/digest/match.js +132 -0
  5. package/dist/digest/match.js.map +1 -0
  6. package/dist/digest/store.d.ts +42 -0
  7. package/dist/digest/store.d.ts.map +1 -0
  8. package/dist/digest/store.js +296 -0
  9. package/dist/digest/store.js.map +1 -0
  10. package/dist/digest/types.d.ts +106 -0
  11. package/dist/digest/types.d.ts.map +1 -0
  12. package/dist/digest/types.js +22 -0
  13. package/dist/digest/types.js.map +1 -0
  14. package/dist/helpers/journal-files.d.ts.map +1 -1
  15. package/dist/helpers/journal-files.js +34 -15
  16. package/dist/helpers/journal-files.js.map +1 -1
  17. package/dist/index.d.ts +9 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +11 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/palace/awareness.d.ts.map +1 -1
  22. package/dist/palace/awareness.js +20 -14
  23. package/dist/palace/awareness.js.map +1 -1
  24. package/dist/storage/filelock.d.ts +19 -0
  25. package/dist/storage/filelock.d.ts.map +1 -0
  26. package/dist/storage/filelock.js +85 -0
  27. package/dist/storage/filelock.js.map +1 -0
  28. package/dist/storage/fs-utils.d.ts.map +1 -1
  29. package/dist/storage/fs-utils.js +3 -1
  30. package/dist/storage/fs-utils.js.map +1 -1
  31. package/dist/storage/paths.d.ts +8 -0
  32. package/dist/storage/paths.d.ts.map +1 -1
  33. package/dist/storage/paths.js +18 -0
  34. package/dist/storage/paths.js.map +1 -1
  35. package/dist/storage/session.d.ts +25 -0
  36. package/dist/storage/session.d.ts.map +1 -0
  37. package/dist/storage/session.js +59 -0
  38. package/dist/storage/session.js.map +1 -0
  39. package/dist/tools-logic/digest-read.d.ts +7 -0
  40. package/dist/tools-logic/digest-read.d.ts.map +1 -0
  41. package/dist/tools-logic/digest-read.js +22 -0
  42. package/dist/tools-logic/digest-read.js.map +1 -0
  43. package/dist/tools-logic/digest-recall.d.ts +7 -0
  44. package/dist/tools-logic/digest-recall.d.ts.map +1 -0
  45. package/dist/tools-logic/digest-recall.js +32 -0
  46. package/dist/tools-logic/digest-recall.js.map +1 -0
  47. package/dist/tools-logic/digest-store.d.ts +7 -0
  48. package/dist/tools-logic/digest-store.d.ts.map +1 -0
  49. package/dist/tools-logic/digest-store.js +10 -0
  50. package/dist/tools-logic/digest-store.js.map +1 -0
  51. package/dist/tools-logic/journal-capture.d.ts.map +1 -1
  52. package/dist/tools-logic/journal-capture.js +15 -2
  53. package/dist/tools-logic/journal-capture.js.map +1 -1
  54. package/dist/tools-logic/journal-write.d.ts.map +1 -1
  55. package/dist/tools-logic/journal-write.js +15 -2
  56. package/dist/tools-logic/journal-write.js.map +1 -1
  57. package/dist/types.d.ts +1 -1
  58. package/dist/types.js +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Session identity — unique per process to prevent multi-window write conflicts.
3
+ *
4
+ * When multiple Claude Code sessions run /arsave simultaneously,
5
+ * each writes to its own journal file: YYYY-MM-DD-{sessionId}.md
6
+ * instead of fighting over a shared YYYY-MM-DD.md.
7
+ */
8
+ import * as crypto from "node:crypto";
9
+ /** 6-char hex ID, unique per process. Generated once on import. */
10
+ const SESSION_ID = crypto.randomBytes(3).toString("hex");
11
+ /** Track which files this session has claimed (owns). */
12
+ const ownedFiles = new Set();
13
+ /** Get the current process session ID. */
14
+ export function getSessionId() {
15
+ return SESSION_ID;
16
+ }
17
+ /**
18
+ * Generate a session-scoped journal filename.
19
+ *
20
+ * - First session of the day: writes to YYYY-MM-DD.md (backward compat)
21
+ * - Concurrent sessions: write to YYYY-MM-DD-{sessionId}.md
22
+ *
23
+ * Once a file is claimed by this session, subsequent calls return the same name.
24
+ */
25
+ export function journalFileName(date, baseExists) {
26
+ const baseKey = `journal:${date}`;
27
+ // If this session already claimed a file for this date, reuse it
28
+ if (ownedFiles.has(`${baseKey}:base`))
29
+ return `${date}.md`;
30
+ if (ownedFiles.has(`${baseKey}:session`))
31
+ return `${date}-${SESSION_ID}.md`;
32
+ if (!baseExists) {
33
+ ownedFiles.add(`${baseKey}:base`);
34
+ return `${date}.md`;
35
+ }
36
+ ownedFiles.add(`${baseKey}:session`);
37
+ return `${date}-${SESSION_ID}.md`;
38
+ }
39
+ /**
40
+ * Generate a session-scoped log filename for captures.
41
+ */
42
+ export function captureLogFileName(date, baseExists) {
43
+ const baseKey = `capture:${date}`;
44
+ if (ownedFiles.has(`${baseKey}:base`))
45
+ return `${date}-log.md`;
46
+ if (ownedFiles.has(`${baseKey}:session`))
47
+ return `${date}-${SESSION_ID}-log.md`;
48
+ if (!baseExists) {
49
+ ownedFiles.add(`${baseKey}:base`);
50
+ return `${date}-log.md`;
51
+ }
52
+ ownedFiles.add(`${baseKey}:session`);
53
+ return `${date}-${SESSION_ID}-log.md`;
54
+ }
55
+ /** Reset owned files (for testing only). */
56
+ export function resetOwnedFiles() {
57
+ ownedFiles.clear();
58
+ }
59
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/storage/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,mEAAmE;AACnE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEzD,yDAAyD;AACzD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;AAErC,0CAA0C;AAC1C,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,UAAmB;IAC/D,MAAM,OAAO,GAAG,WAAW,IAAI,EAAE,CAAC;IAElC,iEAAiE;IACjE,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC;QAAE,OAAO,GAAG,IAAI,KAAK,CAAC;IAC3D,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,UAAU,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,UAAU,KAAK,CAAC;IAE5E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC;QAClC,OAAO,GAAG,IAAI,KAAK,CAAC;IACtB,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;IACrC,OAAO,GAAG,IAAI,IAAI,UAAU,KAAK,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,UAAmB;IAClE,MAAM,OAAO,GAAG,WAAW,IAAI,EAAE,CAAC;IAElC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC;QAAE,OAAO,GAAG,IAAI,SAAS,CAAC;IAC/D,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,UAAU,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,UAAU,SAAS,CAAC;IAEhF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC;QAClC,OAAO,GAAG,IAAI,SAAS,CAAC;IAC1B,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC;IACrC,OAAO,GAAG,IAAI,IAAI,UAAU,SAAS,CAAC;AACxC,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,eAAe;IAC7B,UAAU,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tool logic: read full content of a specific digest.
3
+ */
4
+ import type { DigestReadInput, DigestReadResult } from "../digest/types.js";
5
+ export type { DigestReadInput, DigestReadResult };
6
+ export declare function digestRead(input: DigestReadInput): Promise<DigestReadResult>;
7
+ //# sourceMappingURL=digest-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest-read.d.ts","sourceRoot":"","sources":["../../src/tools-logic/digest-read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;AAElD,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkBlF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tool logic: read full content of a specific digest.
3
+ */
4
+ import { resolveProject } from "../storage/project.js";
5
+ import { readDigest as readDigestFromStore, recordAccess } from "../digest/store.js";
6
+ export async function digestRead(input) {
7
+ const project = await resolveProject(input.project ?? "auto");
8
+ // Try project-scoped first
9
+ let result = readDigestFromStore(project, input.digest_id, false);
10
+ if (result.meta) {
11
+ recordAccess(project, input.digest_id, false);
12
+ return { success: true, ...result };
13
+ }
14
+ // Try global
15
+ result = readDigestFromStore(project, input.digest_id, true);
16
+ if (result.meta) {
17
+ recordAccess("__global__", input.digest_id, true);
18
+ return { success: true, ...result };
19
+ }
20
+ return { success: false, meta: null, content: null };
21
+ }
22
+ //# sourceMappingURL=digest-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest-read.js","sourceRoot":"","sources":["../../src/tools-logic/digest-read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKrF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAE9D,2BAA2B;IAC3B,IAAI,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,aAAa;IACb,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tool logic: recall matching digests for a query.
3
+ */
4
+ import type { DigestRecallInput, DigestRecallResult } from "../digest/types.js";
5
+ export type { DigestRecallInput, DigestRecallResult };
6
+ export declare function digestRecall(input: DigestRecallInput): Promise<DigestRecallResult>;
7
+ //# sourceMappingURL=digest-recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest-recall.d.ts","sourceRoot":"","sources":["../../src/tools-logic/digest-recall.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;AAEtD,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4BxF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Tool logic: recall matching digests for a query.
3
+ */
4
+ import { resolveProject } from "../storage/project.js";
5
+ import { findMatchingDigests } from "../digest/match.js";
6
+ import { recordAccess } from "../digest/store.js";
7
+ export async function digestRecall(input) {
8
+ const project = await resolveProject(input.project ?? "auto");
9
+ const limit = input.limit ?? 5;
10
+ const digests = findMatchingDigests(input.query, project, {
11
+ includeStale: input.include_stale ?? false,
12
+ includeGlobal: input.include_global ?? true,
13
+ limit,
14
+ });
15
+ // Record access for non-stale matches
16
+ for (const d of digests) {
17
+ if (!d.stale) {
18
+ const isGlobal = d.project === "__global__";
19
+ recordAccess(isGlobal ? "__global__" : d.project, d.id, isGlobal);
20
+ }
21
+ }
22
+ const tokensSaved = digests
23
+ .filter((d) => !d.stale)
24
+ .reduce((sum, d) => sum + d.token_estimate, 0);
25
+ return {
26
+ query: input.query,
27
+ digests,
28
+ result_count: digests.length,
29
+ tokens_saved_estimate: tokensSaved,
30
+ };
31
+ }
32
+ //# sourceMappingURL=digest-recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest-recall.js","sourceRoot":"","sources":["../../src/tools-logic/digest-recall.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAwB;IACzD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAE/B,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;QACxD,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,KAAK;QAC1C,aAAa,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC3C,KAAK;KACN,CAAC,CAAC;IAEH,sCAAsC;IACtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC;YAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,OAAO;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACvB,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO;QACP,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,qBAAqB,EAAE,WAAW;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tool logic: store a digest (pre-computed context).
3
+ */
4
+ import type { DigestStoreInput, DigestStoreResult } from "../digest/types.js";
5
+ export type { DigestStoreInput, DigestStoreResult };
6
+ export declare function digestStore(input: DigestStoreInput): Promise<DigestStoreResult>;
7
+ //# sourceMappingURL=digest-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest-store.d.ts","sourceRoot":"","sources":["../../src/tools-logic/digest-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;AAEpD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGrF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tool logic: store a digest (pre-computed context).
3
+ */
4
+ import { resolveProject } from "../storage/project.js";
5
+ import { createDigest } from "../digest/store.js";
6
+ export async function digestStore(input) {
7
+ const project = await resolveProject(input.project ?? "auto");
8
+ return createDigest({ ...input, project });
9
+ }
10
+ //# sourceMappingURL=digest-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest-store.js","sourceRoot":"","sources":["../../src/tools-logic/digest-store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAC9D,OAAO,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"journal-capture.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4D9F"}
1
+ {"version":3,"file":"journal-capture.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuE9F"}
@@ -9,6 +9,8 @@ import { ensurePalaceInitialized, roomExists, createRoom } from "../palace/rooms
9
9
  import { palaceDir } from "../storage/paths.js";
10
10
  import { fanOut } from "../palace/fan-out.js";
11
11
  import { updatePalaceIndex } from "../palace/index-manager.js";
12
+ import { captureLogFileName } from "../storage/session.js";
13
+ import { generateFrontmatter } from "../palace/obsidian.js";
12
14
  export async function journalCapture(input) {
13
15
  const slug = await resolveProject(input.project);
14
16
  const date = todayISO();
@@ -23,7 +25,10 @@ export async function journalCapture(input) {
23
25
  input.tags = [type, ...kws];
24
26
  autoTags = input.tags;
25
27
  }
26
- const logPath = path.join(dir, `${date}-log.md`);
28
+ // Session-safe log filename: avoids conflicts when multiple sessions capture simultaneously
29
+ const baseLogPath = path.join(dir, `${date}-log.md`);
30
+ const logFileName = captureLogFileName(date, fs.existsSync(baseLogPath));
31
+ const logPath = path.join(dir, logFileName);
27
32
  const entryNum = countLogEntries(logPath) + 1;
28
33
  const tagStr = input.tags && input.tags.length > 0 ? ` [${input.tags.join(", ")}]` : "";
29
34
  const timestamp = new Date().toISOString().slice(11, 19);
@@ -31,7 +36,15 @@ export async function journalCapture(input) {
31
36
  entry += `**Q:** ${input.question}\n\n`;
32
37
  entry += `**A:** ${input.answer}\n\n`;
33
38
  if (!fs.existsSync(logPath)) {
34
- const header = `# ${date} ${slug} — Session Log\n\n`;
39
+ // Obsidian-compatible frontmatter for new capture logs
40
+ const fm = generateFrontmatter({
41
+ type: "capture-log",
42
+ project: slug,
43
+ date,
44
+ tags: ["capture", slug],
45
+ created: new Date().toISOString(),
46
+ });
47
+ const header = `${fm}# ${date} — ${slug} — Session Log\n\n`;
35
48
  fs.writeFileSync(logPath, header + entry, "utf-8");
36
49
  }
37
50
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"journal-capture.js","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal-capture.js","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"journal-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiDxF"}
1
+ {"version":3,"file":"journal-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6DxF"}
@@ -9,18 +9,31 @@ import { ensurePalaceInitialized, roomExists, createRoom } from "../palace/rooms
9
9
  import { fanOut } from "../palace/fan-out.js";
10
10
  import { generateFrontmatter } from "../palace/obsidian.js";
11
11
  import { updatePalaceIndex } from "../palace/index-manager.js";
12
+ import { journalFileName } from "../storage/session.js";
12
13
  export async function journalWrite(input) {
13
14
  const slug = await resolveProject(input.project);
14
15
  const date = todayISO();
15
16
  const dir = journalDir(slug);
16
17
  ensureDir(dir);
17
- const filePath = path.join(dir, `${date}.md`);
18
+ // Session-safe filename: if another session already wrote today's journal,
19
+ // this session gets its own file (YYYY-MM-DD-{sessionId}.md) to avoid conflicts.
20
+ const basePath = path.join(dir, `${date}.md`);
21
+ const fileName = journalFileName(date, fs.existsSync(basePath));
22
+ const filePath = path.join(dir, fileName);
18
23
  let existing = "";
19
24
  if (fs.existsSync(filePath)) {
20
25
  existing = fs.readFileSync(filePath, "utf-8");
21
26
  }
22
27
  else if (!input.section || input.section !== "replace_all") {
23
- existing = `# ${date} ${slug}\n`;
28
+ // Obsidian-compatible frontmatter for new journal entries
29
+ const fm = generateFrontmatter({
30
+ type: "journal",
31
+ project: slug,
32
+ date,
33
+ tags: ["journal", slug],
34
+ created: new Date().toISOString(),
35
+ });
36
+ existing = `${fm}# ${date} — ${slug}\n`;
24
37
  }
25
38
  const sectionArg = input.section ?? null;
26
39
  const updated = appendToSection(existing, input.content, sectionArg);
@@ -1 +1 @@
1
- {"version":3,"file":"journal-write.js","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal-write.js","sourceRoot":"","sources":["../../src/tools-logic/journal-write.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared types, interfaces, and constants for agent-recall-mcp.
3
3
  */
4
- export declare const VERSION = "3.3.12";
4
+ export declare const VERSION = "3.3.16";
5
5
  /**
6
6
  * Set the storage root directory. This is process-global state —
7
7
  * only one root is active at a time. Call before any other operations.
package/dist/types.js CHANGED
@@ -6,7 +6,7 @@ import * as os from "node:os";
6
6
  // ---------------------------------------------------------------------------
7
7
  // Constants
8
8
  // ---------------------------------------------------------------------------
9
- export const VERSION = "3.3.12";
9
+ export const VERSION = "3.3.16";
10
10
  // ---------------------------------------------------------------------------
11
11
  // Root directory (configurable at runtime for SDK usage)
12
12
  // ---------------------------------------------------------------------------
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-recall-core",
3
- "version": "3.3.14",
3
+ "version": "3.3.16",
4
4
  "description": "Core memory palace engine for AgentRecall",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",