@x12i/memorix-service 3.4.0 → 3.6.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.
Files changed (57) hide show
  1. package/README.md +1 -1
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +6 -0
  4. package/dist/app.js.map +1 -1
  5. package/dist/connector-ops/checkpoint-store.d.ts +7 -0
  6. package/dist/connector-ops/checkpoint-store.d.ts.map +1 -0
  7. package/dist/connector-ops/checkpoint-store.js +135 -0
  8. package/dist/connector-ops/checkpoint-store.js.map +1 -0
  9. package/dist/connector-ops/checkpoint-types.d.ts +46 -0
  10. package/dist/connector-ops/checkpoint-types.d.ts.map +1 -0
  11. package/dist/connector-ops/checkpoint-types.js +14 -0
  12. package/dist/connector-ops/checkpoint-types.js.map +1 -0
  13. package/dist/connector-ops/continuous-types.d.ts +141 -0
  14. package/dist/connector-ops/continuous-types.d.ts.map +1 -0
  15. package/dist/connector-ops/continuous-types.js +13 -0
  16. package/dist/connector-ops/continuous-types.js.map +1 -0
  17. package/dist/connector-ops/coordinator.d.ts +88 -0
  18. package/dist/connector-ops/coordinator.d.ts.map +1 -0
  19. package/dist/connector-ops/coordinator.js +174 -0
  20. package/dist/connector-ops/coordinator.js.map +1 -0
  21. package/dist/connector-ops/index.d.ts +6 -0
  22. package/dist/connector-ops/index.d.ts.map +1 -1
  23. package/dist/connector-ops/index.js +6 -0
  24. package/dist/connector-ops/index.js.map +1 -1
  25. package/dist/connector-ops/run-store.d.ts +16 -0
  26. package/dist/connector-ops/run-store.d.ts.map +1 -0
  27. package/dist/connector-ops/run-store.js +249 -0
  28. package/dist/connector-ops/run-store.js.map +1 -0
  29. package/dist/connector-ops/schedule-lease-store.d.ts +8 -0
  30. package/dist/connector-ops/schedule-lease-store.d.ts.map +1 -0
  31. package/dist/connector-ops/schedule-lease-store.js +318 -0
  32. package/dist/connector-ops/schedule-lease-store.js.map +1 -0
  33. package/dist/incremental-state/index.d.ts +3 -0
  34. package/dist/incremental-state/index.d.ts.map +1 -0
  35. package/dist/incremental-state/index.js +3 -0
  36. package/dist/incremental-state/index.js.map +1 -0
  37. package/dist/incremental-state/state-store.d.ts +7 -0
  38. package/dist/incremental-state/state-store.d.ts.map +1 -0
  39. package/dist/incremental-state/state-store.js +183 -0
  40. package/dist/incremental-state/state-store.js.map +1 -0
  41. package/dist/incremental-state/types.d.ts +104 -0
  42. package/dist/incremental-state/types.d.ts.map +1 -0
  43. package/dist/incremental-state/types.js +8 -0
  44. package/dist/incremental-state/types.js.map +1 -0
  45. package/dist/platform.d.ts +26 -1
  46. package/dist/platform.d.ts.map +1 -1
  47. package/dist/platform.js +111 -1
  48. package/dist/platform.js.map +1 -1
  49. package/dist/routes/continuous-acquisition.d.ts +5 -0
  50. package/dist/routes/continuous-acquisition.d.ts.map +1 -0
  51. package/dist/routes/continuous-acquisition.js +259 -0
  52. package/dist/routes/continuous-acquisition.js.map +1 -0
  53. package/dist/routes/incremental-state.d.ts +5 -0
  54. package/dist/routes/incremental-state.d.ts.map +1 -0
  55. package/dist/routes/incremental-state.js +173 -0
  56. package/dist/routes/incremental-state.js.map +1 -0
  57. package/package.json +1 -1
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Jobs-ticked continuous acquisition coordinator (MX-CONT-01 host).
3
+ * Bounded pipeline invokes only — no always-on CF-A5 fleet daemon.
4
+ */
5
+ /**
6
+ * Profile helpers for acceptance proofs (CF-A5 vs Splunk watermark window).
7
+ */
8
+ export const COORDINATOR_PROFILES = {
9
+ /** CrowdStrike CF-A5-style: hard event/partition cap. */
10
+ cfA5: {
11
+ maxEvents: 500,
12
+ maxPages: 10,
13
+ maxDurationMs: 120_000,
14
+ },
15
+ /** Splunk-style watermark window (bounded lookback pages). */
16
+ splunkWatermark: {
17
+ maxPages: 5,
18
+ maxEvents: 5_000,
19
+ maxDurationMs: 180_000,
20
+ },
21
+ };
22
+ export async function tickContinuousAcquisition(deps) {
23
+ const mcoOpId = deps.mcoOpId ?? "continuous-acquire";
24
+ const enabled = await deps.schedules.listEnabled();
25
+ const result = {
26
+ orgId: deps.orgId,
27
+ considered: enabled.length,
28
+ started: 0,
29
+ skipped: 0,
30
+ succeeded: 0,
31
+ failed: 0,
32
+ details: [],
33
+ };
34
+ for (const schedule of enabled) {
35
+ const { connectorId, instanceId, streamId } = schedule;
36
+ const detailBase = { connectorId, instanceId, streamId };
37
+ const instance = await deps.integrations.get(instanceId);
38
+ if (!instance || instance.enabled === false) {
39
+ result.skipped += 1;
40
+ result.details.push({
41
+ ...detailBase,
42
+ outcome: "skip",
43
+ reason: "instance_disabled",
44
+ });
45
+ continue;
46
+ }
47
+ const override = await deps.overrides.getOverride(connectorId, mcoOpId);
48
+ if (override && override.enabled === false) {
49
+ result.skipped += 1;
50
+ result.details.push({
51
+ ...detailBase,
52
+ outcome: "skip",
53
+ reason: "mco_disabled",
54
+ });
55
+ continue;
56
+ }
57
+ let lease;
58
+ try {
59
+ lease = await deps.leases.acquire(connectorId, instanceId, streamId, {
60
+ ownerId: deps.ownerId,
61
+ ttlMs: deps.leaseTtlMs,
62
+ });
63
+ }
64
+ catch (err) {
65
+ result.skipped += 1;
66
+ result.details.push({
67
+ ...detailBase,
68
+ outcome: "skip",
69
+ reason: err instanceof Error && "code" in err
70
+ ? String(err.code)
71
+ : "lease_held",
72
+ });
73
+ continue;
74
+ }
75
+ const checkpointBefore = await deps.checkpoints.get(connectorId, instanceId, streamId);
76
+ const bounds = {
77
+ ...COORDINATOR_PROFILES.cfA5,
78
+ ...schedule.bounds,
79
+ };
80
+ const run = await deps.runs.start(connectorId, instanceId, streamId, {
81
+ ownerId: deps.ownerId,
82
+ bounds,
83
+ checkpointBefore: checkpointBefore ?? null,
84
+ });
85
+ result.started += 1;
86
+ try {
87
+ const live = await deps.runs.get(connectorId, instanceId, streamId, run.runId);
88
+ if (live?.cancelRequested) {
89
+ await deps.runs.end(connectorId, instanceId, streamId, run.runId, {
90
+ outcome: "canceled",
91
+ errorClass: "canceled",
92
+ });
93
+ result.skipped += 1;
94
+ result.details.push({
95
+ ...detailBase,
96
+ outcome: "canceled",
97
+ runId: run.runId,
98
+ });
99
+ continue;
100
+ }
101
+ const invoke = await deps.invokePipeline({
102
+ orgId: deps.orgId,
103
+ connectorId,
104
+ instanceId,
105
+ streamId,
106
+ schedule,
107
+ bounds,
108
+ runId: run.runId,
109
+ checkpoint: checkpointBefore,
110
+ });
111
+ if (!invoke.ok || !invoke.applyAck || !invoke.nextCheckpoint) {
112
+ await deps.runs.end(connectorId, instanceId, streamId, run.runId, {
113
+ outcome: "fail",
114
+ errorClass: invoke.errorClass ?? "apply_failed",
115
+ errorMessage: invoke.errorMessage,
116
+ checkpointAfter: checkpointBefore,
117
+ });
118
+ result.failed += 1;
119
+ result.details.push({
120
+ ...detailBase,
121
+ outcome: "fail",
122
+ reason: invoke.errorClass ?? "apply_failed",
123
+ runId: run.runId,
124
+ });
125
+ continue;
126
+ }
127
+ // Checkpoint advances ONLY after durable apply ack.
128
+ const after = await deps.checkpoints.put(connectorId, instanceId, streamId, {
129
+ ...invoke.nextCheckpoint,
130
+ producerRunId: run.runId,
131
+ expectedCheckpointRevision: checkpointBefore?.checkpointRevision,
132
+ });
133
+ await deps.runs.end(connectorId, instanceId, streamId, run.runId, {
134
+ outcome: "ok",
135
+ checkpointAfter: after,
136
+ });
137
+ result.succeeded += 1;
138
+ result.details.push({
139
+ ...detailBase,
140
+ outcome: "ok",
141
+ runId: run.runId,
142
+ });
143
+ }
144
+ catch (err) {
145
+ const message = err instanceof Error ? err.message : String(err);
146
+ await deps.runs.end(connectorId, instanceId, streamId, run.runId, {
147
+ outcome: "fail",
148
+ errorClass: "coordinator_error",
149
+ errorMessage: message,
150
+ checkpointAfter: checkpointBefore,
151
+ });
152
+ result.failed += 1;
153
+ result.details.push({
154
+ ...detailBase,
155
+ outcome: "fail",
156
+ reason: "coordinator_error",
157
+ runId: run.runId,
158
+ });
159
+ }
160
+ finally {
161
+ try {
162
+ await deps.leases.release(connectorId, instanceId, streamId, {
163
+ ownerId: lease.ownerId,
164
+ leaseId: lease.leaseId,
165
+ });
166
+ }
167
+ catch {
168
+ // lease may have expired; next tick can acquire
169
+ }
170
+ }
171
+ }
172
+ return result;
173
+ }
174
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/connector-ops/coordinator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  export * from "./types.js";
2
2
  export * from "./sanitize.js";
