@saleem11kh/repomem 0.3.1 → 0.4.0

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.
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.UNKNOWN_AGENT = exports.DEFAULT_SESSION_NAME = void 0;
37
+ exports.sessionState = sessionState;
38
+ exports.setSessionAgent = setSessionAgent;
39
+ exports.reserveSessionFile = reserveSessionFile;
40
+ exports.nameSession = nameSession;
41
+ exports.sessionFrontMatter = sessionFrontMatter;
42
+ exports.resetSession = resetSession;
43
+ /**
44
+ * Per-session identity for the sessions/ memory type.
45
+ *
46
+ * A session used to be identified by its date alone, so everything written on
47
+ * one day landed in one appended file. Two agents — or two teammates — working
48
+ * the same day interleaved into a single unreadable narrative and conflicted on
49
+ * every merge. Each session now owns one file:
50
+ *
51
+ * sessions/YYYY-MM-DD-HHMM-<name>.md
52
+ *
53
+ * The timestamp is the session's *start*, so it stays put across appends, and
54
+ * being zero-padded it makes filename order chronological order.
55
+ *
56
+ * The MCP server is stdio-spawned per client session, so module state here lives
57
+ * exactly as long as the session it describes.
58
+ */
59
+ const fs = __importStar(require("fs"));
60
+ const path = __importStar(require("path"));
61
+ const file_store_js_1 = require("../store/file-store.js");
62
+ const util_js_1 = require("./util.js");
63
+ exports.DEFAULT_SESSION_NAME = "untitled";
64
+ exports.UNKNOWN_AGENT = "unknown";
65
+ let state = null;
66
+ /** The current session, started lazily on first use. */
67
+ function sessionState() {
68
+ if (!state) {
69
+ state = {
70
+ date: (0, util_js_1.today)(),
71
+ time: (0, util_js_1.clock)(),
72
+ name: exports.DEFAULT_SESSION_NAME,
73
+ agent: exports.UNKNOWN_AGENT,
74
+ startedAt: (0, util_js_1.timestamp)(),
75
+ filename: null,
76
+ };
77
+ }
78
+ return state;
79
+ }
80
+ /** Record which agent connected — taken from the MCP `initialize` clientInfo. */
81
+ function setSessionAgent(agent) {
82
+ const trimmed = agent.trim();
83
+ if (trimmed)
84
+ sessionState().agent = trimmed;
85
+ }
86
+ function sessionsDir(projectRoot) {
87
+ return path.join((0, file_store_js_1.getRepomemRoot)(projectRoot), "sessions");
88
+ }
89
+ /**
90
+ * Candidate filename for a name, stepping past any file another session already
91
+ * owns. Two sessions starting in the same minute would otherwise land on the
92
+ * same path and silently braid together — the exact failure this design removes.
93
+ */
94
+ function freeFilename(name, projectRoot, ignore) {
95
+ const s = sessionState();
96
+ const base = `${s.date}-${s.time}-${(0, util_js_1.slugify)(name)}`;
97
+ const dir = sessionsDir(projectRoot);
98
+ for (let n = 1;; n++) {
99
+ const candidate = n === 1 ? `${base}.md` : `${base}-${n}.md`;
100
+ if (candidate === ignore)
101
+ return candidate;
102
+ if (!fs.existsSync(path.join(dir, candidate)))
103
+ return candidate;
104
+ }
105
+ }
106
+ /**
107
+ * The file this session writes to, chosen once and then fixed. Call before any
108
+ * session write.
109
+ */
110
+ function reserveSessionFile(projectRoot) {
111
+ const s = sessionState();
112
+ if (!s.filename)
113
+ s.filename = freeFilename(s.name, projectRoot, null);
114
+ return s.filename;
115
+ }
116
+ /**
117
+ * Adopt a name for the running session. If the file was already created under
118
+ * the old name it is renamed, so one session always maps to exactly one file.
119
+ * Returns the current filename.
120
+ */
121
+ function nameSession(name, projectRoot) {
122
+ const s = sessionState();
123
+ const wanted = name.trim();
124
+ if (!wanted || (0, util_js_1.slugify)(wanted) === (0, util_js_1.slugify)(s.name))
125
+ return reserveSessionFile(projectRoot);
126
+ const previous = s.filename;
127
+ s.name = wanted;
128
+ const next = freeFilename(wanted, projectRoot, previous);
129
+ if (previous && previous !== next) {
130
+ const dir = sessionsDir(projectRoot);
131
+ try {
132
+ fs.renameSync(path.join(dir, previous), path.join(dir, next));
133
+ }
134
+ catch {
135
+ /* a locked or vanished file is not worth failing a save over */
136
+ }
137
+ }
138
+ s.filename = next;
139
+ return next;
140
+ }
141
+ /**
142
+ * The YAML front matter for a session file. Written once, when the file is
143
+ * created — sessions previously had none, which is why they were the only type
144
+ * mem_context could not summarise.
145
+ */
146
+ function sessionFrontMatter(summary, s = sessionState()) {
147
+ const lines = ["---", `date: ${s.date}`, `started: ${s.startedAt}`, `session: ${s.name}`];
148
+ if (s.agent !== exports.UNKNOWN_AGENT)
149
+ lines.push(`agent: ${s.agent}`);
150
+ if (summary)
151
+ lines.push(`summary: ${summary.replace(/\n+/g, " ").trim()}`);
152
+ lines.push("---", "");
153
+ return lines.join("\n");
154
+ }
155
+ /** Reset session identity. Tests only — each test needs a clean session. */
156
+ function resetSession() {
157
+ state = null;
158
+ }
159
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export interface ToolDef {
9
9
  export declare function today(): string;
10
10
  /** ISO-ish local timestamp for in-file headings. */
11
11
  export declare function timestamp(): string;
12
+ /** HHMM in local time — zero-padded so filenames sort chronologically. */
13
+ export declare function clock(): string;
12
14
  /** Turn a title into a filesystem-safe kebab slug. */
13
15
  export declare function slugify(title: string): string;
14
16
  /** Coerce an unknown arg into a trimmed string (empty when absent). */
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/tools/util.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;CACzE;AAED,gCAAgC;AAChC,wBAAgB,KAAK,IAAI,MAAM,CAI9B;AAED,oDAAoD;AACpD,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED,uEAAuE;AACvE,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEtC;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAM7C"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/tools/util.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;CACzE;AAED,gCAAgC;AAChC,wBAAgB,KAAK,IAAI,MAAM,CAI9B;AAED,oDAAoD;AACpD,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,0EAA0E;AAC1E,wBAAgB,KAAK,IAAI,MAAM,CAI9B;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED,uEAAuE;AACvE,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEtC;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAM7C"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.today = today;
5
5
  exports.timestamp = timestamp;
6
+ exports.clock = clock;
6
7
  exports.slugify = slugify;
7
8
  exports.str = str;
8
9
  exports.strArray = strArray;
@@ -18,6 +19,12 @@ function timestamp() {
18
19
  const pad = (n) => String(n).padStart(2, "0");
19
20
  return `${today()} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
20
21
  }
22
+ /** HHMM in local time — zero-padded so filenames sort chronologically. */
23
+ function clock() {
24
+ const d = new Date();
25
+ const pad = (n) => String(n).padStart(2, "0");
26
+ return `${pad(d.getHours())}${pad(d.getMinutes())}`;
27
+ }
21
28
  /** Turn a title into a filesystem-safe kebab slug. */
22
29
  function slugify(title) {
23
30
  return title
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/tools/util.ts"],"names":[],"mappings":";AAAA,4CAA4C;;AAU5C,sBAIC;AAGD,8BAIC;AAGD,0BAMC;AAGD,kBAEC;AAGD,4BAMC;AAnCD,gCAAgC;AAChC,SAAgB,KAAK;IACnB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,oDAAoD;AACpD,SAAgB,SAAS;IACvB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,sDAAsD;AACtD,SAAgB,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;AAChC,CAAC;AAED,uEAAuE;AACvE,SAAgB,GAAG,CAAC,CAAU;IAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,iDAAiD;AACjD,SAAgB,QAAQ,CAAC,CAAU;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/tools/util.ts"],"names":[],"mappings":";AAAA,4CAA4C;;AAU5C,sBAIC;AAGD,8BAIC;AAGD,sBAIC;AAGD,0BAMC;AAGD,kBAEC;AAGD,4BAMC;AA1CD,gCAAgC;AAChC,SAAgB,KAAK;IACnB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED,oDAAoD;AACpD,SAAgB,SAAS;IACvB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AAClE,CAAC;AAED,0EAA0E;AAC1E,SAAgB,KAAK;IACnB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,sDAAsD;AACtD,SAAgB,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;AAChC,CAAC;AAED,uEAAuE;AACvE,SAAgB,GAAG,CAAC,CAAU;IAC5B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,iDAAiD;AACjD,SAAgB,QAAQ,CAAC,CAAU;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saleem11kh/repomem",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Git-native memory for AI coding agents. .repomem/ commits with your code, clones with your team, works with Claude Code, Cursor, Gemini CLI and more.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",