@armadra/agent 0.8.1 → 0.9.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.
@@ -21,6 +21,8 @@ export function createCheckpointBackendFactory(settings) {
21
21
  return undefined;
22
22
  let tracker;
23
23
  let registered = false;
24
+ // 登记会话根目录的写入(mkdir → tmp → rename);snapshot 等它结束,收尾时不会还有文件在落盘
25
+ let registering = Promise.resolve();
24
26
  const warn = (message) => ctx.log("warn", message);
25
27
  const get = () => {
26
28
  tracker ??= new CheckpointTracker({
@@ -34,7 +36,7 @@ export function createCheckpointBackendFactory(settings) {
34
36
  });
35
37
  if (!registered && settings.sessionsRoot !== undefined) {
36
38
  registered = true;
37
- registerSessionRoot(settings.dataDir, settings.sessionsRoot).catch((error) => ctx.log("debug", msg().session.checkpoints.registerFailed(String(error))));
39
+ registering = registerSessionRoot(settings.dataDir, settings.sessionsRoot).catch((error) => ctx.log("debug", msg().session.checkpoints.registerFailed(String(error))));
38
40
  }
39
41
  return tracker;
40
42
  };
@@ -79,6 +81,9 @@ export function createCheckpointBackendFactory(settings) {
79
81
  hooks,
80
82
  snapshot: async (userEntryId) => {
81
83
  try {
84
+ // 先让登记写完再记检查点:检查点条目落盘之后请求马上发出,不能再被它拖住
85
+ get();
86
+ await registering;
82
87
  const shadowCommit = await shadowSnapshot(userEntryId);
83
88
  await get().snapshot(userEntryId, shadowCommit !== undefined ? { shadowCommit } : {});
84
89
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@armadra/agent",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "A coding and coordination agent that runs standalone or embedded in Armadra",
5
5
  "type": "module",
6
6
  "keywords": [