3
+ export * from "./checkpoint-types.js";
4
+ export * from "./continuous-types.js";
3
5
  export { createInMemoryMcoOverrideStore, createMongoMcoOverrideStore, isOverrideActive, validateSetOverride, } from "./override-store.js";
4
6
  export { createInMemoryMcoAttemptStore, createMongoMcoAttemptStore, } from "./attempt-store.js";
7
+ export { createInMemoryStreamCheckpointStore, createMongoStreamCheckpointStore, validatePutCheckpoint, assertCheckpointMethod, } from "./checkpoint-store.js";
8
+ export { createInMemoryStreamScheduleStore, createMongoStreamScheduleStore, createInMemoryStreamLeaseStore, createMongoStreamLeaseStore, validatePutSchedule, } from "./schedule-lease-store.js";
9
+ export { createInMemoryAcquisitionRunStore, createMongoAcquisitionRunStore, computeStreamFreshness, } from "./run-store.js";
10
+ export { tickContinuousAcquisition, COORDINATOR_PROFILES, type ContinuousAcquisitionTickDeps, type ContinuousAcquisitionTickResult, type BoundedPipelineInvoker, type BoundedPipelineInvokeResult, } from "./coordinator.js";
5
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector-ops/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connector-ops/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mCAAmC,EACnC,gCAAgC,EAChC,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,6BAA6B,EAClC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,GACjC,MAAM,kBAAkB,CAAC"}
@@ -1,5 +1,11 @@
1
1
  export * from "./types.js";
