@sentropic/h2a 0.98.0 → 0.98.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.
Files changed (68) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/dist/cli-contract.d.ts.map +1 -1
  4. package/dist/cli-contract.js +8 -0
  5. package/dist/cli-contract.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +29 -2
  8. package/dist/cli.js.map +1 -1
  9. package/dist/runtime/drive/pty-actuator.d.ts +1 -0
  10. package/dist/runtime/drive/pty-actuator.d.ts.map +1 -1
  11. package/dist/runtime/drive/pty-actuator.js +19 -9
  12. package/dist/runtime/drive/pty-actuator.js.map +1 -1
  13. package/dist/runtime/identity/bindings.d.ts.map +1 -1
  14. package/dist/runtime/identity/bindings.js +13 -3
  15. package/dist/runtime/identity/bindings.js.map +1 -1
  16. package/dist/runtime/identity/migration.d.ts +2 -0
  17. package/dist/runtime/identity/migration.d.ts.map +1 -1
  18. package/dist/runtime/identity/migration.js +19 -3
  19. package/dist/runtime/identity/migration.js.map +1 -1
  20. package/dist/runtime/local-files/launch-index.d.ts +14 -0
  21. package/dist/runtime/local-files/launch-index.d.ts.map +1 -0
  22. package/dist/runtime/local-files/launch-index.js +279 -0
  23. package/dist/runtime/local-files/launch-index.js.map +1 -0
  24. package/dist/runtime/local-files/store.d.ts.map +1 -1
  25. package/dist/runtime/local-files/store.js +16 -13
  26. package/dist/runtime/local-files/store.js.map +1 -1
  27. package/dist/runtime/mcp/agent-launch.d.ts.map +1 -1
  28. package/dist/runtime/mcp/agent-launch.js +42 -0
  29. package/dist/runtime/mcp/agent-launch.js.map +1 -1
  30. package/focus-app/client/_app/immutable/chunks/unQroC_0.js +2 -0
  31. package/focus-app/client/_app/immutable/chunks/unQroC_0.js.br +0 -0
  32. package/focus-app/client/_app/immutable/chunks/unQroC_0.js.gz +0 -0
  33. package/focus-app/client/_app/immutable/entry/{app.Dfo3Ymae.js → app.75Uzo4oj.js} +2 -2
  34. package/focus-app/client/_app/immutable/entry/app.75Uzo4oj.js.br +0 -0
  35. package/focus-app/client/_app/immutable/entry/app.75Uzo4oj.js.gz +0 -0
  36. package/focus-app/client/_app/immutable/entry/start.BmwiFFoe.js +1 -0
  37. package/focus-app/client/_app/immutable/entry/start.BmwiFFoe.js.br +2 -0
  38. package/focus-app/client/_app/immutable/entry/start.BmwiFFoe.js.gz +0 -0
  39. package/focus-app/client/_app/immutable/nodes/{1.B83XRsuv.js → 1.hqfmE-jM.js} +1 -1
  40. package/focus-app/client/_app/immutable/nodes/1.hqfmE-jM.js.br +3 -0
  41. package/focus-app/client/_app/immutable/nodes/1.hqfmE-jM.js.gz +0 -0
  42. package/focus-app/client/_app/version.json +1 -1
  43. package/focus-app/client/_app/version.json.br +0 -0
  44. package/focus-app/client/_app/version.json.gz +0 -0
  45. package/focus-app/h2a-focus.json +29 -29
  46. package/focus-app/handler.js +4 -4
  47. package/focus-app/index.js +4 -4
  48. package/focus-app/server/chunks/chunks/{internal.js-BDHE9Kn1.js → internal.js-vq85iWAx.js} +2 -2
  49. package/focus-app/server/chunks/chunks/{internal.js-BDHE9Kn1.js.map → internal.js-vq85iWAx.js.map} +1 -1
  50. package/focus-app/server/chunks/{handler-BidpBSFZ.js → handler-f-0S9j72.js} +3 -3
  51. package/focus-app/server/chunks/{handler-BidpBSFZ.js.map → handler-f-0S9j72.js.map} +1 -1
  52. package/focus-app/server/chunks/{index.js-BNQ-AMZE.js → index.js-DlbaFcic.js} +2 -2
  53. package/focus-app/server/chunks/{index.js-BNQ-AMZE.js.map → index.js-DlbaFcic.js.map} +1 -1
  54. package/focus-app/server/chunks/{manifest.js-CAtvBIjA.js → manifest.js-CxrShg-z.js} +3 -3
  55. package/focus-app/server/chunks/{manifest.js-CAtvBIjA.js.map → manifest.js-CxrShg-z.js.map} +1 -1
  56. package/focus-app/server/chunks/nodes/{1.js-C16cgDY2.js → 1.js-O2SZgyXK.js} +2 -2
  57. package/focus-app/server/chunks/nodes/{1.js-C16cgDY2.js.map → 1.js-O2SZgyXK.js.map} +1 -1
  58. package/package.json +3 -3
  59. package/focus-app/client/_app/immutable/chunks/zL3j6erO.js +0 -2
  60. package/focus-app/client/_app/immutable/chunks/zL3j6erO.js.br +0 -0
  61. package/focus-app/client/_app/immutable/chunks/zL3j6erO.js.gz +0 -0
  62. package/focus-app/client/_app/immutable/entry/app.Dfo3Ymae.js.br +0 -0
  63. package/focus-app/client/_app/immutable/entry/app.Dfo3Ymae.js.gz +0 -0
  64. package/focus-app/client/_app/immutable/entry/start.BSQLtKUn.js +0 -1
  65. package/focus-app/client/_app/immutable/entry/start.BSQLtKUn.js.br +0 -0
  66. package/focus-app/client/_app/immutable/entry/start.BSQLtKUn.js.gz +0 -0
  67. package/focus-app/client/_app/immutable/nodes/1.B83XRsuv.js.br +0 -0
  68. package/focus-app/client/_app/immutable/nodes/1.B83XRsuv.js.gz +0 -0