2
2
  export * from "./sanitize.js";
3
+ export * from "./checkpoint-types.js";
4
+ export * from "./continuous-types.js";
3
5
  export { createInMemoryMcoOverrideStore, createMongoMcoOverrideStore, isOverrideActive, validateSetOverride, } from "./override-store.js";
4
6
  export { createInMemoryMcoAttemptStore, createMongoMcoAttemptStore, } from "./attempt-store.js";
7
+ export { createInMemoryStreamCheckpointStore, createMongoStreamCheckpointStore, validatePutCheckpoint, assertCheckpointMethod, } from "./checkpoint-store.js";
8
+ export { createInMemoryStreamScheduleStore, createMongoStreamScheduleStore, createInMemoryStreamLeaseStore, createMongoStreamLeaseStore, validatePutSchedule, } from "./schedule-lease-store.js";
9
+ export { createInMemoryAcquisitionRunStore, createMongoAcquisitionRunStore, computeStreamFreshness, } from "./run-store.js";
10
+ export { tickContinuousAcquisition, COORDINATOR_PROFILES, } from "./coordinator.js";
5
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector-ops/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector-ops/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mCAAmC,EACnC,gCAAgC,EAChC,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iCAAiC,EACjC,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAKrB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { MongoClient } from "mongodb";
2
+ import { type AcquisitionRunRecord, type AcquisitionRunStore, type StreamFreshness, type StreamLease, type StreamSchedule } from "./continuous-types.js";
3
+ export declare function createInMemoryAcquisitionRunStore(orgId: string): AcquisitionRunStore;
4
+ export declare function createMongoAcquisitionRunStore(client: MongoClient, orgId: string): AcquisitionRunStore;
5
+ export declare function computeStreamFreshness(input: {
6
+ orgId: string;
7
+ connectorId: string;
8
+ instanceId: string;
9
+ streamId: string;
10
+ schedule: StreamSchedule | null;
11
+ lastSuccess: AcquisitionRunRecord | null;
12
+ lastRun: AcquisitionRunRecord | null;
13
+ lease: StreamLease | null;
14
+ nowIso?: string;
15
+ }): StreamFreshness;
16
+ //# sourceMappingURL=run-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-store.d.ts","sourceRoot":"","sources":["../../src/connector-ops/run-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAM,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAGxB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAW/B,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,GACZ,mBAAmB,CA+GrB;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAyIrB;AASD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,eAAe,CAoClB"}
@@ -0,0 +1,249 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { ServiceError } from "../errors.js";
3
+ import { hasSecretPayload, sanitizeErrorText } from "./sanitize.js";
4
+ import { ACQUISITION_RUNS_DEFAULT_LIMIT, ACQUISITION_RUNS_MAX_LIMIT, CONT_COLLECTIONS, } from "./continuous-types.js";
5
+ function operationalDbName(orgId) {
6
+ return `${orgId}_operational`;
7
+ }
8
+ function stripMongo(doc) {
9
+ const { _id: _drop, ...rest } = doc;
10
+ return rest;
11
+ }
12
+ export function createInMemoryAcquisitionRunStore(orgId) {
13
+ const rows = [];
14
+ return {
15
+ async start(connectorId, instanceId, streamId, input) {
16
+ if (hasSecretPayload(input)) {
17
+ throw new Error("run payload must not contain secrets");
18
+ }
19
+ const runId = input.runId?.trim() || randomUUID();
20
+ const existing = rows.find((r) => r.connectorId === connectorId &&
21
+ r.instanceId === instanceId &&
22
+ r.streamId === streamId &&
23
+ r.runId === runId);
24
+ if (existing)
25
+ return { ...existing };
26
+ const doc = {
27
+ orgId,
28
+ connectorId,
29
+ instanceId,
30
+ streamId,
31
+ runId,
32
+ startedAt: new Date().toISOString(),
33
+ endedAt: null,
34
+ outcome: null,
35
+ checkpointBefore: input.checkpointBefore ?? null,
36
+ bounds: input.bounds ?? null,
37
+ ownerId: input.ownerId ?? null,
38
+ cancelRequested: false,
39
+ };
40
+ rows.unshift(doc);
41
+ return { ...doc };
42
+ },
43
+ async end(connectorId, instanceId, streamId, runId, input) {
44
+ const idx = rows.findIndex((r) => r.connectorId === connectorId &&
45
+ r.instanceId === instanceId &&
46
+ r.streamId === streamId &&
47
+ r.runId === runId);
48
+ if (idx < 0) {
49
+ throw new ServiceError("NOT_FOUND", `run ${runId} not found`, 404);
50
+ }
51
+ const prev = rows[idx];
52
+ const doc = {
53
+ ...prev,
54
+ endedAt: new Date().toISOString(),
55
+ outcome: input.outcome,
56
+ errorClass: input.errorClass ?? null,
57
+ errorMessage: sanitizeErrorText(input.errorMessage) ?? null,
58
+ checkpointAfter: input.checkpointAfter ?? null,
59
+ };
60
+ rows[idx] = doc;
61
+ return { ...doc };
62
+ },
63
+ async get(connectorId, instanceId, streamId, runId) {
64
+ const doc = rows.find((r) => r.connectorId === connectorId &&
65
+ r.instanceId === instanceId &&
66
+ r.streamId === streamId &&
67
+ r.runId === runId);
68
+ return doc ? { ...doc } : null;
69
+ },
70
+ async requestCancel(connectorId, instanceId, streamId, runId) {
71
+ const idx = rows.findIndex((r) => r.connectorId === connectorId &&
72
+ r.instanceId === instanceId &&
73
+ r.streamId === streamId &&
74
+ r.runId === runId);
75
+ if (idx < 0)
76
+ return null;
77
+ const doc = { ...rows[idx], cancelRequested: true };
78
+ rows[idx] = doc;
79
+ return { ...doc };
80
+ },
81
+ async list(connectorId, instanceId, streamId, opts) {
82
+ const limit = Math.min(Math.max(1, opts?.limit ?? ACQUISITION_RUNS_DEFAULT_LIMIT), ACQUISITION_RUNS_MAX_LIMIT);
83
+ return rows
84
+ .filter((r) => r.connectorId === connectorId &&
85
+ r.instanceId === instanceId &&
86
+ r.streamId === streamId)
87
+ .slice(0, limit)
88
+ .map((r) => ({ ...r }));
89
+ },
90
+ async latestSuccess(connectorId, instanceId, streamId) {
91
+ const doc = rows.find((r) => r.connectorId === connectorId &&
92
+ r.instanceId === instanceId &&
93
+ r.streamId === streamId &&
94
+ r.outcome === "ok");
95
+ return doc ? { ...doc } : null;
96
+ },
97
+ };
98
+ }
99
+ export function createMongoAcquisitionRunStore(client, orgId) {
100
+ const db = client.db(operationalDbName(orgId));
101
+ const col = () => db.collection(CONT_COLLECTIONS.runs);
102
+ let indexesReady = null;
103
+ const ensureIndexes = async () => {
104
+ if (!indexesReady) {
105
+ indexesReady = (async () => {
106
+ await col().createIndex({ connectorId: 1, instanceId: 1, streamId: 1, runId: 1 }, { unique: true, name: "mco_acquisition_run_unique" });
107
+ await col().createIndex({ connectorId: 1, instanceId: 1, streamId: 1, startedAt: -1 }, { name: "mco_acquisition_run_started" });
108
+ })();
109
+ }
110
+ await indexesReady;
111
+ };
112
+ return {
113
+ async start(connectorId, instanceId, streamId, input) {
114
+ await ensureIndexes();
115
+ if (hasSecretPayload(input)) {
116
+ throw new Error("run payload must not contain secrets");
117
+ }
118
+ const runId = input.runId?.trim() || randomUUID();
119
+ const existing = await col().findOne({
120
+ connectorId,
121
+ instanceId,
122
+ streamId,
123
+ runId,
124
+ });
125
+ if (existing)
126
+ return stripMongo(existing);
127
+ const doc = {
128
+ orgId,
129
+ connectorId,
130
+ instanceId,
131
+ streamId,
132
+ runId,
133
+ startedAt: new Date().toISOString(),
134
+ endedAt: null,
135
+ outcome: null,
136
+ checkpointBefore: input.checkpointBefore ?? null,
137
+ bounds: input.bounds ?? null,
138
+ ownerId: input.ownerId ?? null,
139
+ cancelRequested: false,
140
+ };
141
+ await col().insertOne(doc);
142
+ return { ...doc };
143
+ },
144
+ async end(connectorId, instanceId, streamId, runId, input) {
145
+ await ensureIndexes();
146
+ const existing = await col().findOne({
147
+ connectorId,
148
+ instanceId,
149
+ streamId,
150
+ runId,
151
+ });
152
+ if (!existing) {
153
+ throw new ServiceError("NOT_FOUND", `run ${runId} not found`, 404);
154
+ }
155
+ const doc = {
156
+ ...stripMongo(existing),
157
+ endedAt: new Date().toISOString(),
158
+ outcome: input.outcome,
159
+ errorClass: input.errorClass ?? null,
160
+ errorMessage: sanitizeErrorText(input.errorMessage) ?? null,
161
+ checkpointAfter: input.checkpointAfter ?? null,
162
+ };
163
+ await col().replaceOne({ connectorId, instanceId, streamId, runId }, doc);
164
+ return { ...doc };
165
+ },
166
+ async get(connectorId, instanceId, streamId, runId) {
167
+ await ensureIndexes();
168
+ const doc = await col().findOne({
169
+ connectorId,
170
+ instanceId,
171
+ streamId,
172
+ runId,
173
+ });
174
+ return doc ? stripMongo(doc) : null;
175
+ },
176
+ async requestCancel(connectorId, instanceId, streamId, runId) {
177
+ await ensureIndexes();
178
+ const existing = await col().findOne({
179
+ connectorId,
180
+ instanceId,
181
+ streamId,
182
+ runId,
183
+ });
184
+ if (!existing)
185
+ return null;
186
+ const doc = {
187
+ ...stripMongo(existing),
188
+ cancelRequested: true,
189
+ };
190
+ await col().replaceOne({ connectorId, instanceId, streamId, runId }, doc);
191
+ return doc;
192
+ },
193
+ async list(connectorId, instanceId, streamId, opts) {
194
+ await ensureIndexes();
195
+ const limit = Math.min(Math.max(1, opts?.limit ?? ACQUISITION_RUNS_DEFAULT_LIMIT), ACQUISITION_RUNS_MAX_LIMIT);
196
+ const rows = await col()
197
+ .find({ connectorId, instanceId, streamId })
198
+ .sort({ startedAt: -1 })
199
+ .limit(limit)
200
+ .toArray();
201
+ return rows.map(stripMongo);
202
+ },
203
+ async latestSuccess(connectorId, instanceId, streamId) {
204
+ await ensureIndexes();
205
+ const doc = await col().findOne({ connectorId, instanceId, streamId, outcome: "ok" }, { sort: { endedAt: -1 } });
206
+ return doc ? stripMongo(doc) : null;
207
+ },
208
+ };
209
+ }
210
+ function cadenceIntervalSeconds(schedule) {
211
+ if (schedule.cadence.kind === "interval") {
212
+ return schedule.cadence.intervalSeconds;
213
+ }
214
+ return 3600;
215
+ }
216
+ export function computeStreamFreshness(input) {
217
+ const now = Date.parse(input.nowIso ?? new Date().toISOString());
218
+ const lastSuccessAt = input.lastSuccess?.endedAt ?? null;
219
+ const lastRunAt = input.lastRun?.endedAt ?? input.lastRun?.startedAt ?? null;
220
+ let lagSeconds = null;
221
+ if (lastSuccessAt) {
222
+ lagSeconds = Math.max(0, Math.floor((now - Date.parse(lastSuccessAt)) / 1000));
223
+ }
224
+ const interval = input.schedule
225
+ ? cadenceIntervalSeconds(input.schedule)
226
+ : 3600;
227
+ const aging = lagSeconds == null ? Boolean(input.schedule?.enabled) : lagSeconds > interval * 2;
228
+ const lapsed = lagSeconds == null
229
+ ? Boolean(input.schedule?.enabled)
230
+ : lagSeconds > interval * 3;
231
+ return {
232
+ orgId: input.orgId,
233
+ connectorId: input.connectorId,
234
+ instanceId: input.instanceId,
235
+ streamId: input.streamId,
236
+ scheduleEnabled: input.schedule?.enabled === true,
237
+ lastSuccessAt,
238
+ lastFailAt: input.lastRun?.outcome === "fail" ? input.lastRun.endedAt ?? null : null,
239
+ lastRunAt,
240
+ lastOutcome: input.lastRun?.outcome ?? null,
241
+ lagSeconds,
242
+ aging,
243
+ lapsed,
244
+ activeLeaseOwnerId: input.lease?.ownerId ?? null,
245
+ activeLeaseExpiresAt: input.lease?.expiresAt ?? null,
246
+ cancelRequested: input.lastRun?.cancelRequested === true && !input.lastRun.endedAt,
247
+ };
248
+ }
249
+ //# sourceMappingURL=run-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-store.js","sourceRoot":"","sources":["../../src/connector-ops/run-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { MongoClient } from "mongodb";
2
+ import { type PutStreamSchedule, type StreamLeaseStore, type StreamScheduleStore } from "./continuous-types.js";
3
+ export declare function validatePutSchedule(body: PutStreamSchedule): void;
4
+ export declare function createInMemoryStreamScheduleStore(orgId: string): StreamScheduleStore;
5
+ export declare function createMongoStreamScheduleStore(client: MongoClient, orgId: string): StreamScheduleStore;
6
+ export declare function createInMemoryStreamLeaseStore(orgId: string): StreamLeaseStore;
7
+ export declare function createMongoStreamLeaseStore(client: MongoClient, orgId: string): StreamLeaseStore;
8
+ //# sourceMappingURL=schedule-lease-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule-lease-store.d.ts","sourceRoot":"","sources":["../../src/connector-ops/schedule-lease-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAM,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EAIL,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAErB,KAAK,mBAAmB,EACzB,MAAM,uBAAuB,CAAC;AAmB/B,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAuBjE;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,MAAM,GACZ,mBAAmB,CA2CrB;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAkErB;AAMD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CA+E9E;AAsCD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAuIlB"}