@@ -5,6 +5,7 @@ import type { ClusterMeshRegistration, PtyActuatorPort, SessionTargetStatePort,
5
5
  export type ActuationTarget = {
6
6
  readonly kind: "native-terminal";
7
7
  readonly sessionId: string;
8
+ socketPath?: string;
8
9
  readonly instance: string;
9
10
  readonly host?: string;
10
11
  readonly launchContext?: H2ALaunchContext;
@@ -1 +1 @@
1
- {"version":3,"file":"pty-actuator.d.ts","sourceRoot":"","sources":["../../../src/runtime/drive/pty-actuator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAGV,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAC3C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;CAC1C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAC3C,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,uBAAuB,KACnC,eAAe,GAAG,IAAI,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,eAAe,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AA4FD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,uBAAuB,EACvC,GAAG,GAAE,MAAmB,GACvB,eAAe,GAAG,IAAI,CAwDxB;AA8BD,0EAA0E;AAC1E,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAkBrF;AAoDD,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,kBAAuB,GAC5B,eAAe,CAyGjB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,GAAE,kBAAuB,GAC5B,sBAAsB,CAqBxB"}
1
+ {"version":3,"file":"pty-actuator.d.ts","sourceRoot":"","sources":["../../../src/runtime/drive/pty-actuator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAGV,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAC3C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;CAC1C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAC3C,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,uBAAuB,KACnC,eAAe,GAAG,IAAI,CAAC;AAE5B,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,eAAe,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AA6FD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,uBAAuB,EACvC,GAAG,GAAE,MAAmB,GACvB,eAAe,GAAG,IAAI,CA4DxB;AA8BD,0EAA0E;AAC1E,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAqBrF;AAsDD,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,kBAAuB,GAC5B,eAAe,CAyGjB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,GAAE,kBAAuB,GAC5B,sBAAsB,CAqBxB"}
@@ -82,12 +82,12 @@ function nativeTerminalSession(sessionKey) {
82
82
  const listed = runNativeTerminalOp(["list"]);
83
83
  const sessions = listed?.sessions;
84
84
  if (!Array.isArray(sessions))
85
- return undefined;
85
+ return "unknown";
86
86
  const matches = sessions.filter((session) => !!session &&
87
87
  typeof session === "object" &&
88
88
  !Array.isArray(session) &&
89
89
  session.id === sessionKey);
90
- return matches.length === 1 ? matches[0] : undefined;
90
+ return matches.length === 1 ? matches[0] : matches.length > 1 || listed?.complete !== true ? "unknown" : undefined;
91
91
  }
92
92
  /**
93
93
  * Default stable lookup. The registration stores `h2a-pty:v1:<sessionKey>`,
@@ -126,10 +126,12 @@ export function resolveActuationTarget(actuatorRef, _registration, now = Date.no
126
126
  };
127
127
  }
128
128
  }
129
- if (nativeTerminalSession(sessionKey) !== undefined) {
129
+ const nativeSession = nativeTerminalSession(sessionKey);
130
+ if (nativeSession !== undefined && nativeSession !== "unknown") {
130
131
  return {
131
132
  kind: "native-terminal",
132
133
  sessionId: sessionKey,
134
+ ...(typeof nativeSession.socketPath === "string" ? { socketPath: nativeSession.socketPath } : {}),
133
135
  instance: current?.instance ?? sessionKey,
134
136
  ...(current?.host !== undefined ? { host: current.host } : {}),
135
137
  ...(current?.launchContext !== undefined
@@ -137,13 +139,15 @@ export function resolveActuationTarget(actuatorRef, _registration, now = Date.no
137
139
  : {})
138
140
  };
139
141
  }
140
- if (current !== undefined) {
142
+ if (current !== undefined || nativeSession === "unknown") {
141
143
  return {
142
144
  kind: "opaque",
143
145
  handle: sessionKey,
144
- instance: current.instance,
145
- ...(current.host !== undefined ? { host: current.host } : {}),
146
- ...(current.launchContext !== undefined
146
+ instance: current?.instance ?? sessionKey,
147
+ ...(current?.host !== undefined ? { host: current.host } : {}),
148
+ // An unproven native owner must not carry a relaunch command through
149
+ // the opaque fallback: that could create a duplicate before probing.
150
+ ...(current?.launchContext !== undefined && nativeSession !== "unknown"
147
151
  ? { launchContext: current.launchContext }
148
152
  : {})
149
153
  };
@@ -182,11 +186,15 @@ export async function probeAliveness(target) {
182
186
  return probeTmux(target, defaultRelauncherRuntime);
183
187
  }
184
188
  case "native-terminal": {
185
- const state = runNativeTerminalOp(["state", "--id", target.sessionId]);
189
+ // Resolve once, then keep the owner's socket through probe and write.
190
+ const probe = runNativeTerminalOp(["probe", "--id", target.sessionId,
191
+ ...(target.socketPath ? ["--socket", target.socketPath] : [])]);
192
+ const state = probe?.state;
193
+ if (!target.socketPath && typeof state?.socketPath === "string")
194
+ target.socketPath = state.socketPath;
186
195
  const known = nativeState(state?.status);
187
196
  if (known !== undefined)
188
197
  return known;
189
- const probe = runNativeTerminalOp(["probe", "--id", target.sessionId]);
190
198
  if (probe?.verdict === "dead")
191
199
  return "dead";
192
200
  if (probe?.verdict === "live")
@@ -209,6 +217,8 @@ async function defaultDriver(target) {
209
217
  "drive",
210
218
  "--target",
211
219
  request.to,
220
+ "--id", target.sessionId,
221
+ ...(target.socketPath ? ["--socket", target.socketPath] : []),
212
222
  "--b64",
213
223
  Buffer.from(request.instructionLine, "utf8").toString("base64")
214
224
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"pty-actuator.js","sourceRoot":"","sources":["../../../src/runtime/drive/pty-actuator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty-actuator.js","sourceRoot":"","sources":["../../../src/runtime/drive/pty-actuator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAa1D,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAyD1C,IAAI,0BAAqD,CAAC;AAE1D,SAAS,oBAAoB;IAC3B,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAC7C,OAAO,0BAA0B,IAAI,SAAS,CAAC;IACjD,CAAC;IACD,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAI,MAAM,CAAC,IAEvB,CAAC,OAAO,CAAC;QACX,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B,GAAG,IAAI,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACnE,0BAA0B,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,OAAO,0BAA0B,IAAI,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAuB;IAClD,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE;QAC/D,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC,CAAE,MAAkC;YACrC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACxC,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,SAAS,CAAC,WAAmB;IACpC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,aAA+B;IAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;QAC9B,CAAC,CAAC,IAAI,CAAC,IAAI;QACX,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,qBAAqB,CAAC,UAAkB;IAC/C,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC7B,CAAC,OAAO,EAAkC,EAAE,CAC1C,CAAC,CAAC,OAAO;QACT,OAAO,OAAO,KAAK,QAAQ;QAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACtB,OAA+B,CAAC,EAAE,KAAK,UAAU,CACrD,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACrH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,aAAuC,EACvC,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE1C,IAAI,OAA+B,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aAC1D,MAAM,CACL,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,QAAQ,KAAK,UAAU;YAC/B,OAAO,CAAC,SAAS,KAAK,UAAU;YAChC,OAAO,CAAC,IAAI,KAAK,UAAU;YAC3B,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,KAAK,UAAU,CACtD;aACA,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,EAAE,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,UAAU;YACrB,GAAG,CAAC,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU;YACzC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS;gBACtC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACzD,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU;YACzC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,qEAAqE;YACrE,qEAAqE;YACrE,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS;gBACrE,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAChB,MAAkD,EAClD,OAA2C;IAE3C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;QACrC,iBAAiB;QACjB,IAAI;QACJ,IAAI;QACJ,MAAM,CAAC,MAAM;QACb,yBAAyB;KAC1B,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACzD,CAAC;AAED,SAAS,WAAW,CAAC,MAAe;IAClC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAuB;IAC1D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,sEAAsE;YACtE,MAAM,KAAK,GAAG,mBAAmB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS;gBAClE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,KAAK,EAAE,KAAwC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,OAAO,KAAK,EAAE,UAAU,KAAK,QAAQ;gBAAE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACtG,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACtC,IAAI,KAAK,EAAE,OAAO,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC7C,IAAI,KAAK,EAAE,OAAO,KAAK,MAAM;gBAAE,OAAO,OAAO,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAuB;IAClD,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,uBAAuB,EAAE,GAChE,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,eAAe,EAAE,CAAC;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,cAAc,EAAE,CAAC;IACtD,OAAO,uBAAuB,CAAC;QAC7B,IAAI,CAAC,OAAO;YACV,MAAM,MAAM,GAAG,mBAAmB,CAAC;gBACjC,OAAO;gBACP,UAAU;gBACV,OAAO,CAAC,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,SAAS;gBACxB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,OAAO;gBACP,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAChE,CAAC,CAAC;YACH,IAAI,MAAM,EAAE,OAAO,KAAK,YAAY;gBAAE,OAAO,SAAS,CAAC;YACvD,OAAO,MAAM,EAAE,OAAO,KAAK,QAAQ,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAAuB;IAC5C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,iBAAiB;YACpB,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAuB,EAAE,eAAuB;IACrE,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;QAC1E,eAAe;QACf,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS;YACpC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAuB;IACtD,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAChE,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM;QAC3B,CAAC,CAAC,eAAe,CAAC,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,CAAC;QAC9D,CAAC,CAAC,kBAAkB,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB;QACzC,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,CAC7B,sBAAsB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,MAAM,UAAU,GAAG,KAAK,EAAE,WAAmB,EAA2B,EAAE;QACxE,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CACb,KAAuB,EACvB,OAAwC,EACxC,MAAwB,EACP,EAAE;QACnB,eAAe,IAAI,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;aAChC,MAAM,CACL,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC,WAAW,KAAK,GAAG,EAAE,KAAK,eAAe,EAAE,CACnF;aACA,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,OAAO;YACL,SAAS,EAAE,WAAW,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE;YAC9C,OAAO;YACP,YAAY,EACV,OAAO,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS;gBACzC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC,CAAC,EAAE;SACT,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,KAAK;QACX,KAAK,CAAC,WAAW,CAAC,WAAW;YAC3B,OAAO,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,OAAO,CAAC;QACrD,CAAC;QACD,UAAU;QACV,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,IAAI,MAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAEtD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;gBAC3C,MAAM,OAAO,GAAG,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,OAAO,CAAC;gBACvE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5C,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,UAAU,GACd,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBACrE,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC;wBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,MAAM,EAAE,SAAS;wBACjB,UAAU,EAAE,QAAQ;wBACpB,aAAa;wBACb,YAAY,EAAE,CAAC;qBAChB,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC;gBACD,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,CAAC;YAED,MAAM,eAAe,GAAG,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC;YAClE,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/E,OAAO,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,KAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;YACD,IAAI,KAAK,KAAK,OAAO;gBAAE,OAAO,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEtD,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC3E,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YACD,OAAO,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,OAA2B,EAAE;IAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB;QACzC,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,CAC7B,sBAAsB,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC;IACpD,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,WAAW;YACvB,IAAI,MAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/runtime/identity/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAKpE;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,8BAA8B,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAYD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAa/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,CAQjG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAST;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAClD,2EAA2E;IAC3E,IAAI,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,GAAG,IAAI,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,iBAAiB,GACtB,mBAAmB,CAqCrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACvB,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,KACnC,IAAI,CAAC;CACX;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CA8C9B"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/runtime/identity/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMpE;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,8BAA8B,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAYD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAa/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,CAUjG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAST;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAClD,2EAA2E;IAC3E,IAAI,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,GAAG,IAAI,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,iBAAiB,GACtB,mBAAmB,CAoCrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CACvB,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,KACnC,IAAI,CAAC;CACX;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CA6C9B"}
@@ -24,12 +24,13 @@
24
24
  * identity, not the victim's inbox). The read → decide → append runs in ONE lock
25
25
  * (no reclaim/mint race, F3).
26
26
  */
27
- import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
27
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
28
28
  import { randomUUID } from "node:crypto";
29
29
  import { join } from "node:path";
30
30
  import { verifyCanonical } from "@sentropic/h2a";
31
31
  import { localStorePaths, withLock, withLockSync } from "../local-files/index.js";
32
32
  import { getActiveMcpTrace } from "../mcp/phase-trace.js";
33
+ import { appendLaunchRow, launchLookupKey, lookupLaunchRows } from "../local-files/launch-index.js";
33
34
  /**
34
35
  * The one protocol accepted by the DEF identity-binding writer. The cull
35
36
  * executor uses the same sentinel and refuses a writer inventory that cannot
@@ -75,6 +76,9 @@ export function listBindings(root) {
75
76
  * `reclaimOrMint`.
76
77
  */
77
78
  export function findBinding(root, key) {
79
+ const indexed = lookupLaunchRows(bindingsFile(root), "bindings", launchLookupKey(key.host, key.providerSessionId));
80
+ if (indexed !== undefined)
81
+ return indexed.at(-1);
78
82
  let found;
79
83
  for (const b of listBindings(root)) {
80
84
  if (b.host === key.host && b.providerSessionId === key.providerSessionId) {
@@ -126,7 +130,10 @@ export function reclaimOrMint(root, key, deps) {
126
130
  return { action: "reclaim", instance: existing.instance, agentUuid: existing.agentUuid };
127
131
  }
128
132
  const minted = deps.mint();
129
- appendFileSync(bindingsFile(root), `${JSON.stringify({ ...key, instance: minted.instance, agentUuid: minted.agentUuid, at: new Date(deps.now()).toISOString() })}\n`, "utf8");
133
+ appendLaunchRow(bindingsFile(root), "bindings", {
134
+ ...key, instance: minted.instance, agentUuid: minted.agentUuid,
135
+ at: new Date(deps.now()).toISOString()
136
+ });
130
137
  return { action: "mint", instance: minted.instance, agentUuid: minted.agentUuid };
131
138
  }, {
132
139
  ownerMetadata: {
@@ -174,7 +181,10 @@ export async function reclaimOrMintAsync(root, key, deps, options = {}) {
174
181
  // Publish keys / registration / alias BEFORE the binding row so no reader
175
182
  // can observe a binding whose keyring is not yet provable.
176
183
  options.beforePublish?.(result, { identity: true });
177
- appendFileSync(bindingsFile(root), `${JSON.stringify({ ...key, instance: minted.instance, agentUuid: minted.agentUuid, at: new Date(deps.now()).toISOString() })}\n`, "utf8");
184
+ appendLaunchRow(bindingsFile(root), "bindings", {
185
+ ...key, instance: minted.instance, agentUuid: minted.agentUuid,
186
+ at: new Date(deps.now()).toISOString()
187
+ });
178
188
  return result;
179
189
  }, {
180
190
  ownerMetadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../../src/runtime/identity/bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAqB,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,2BAA2B,CAAC;AAmB3E,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC;AACD,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACnD,CAAC;AACD,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,GAAuB;IAC/D,IAAI,KAAqC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,iBAAiB,KAAK,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACzE,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,SAAuB,EACvB,UAA6B;IAE7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,GAAuB,EACvB,IAAuB;IAEvB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,2EAA2E;IAC3E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ;QAC7B,CAAC,CAAC,CAAC,KAA0D,EAAQ,EAAE;YACnE,KAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,EAAE;gBACzC,IAAI,EAAE,UAAU;gBAChB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC,CAAC;QACL,CAAC;QACH,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3F,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,cAAc,CACZ,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAA+B,CAAC,IAAI,EAC9J,MAAM,CACP,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IACpF,CAAC,EAAE;QACD,aAAa,EAAE;YACb,QAAQ,EAAE,+BAA+B;YACzC,UAAU,EAAE,UAAU,EAAE;SACzB;QACD,wEAAwE;QACxE,qEAAqE;QACrE,YAAY,EAAE,KAAK;QACnB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AA2BD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,GAAuB,EACvB,IAAuB,EACvB,UAAgC,EAAE;IAElC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ;QAC7B,CAAC,CAAC,CAAC,KAA0D,EAAQ,EAAE;YACnE,KAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,EAAE;gBACzC,IAAI,EAAE,UAAU;gBAChB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC,CAAC;QACL,CAAC;QACH,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,QAAQ,CACb,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,EAAE;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3F,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAwB;YAClC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QACF,0EAA0E;QAC1E,2DAA2D;QAC3D,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,cAAc,CACZ,YAAY,CAAC,IAAI,CAAC,EAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAA+B,CAAC,IAAI,EAC9J,MAAM,CACP,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC,EACD;QACE,aAAa,EAAE;YACb,QAAQ,EAAE,+BAA+B;YACzC,UAAU,EAAE,UAAU,EAAE;SACzB;QACD,YAAY,EAAE,KAAK;QACnB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../../src/runtime/identity/bindings.ts"],"names":[],"mappings":"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"}
@@ -51,5 +51,7 @@ export interface H2AIdentityAlias {
51
51
  }
52
52
  export declare function listIdentityAliases(root: string, instance?: string): H2AIdentityAlias[];
53
53
  export declare function legacyAliasAlreadyAdopted(root: string, legacyInstance: string): boolean;
54
+ /** Earliest claimant owns the shared legacy inbox; equal timestamps keep log order. */
55
+ export declare function legacyAliasOwner(root: string, legacyInstance: string, allAliases?: readonly H2AIdentityAlias[]): H2AIdentityAlias | undefined;
54
56
  export declare function recordIdentityAlias(root: string, alias: H2AIdentityAlias): void;
55
57
  //# sourceMappingURL=migration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/runtime/identity/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,CAAC,SAAS,WAAW,EAAE,CAAC,GAC1C,WAAW,EAAE,CAUf;AAED,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,sBAAsB,CAoBvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAcvF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAIvF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAQ/E"}
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/runtime/identity/migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,CAAC,SAAS,WAAW,EAAE,CAAC,GAC1C,WAAW,EAAE,CAUf;AAED,MAAM,WAAW,mBAAmB;IAClC,yFAAyF;IACzF,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,+EAA+E;IAC/E,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,sBAAsB,CAoBvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAkBvF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAMvF;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,GAAG,SAAS,CAK7I;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAS/E"}
@@ -12,7 +12,8 @@
12
12
  * Pure + total: the impure part (which dirs to read) belongs to the caller; this
13
13
  * is the deterministic merge that is unit-tested in isolation.
14
14
  */
15
- import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
15
+ import { existsSync, mkdirSync, readFileSync } from "node:fs";
16
+ import { appendLaunchRow, launchLookupKey, lookupLaunchRows } from "../local-files/launch-index.js";
16
17
  import { join } from "node:path";
17
18
  /**
18
19
  * Merge envelope sets, deduplicated by `envelope.id`. Pass the CURRENT inbox
@@ -70,6 +71,11 @@ function aliasesFile(root) {
70
71
  }
71
72
  export function listIdentityAliases(root, instance) {
72
73
  const f = aliasesFile(root);
74
+ if (instance !== undefined) {
75
+ const indexed = lookupLaunchRows(f, "aliases", launchLookupKey("instance", instance));
76
+ if (indexed !== undefined)
77
+ return indexed;
78
+ }
73
79
  if (!existsSync(f))
74
80
  return [];
75
81
  const out = [];
@@ -88,13 +94,23 @@ export function listIdentityAliases(root, instance) {
88
94
  return out;
89
95
  }
90
96
  export function legacyAliasAlreadyAdopted(root, legacyInstance) {
97
+ const indexed = lookupLaunchRows(aliasesFile(root), "aliases", launchLookupKey("adopted", legacyInstance));
98
+ if (indexed !== undefined)
99
+ return indexed.length > 0;
91
100
  return listIdentityAliases(root).some((alias) => alias.legacyInstance === legacyInstance && alias.adoptedKeyring);
92
101
  }
102
+ /** Earliest claimant owns the shared legacy inbox; equal timestamps keep log order. */
103
+ export function legacyAliasOwner(root, legacyInstance, allAliases) {
104
+ const indexed = allAliases ? undefined : lookupLaunchRows(aliasesFile(root), "aliases", launchLookupKey("owner", legacyInstance));
105
+ const claimants = indexed ?? (allAliases ?? listIdentityAliases(root)).filter(alias => alias.legacyInstance === legacyInstance);
106
+ return claimants.reduce((first, alias) => !first || alias.at < first.at ? alias : first, undefined);
107
+ }
93
108
  export function recordIdentityAlias(root, alias) {
94
109
  mkdirSync(identityDir(root), { recursive: true });
95
- const exists = listIdentityAliases(root).some((entry) => entry.instance === alias.instance && entry.legacyInstance === alias.legacyInstance);
110
+ const indexed = lookupLaunchRows(aliasesFile(root), "aliases", launchLookupKey("pair", alias.instance, alias.legacyInstance));
111
+ const exists = (indexed ?? listIdentityAliases(root)).some((entry) => entry.instance === alias.instance && entry.legacyInstance === alias.legacyInstance);
96
112
  if (exists)
97
113
  return;
98
- appendFileSync(aliasesFile(root), `${JSON.stringify(alias)}\n`, "utf8");
114
+ appendLaunchRow(aliasesFile(root), "aliases", alias);
99
115
  }
100
116
  //# sourceMappingURL=migration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/runtime/identity/migration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/runtime/identity/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type LaunchLogKind = "instances" | "bindings" | "aliases" | "keys";
2
+ export declare const launchLookupKey: (...parts: unknown[]) => string;
3
+ /** undefined means no valid index: callers retain their original read policy. */
4
+ export declare function lookupLaunchRows<T>(file: string, kind: LaunchLogKind, key: string): T[] | undefined;
5
+ /**
6
+ * Build/refresh only derived files. Publication is atomic; previous bucket
7
+ * generations remain available for in-flight readers and rollback. A repeated
8
+ * command on unchanged logs is a no-op. Must not be called under registry or
9
+ * identity locks: the initial scan belongs to explicit maintenance.
10
+ */
11
+ export declare function buildLaunchIndex(file: string, kind: LaunchLogKind, incremental?: boolean): void;
12
+ /** Append audit first. A crash/failed index update is recovered by tail replay. */
13
+ export declare function appendLaunchRow(file: string, kind: LaunchLogKind, row: unknown): void;
14
+ //# sourceMappingURL=launch-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-index.d.ts","sourceRoot":"","sources":["../../../src/runtime/local-files/launch-index.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAY1E,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,OAAO,EAAE,KAAG,MAA+B,CAAC;AAsFtF,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,SAAS,CAwDnG;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,UAAQ,GAAG,IAAI,CA6D7F;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAMrF"}
@@ -0,0 +1,279 @@
1
+ /**
2
+ * Reversible point indexes for the append-only launch logs. Offsets reference
3
+ * the ORIGINAL records: no registration, binding, alias or audit is rewritten.
4
+ * Old writers remain compatible: bytes after the indexed prefix are replayed.
5
+ * Replacing a log or observing a truncation invalidates its index; corruption falls back to
6
+ * the original reader. Immutable bucket generations and tail replay give a
7
+ * complete snapshot even when another writer publishes a newer manifest.
8
+ */
9
+ import { createHash, randomUUID } from "node:crypto";
10
+ import { appendFileSync, closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, renameSync, statSync, writeFileSync } from "node:fs";
11
+ import { join } from "node:path";
12
+ import { withLockSync } from "./locks.js";
13
+ import { getActiveMcpTrace } from "../mcp/phase-trace.js";
14
+ const digest = (text) => createHash("sha256").update(text).digest("hex");
15
+ const directory = (file) => `${file}.launch-index-v1`;
16
+ const manifestPath = (file) => join(directory(file), "current.json");
17
+ export const launchLookupKey = (...parts) => JSON.stringify(parts);
18
+ function parseManifest(raw) {
19
+ const envelope = JSON.parse(raw);
20
+ if (!envelope.data || digest(JSON.stringify(envelope.data)) !== envelope.hash)
21
+ throw new Error("corrupt launch manifest");
22
+ return envelope.data;
23
+ }
24
+ function keys(kind, row) {
25
+ switch (kind) {
26
+ case "instances": return [launchLookupKey(row.id)];
27
+ case "bindings": return [launchLookupKey(row.host, row.providerSessionId)];
28
+ case "keys": return [launchLookupKey(row.instance)];
29
+ case "aliases": return [
30
+ launchLookupKey("instance", row.instance),
31
+ launchLookupKey("pair", row.instance, row.legacyInstance),
32
+ launchLookupKey("owner", row.legacyInstance),
33
+ ...(row.adoptedKeyring ? [launchLookupKey("adopted", row.legacyInstance)] : [])
34
+ ];
35
+ }
36
+ }
37
+ function decode(kind, line) {
38
+ if (!line.trim())
39
+ return undefined;
40
+ let row;
41
+ try {
42
+ row = JSON.parse(line);
43
+ }
44
+ catch (error) {
45
+ if (kind === "instances" || kind === "keys")
46
+ throw error;
47
+ return undefined;
48
+ }
49
+ // Do not silently index away a valid JSON primitive that the authoritative
50
+ // reader might reject. Refuse the derived view and retain its original policy.
51
+ if (row === null || typeof row !== "object" || Array.isArray(row))
52
+ throw new Error("invalid launch row shape");
53
+ return row;
54
+ }
55
+ function prefixValid(manifest, kind, st) {
56
+ return manifest.version === 1 && manifest.kind === kind &&
57
+ manifest.dev === st.dev && manifest.ino === st.ino &&
58
+ Number.isSafeInteger(manifest.size) && manifest.size >= 0 && st.size >= manifest.size &&
59
+ // Same-size rewrites (including a truncate/regrow) are not appends.
60
+ (st.size > manifest.size || st.mtimeMs === manifest.mtimeMs && st.ctimeMs === manifest.ctimeMs);
61
+ }
62
+ function readRange(fd, start, end) {
63
+ const buffer = Buffer.alloc(end - start);
64
+ let read = 0;
65
+ while (read < buffer.length) {
66
+ const n = readSync(fd, buffer, read, buffer.length - read, start + read);
67
+ if (!n)
68
+ throw new Error("launch log changed during read");
69
+ read += n;
70
+ }
71
+ return buffer;
72
+ }
73
+ function scan(buffer, start, kind) {
74
+ const rows = [];
75
+ let begin = 0;
76
+ for (let end = buffer.indexOf(10); end !== -1; end = buffer.indexOf(10, begin)) {
77
+ const row = decode(kind, buffer.subarray(begin, end).toString("utf8"));
78
+ if (row)
79
+ rows.push({ row, offset: start + begin });
80
+ begin = end + 1;
81
+ }
82
+ return rows;
83
+ }
84
+ function readRow(fd, offset, end, kind) {
85
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset >= end)
86
+ throw new Error("invalid launch offset");
87
+ const chunks = [];
88
+ for (let pos = offset; pos < end;) {
89
+ const chunk = readRange(fd, pos, Math.min(pos + 4096, end));
90
+ const lf = chunk.indexOf(10);
91
+ chunks.push(lf === -1 ? chunk : chunk.subarray(0, lf));
92
+ if (lf !== -1)
93
+ return decode(kind, Buffer.concat(chunks).toString("utf8"));
94
+ pos += chunk.length;
95
+ }
96
+ throw new Error("incomplete indexed launch row");
97
+ }
98
+ function readBucket(file, manifest, shard) {
99
+ const entry = manifest.buckets[shard];
100
+ if (!entry)
101
+ return Object.create(null);
102
+ if (!/^[0-9a-f-]+\.json$/.test(entry.file))
103
+ throw new Error("invalid launch bucket path");
104
+ const text = readFileSync(join(directory(file), entry.file), "utf8");
105
+ if (digest(text) !== entry.hash)
106
+ throw new Error("corrupt launch bucket");
107
+ return JSON.parse(text);
108
+ }
109
+ /** undefined means no valid index: callers retain their original read policy. */
110
+ export function lookupLaunchRows(file, kind, key) {
111
+ const trace = getActiveMcpTrace();
112
+ const read = () => {
113
+ let fd;
114
+ try {
115
+ {
116
+ const raw = readFileSync(manifestPath(file), "utf8");
117
+ const manifest = parseManifest(raw);
118
+ fd = openSync(file, "r");
119
+ const st = fstatSync(fd);
120
+ if (!prefixValid(manifest, kind, st))
121
+ return undefined;
122
+ if (kind === "aliases" && JSON.parse(key)[0] === "owner" && !manifest.aliasOwner)
123
+ return undefined;
124
+ const bucket = readBucket(file, manifest, digest(key).slice(0, 2));
125
+ const offsets = bucket[key] ?? [];
126
+ if (!Array.isArray(offsets))
127
+ throw new Error("invalid launch offsets");
128
+ const result = new Map();
129
+ // Binding routing is last-wins; registration is first-wins. Repeated
130
+ // rows for one conversation/agent must not recreate the historical
131
+ // scan, even when reading an older index containing every offset.
132
+ const selected = kind === "bindings" ? offsets.slice(-1) : kind === "instances" ? offsets.slice(0, 1) : offsets;
133
+ for (const offset of selected) {
134
+ if (offset >= manifest.size)
135
+ throw new Error("offset outside indexed prefix");
136
+ const row = readRow(fd, offset, st.size, kind);
137
+ if (!row || !keys(kind, row).includes(key))
138
+ throw new Error("launch offset/key mismatch");
139
+ result.set(offset, row);
140
+ }
141
+ // A partial trailing append is not published yet. Replay only complete
142
+ // lines, and retain the original log's source order / first-last policy.
143
+ const tail = readRange(fd, manifest.size, st.size);
144
+ if (tail.length && tail.at(-1) !== 10)
145
+ return undefined;
146
+ for (const { row, offset } of scan(tail, manifest.size, kind)) {
147
+ if (!keys(kind, row).includes(key))
148
+ continue;
149
+ if (kind === "instances" && result.size > 0)
150
+ continue;
151
+ if (kind === "bindings")
152
+ result.clear();
153
+ if (kind === "aliases" && JSON.parse(key)[0] === "owner" && result.size > 0) {
154
+ const previous = result.values().next().value;
155
+ if (!(row.at < previous.at))
156
+ continue;
157
+ result.clear();
158
+ }
159
+ result.set(offset, row);
160
+ }
161
+ closeSync(fd);
162
+ fd = undefined;
163
+ // Bucket generations are immutable and retained. A newer manifest
164
+ // cannot invalidate this view: we replayed every complete row through
165
+ // st.size from the same original fd. Retrying unrelated publications
166
+ // caused bursts to exhaust the retries and fall back to a full scan.
167
+ const current = statSync(file);
168
+ if (current.dev !== st.dev || current.ino !== st.ino || current.size < st.size ||
169
+ current.size === st.size && (current.mtimeMs !== st.mtimeMs || current.ctimeMs !== st.ctimeMs))
170
+ return undefined;
171
+ return [...result.entries()].sort(([a], [b]) => a - b).map(([, row]) => row);
172
+ }
173
+ }
174
+ catch { /* derived data unavailable: original log is authoritative */ }
175
+ finally {
176
+ if (fd !== undefined)
177
+ closeSync(fd);
178
+ }
179
+ return undefined;
180
+ };
181
+ return trace ? trace.span(`${kind}_lookup`, read) : read();
182
+ }
183
+ /**
184
+ * Build/refresh only derived files. Publication is atomic; previous bucket
185
+ * generations remain available for in-flight readers and rollback. A repeated
186
+ * command on unchanged logs is a no-op. Must not be called under registry or
187
+ * identity locks: the initial scan belongs to explicit maintenance.
188
+ */
189
+ export function buildLaunchIndex(file, kind, incremental = false) {
190
+ mkdirSync(directory(file), { recursive: true, mode: 0o700 });
191
+ withLockSync(join(directory(file), ".lock"), () => {
192
+ const fd = openSync(file, "r");
193
+ try {
194
+ const st = fstatSync(fd);
195
+ let previous;
196
+ try {
197
+ const candidate = parseManifest(readFileSync(manifestPath(file), "utf8"));
198
+ if (prefixValid(candidate, kind, st))
199
+ previous = candidate;
200
+ }
201
+ catch { /* first build / invalidated derived data */ }
202
+ if (kind === "aliases" && !previous?.aliasOwner)
203
+ previous = undefined;
204
+ if (!incremental && previous) {
205
+ try {
206
+ for (const shard of Object.keys(previous.buckets))
207
+ readBucket(file, previous, shard);
208
+ }
209
+ catch {
210
+ previous = undefined;
211
+ }
212
+ }
213
+ if (previous?.size === st.size)
214
+ return;
215
+ // The append path never initiates a full scan under the caller's lock.
216
+ if (incremental && (!previous || st.size - previous.size > 1024 * 1024))
217
+ return;
218
+ const start = previous?.size ?? 0;
219
+ const tail = readRange(fd, start, st.size);
220
+ const size = start + tail.lastIndexOf(10) + 1;
221
+ if (previous && size === previous.size)
222
+ return; // unchanged partial trailing row
223
+ const rows = scan(tail.subarray(0, size - start), start, kind);
224
+ const changed = new Map();
225
+ for (const { row, offset } of rows)
226
+ for (const key of keys(kind, row)) {
227
+ const shard = digest(key).slice(0, 2);
228
+ let bucket = changed.get(shard);
229
+ if (!bucket) {
230
+ bucket = previous ? readBucket(file, previous, shard) : Object.create(null);
231
+ changed.set(shard, bucket);
232
+ }
233
+ if (kind === "bindings")
234
+ bucket[key] = [offset];
235
+ else if (kind === "instances")
236
+ bucket[key] ??= [offset];
237
+ else if (kind === "aliases" && JSON.parse(key)[0] === "owner") {
238
+ const prior = bucket[key]?.[0];
239
+ if (prior === undefined || row.at < readRow(fd, prior, st.size, kind).at)
240
+ bucket[key] = [offset];
241
+ }
242
+ else
243
+ (bucket[key] ??= []).push(offset);
244
+ }
245
+ const current = statSync(file);
246
+ if (current.dev !== st.dev || current.ino !== st.ino || current.size < st.size ||
247
+ current.size === st.size && (current.mtimeMs !== st.mtimeMs || current.ctimeMs !== st.ctimeMs))
248
+ throw new Error("launch log replaced during indexing; retry maintenance");
249
+ const generation = randomUUID();
250
+ const manifest = { version: 1, kind, generation,
251
+ ...(kind === "aliases" ? { aliasOwner: true } : {}),
252
+ dev: st.dev, ino: st.ino, size, mtimeMs: st.mtimeMs, ctimeMs: st.ctimeMs,
253
+ buckets: { ...previous?.buckets } };
254
+ for (const [shard, bucket] of changed) {
255
+ const text = JSON.stringify(bucket);
256
+ const name = `${generation}-${shard}.json`;
257
+ writeFileSync(join(directory(file), name), text, { mode: 0o600 });
258
+ manifest.buckets[shard] = { file: name, hash: digest(text) };
259
+ }
260
+ const temp = join(directory(file), `${generation}.tmp`);
261
+ writeFileSync(temp, JSON.stringify({ data: manifest, hash: digest(JSON.stringify(manifest)) }), { mode: 0o600 });
262
+ renameSync(temp, manifestPath(file));
263
+ }
264
+ finally {
265
+ closeSync(fd);
266
+ }
267
+ }, incremental ? { timeoutMs: 0, reclaimStale: false } : {});
268
+ }
269
+ /** Append audit first. A crash/failed index update is recovered by tail replay. */
270
+ export function appendLaunchRow(file, kind, row) {
271
+ appendFileSync(file, `${JSON.stringify(row)}\n`, "utf8");
272
+ if (existsSync(manifestPath(file))) {
273
+ try {
274
+ buildLaunchIndex(file, kind, true);
275
+ }
276
+ catch { /* index failure must not roll back an already published audit row */ }
277
+ }
278
+ }
279
+ //# sourceMappingURL=launch-index.js.map