@daeda/mcp-pro 0.1.47 → 0.1.48
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.
- package/dist/index.js +69 -48
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -82957,20 +82957,23 @@ var withProcessMutex = async (key2, fn9) => {
|
|
|
82957
82957
|
}
|
|
82958
82958
|
}
|
|
82959
82959
|
};
|
|
82960
|
-
var ensureLockTarget = (filePath) => {
|
|
82961
|
-
const lockTarget = `${filePath}.lock-target`;
|
|
82962
|
-
fs5.mkdirSync(path2.dirname(filePath), { recursive: true });
|
|
82963
|
-
const fd2 = fs5.openSync(lockTarget, "a");
|
|
82964
|
-
fs5.closeSync(fd2);
|
|
82965
|
-
return lockTarget;
|
|
82966
|
-
};
|
|
82967
82960
|
var withFileLock = async (filePath, fn9) => {
|
|
82968
|
-
const
|
|
82969
|
-
|
|
82961
|
+
const dirPath = path2.dirname(filePath);
|
|
82962
|
+
fs5.mkdirSync(dirPath, { recursive: true });
|
|
82963
|
+
const legacyLockTarget = `${filePath}.lock-target`;
|
|
82964
|
+
try {
|
|
82965
|
+
fs5.rmSync(legacyLockTarget, { force: true });
|
|
82966
|
+
} catch {
|
|
82967
|
+
}
|
|
82968
|
+
const release = await loadProperLockfileModule().lock(dirPath, {
|
|
82969
|
+
lockfilePath: `${filePath}.lock`,
|
|
82970
82970
|
retries: WRITE_LOCK_RETRIES,
|
|
82971
82971
|
stale: WRITE_LOCK_STALE_MS,
|
|
82972
82972
|
update: WRITE_LOCK_UPDATE_MS,
|
|
82973
|
-
realpath: true
|
|
82973
|
+
realpath: true,
|
|
82974
|
+
onCompromised: (error) => {
|
|
82975
|
+
console.error(`[state-file] Lock compromised for ${filePath}: ${error.message}`);
|
|
82976
|
+
}
|
|
82974
82977
|
});
|
|
82975
82978
|
try {
|
|
82976
82979
|
return await fn9();
|
|
@@ -87440,10 +87443,10 @@ var handleRegisterResponse = (payload, ctx) => !payload.success || !payload.targ
|
|
|
87440
87443
|
),
|
|
87441
87444
|
Effect43.flatMap(() => Ref4.get(ctx.handlersRef)),
|
|
87442
87445
|
Effect43.flatMap(
|
|
87443
|
-
(handlers) => Effect43.
|
|
87446
|
+
(handlers) => Effect43.promise(async () => {
|
|
87444
87447
|
const portals = payload.target_portals;
|
|
87445
|
-
handlers?.autoSelectSinglePortal(portals);
|
|
87446
|
-
handlers?.onRegisterSuccess(portals);
|
|
87448
|
+
await handlers?.autoSelectSinglePortal(portals);
|
|
87449
|
+
await handlers?.onRegisterSuccess(portals);
|
|
87447
87450
|
})
|
|
87448
87451
|
)
|
|
87449
87452
|
);
|
|
@@ -87457,7 +87460,7 @@ var handleSyncFullResponse = (payload, ctx) => !payload.success ? Effect44.sync(
|
|
|
87457
87460
|
return pipe32(
|
|
87458
87461
|
Ref5.get(ctx.handlersRef),
|
|
87459
87462
|
Effect44.flatMap(
|
|
87460
|
-
(handlers) => handlers?.onSyncArtifacts ? Effect44.
|
|
87463
|
+
(handlers) => handlers?.onSyncArtifacts ? Effect44.promise(() => handlers.onSyncArtifacts(payload.target_portal, artifacts)) : Effect44.void
|
|
87461
87464
|
)
|
|
87462
87465
|
);
|
|
87463
87466
|
})
|
|
@@ -87487,7 +87490,7 @@ var handleNewArtifacts = (payload, ctx) => pipe34(
|
|
|
87487
87490
|
),
|
|
87488
87491
|
Effect46.flatMap(() => Ref7.get(ctx.handlersRef)),
|
|
87489
87492
|
Effect46.flatMap(
|
|
87490
|
-
(handlers) => handlers?.onNewArtifacts ? Effect46.
|
|
87493
|
+
(handlers) => handlers?.onNewArtifacts ? Effect46.promise(() => handlers.onNewArtifacts(payload.target_portal, payload.artifacts)) : Effect46.void
|
|
87491
87494
|
)
|
|
87492
87495
|
);
|
|
87493
87496
|
|
|
@@ -88210,8 +88213,8 @@ var getClientState = (config) => Effect59.runSync(config.load());
|
|
|
88210
88213
|
function getSelectedPortalId(config) {
|
|
88211
88214
|
return getClientState(config).selectedPortalId;
|
|
88212
88215
|
}
|
|
88213
|
-
function
|
|
88214
|
-
Effect59.
|
|
88216
|
+
async function setSelectedPortalIdAsync(config, portalId) {
|
|
88217
|
+
await Effect59.runPromise(
|
|
88215
88218
|
config.update((state) => ({
|
|
88216
88219
|
...state,
|
|
88217
88220
|
selectedPortalId: portalId
|
|
@@ -88282,13 +88285,19 @@ Other tools accept an optional portalIds parameter to target specific portals re
|
|
|
88282
88285
|
};
|
|
88283
88286
|
}
|
|
88284
88287
|
const state = getClientState(config);
|
|
88285
|
-
const syncMode = handoffSelectedPortal ? handoffSelectedPortal(portalId) : (() => {
|
|
88286
|
-
|
|
88287
|
-
|
|
88288
|
-
|
|
88289
|
-
|
|
88290
|
-
|
|
88291
|
-
|
|
88288
|
+
const syncMode = handoffSelectedPortal ? await handoffSelectedPortal(portalId) : (() => {
|
|
88289
|
+
return Effect59.runPromise(
|
|
88290
|
+
config.update((state2) => ({
|
|
88291
|
+
...state2,
|
|
88292
|
+
selectedPortalId: portalId
|
|
88293
|
+
}))
|
|
88294
|
+
).then(() => {
|
|
88295
|
+
if (!getPortalSyncControl(state, portalId).enabled) {
|
|
88296
|
+
return "stale_local_only";
|
|
88297
|
+
}
|
|
88298
|
+
Effect59.runFork(pipe47(ws6.sendSyncFull(portalId), Effect59.catchAll(() => Effect59.void)));
|
|
88299
|
+
return "syncing";
|
|
88300
|
+
});
|
|
88292
88301
|
})();
|
|
88293
88302
|
if (syncMode === "stale_local_only") {
|
|
88294
88303
|
return {
|
|
@@ -88307,10 +88316,10 @@ Other tools accept an optional portalIds parameter to target specific portals re
|
|
|
88307
88316
|
}
|
|
88308
88317
|
);
|
|
88309
88318
|
}
|
|
88310
|
-
function autoSelectSinglePortal(config, portals) {
|
|
88319
|
+
async function autoSelectSinglePortal(config, portals) {
|
|
88311
88320
|
if (portals.length === 1 && portals[0]) {
|
|
88312
88321
|
const portal = portals[0];
|
|
88313
|
-
|
|
88322
|
+
await setSelectedPortalIdAsync(config, portal.target_portal);
|
|
88314
88323
|
console.error(`Auto-selected single portal: ${portal.target_name ?? "Unnamed"} (${portal.target_portal})`);
|
|
88315
88324
|
return portal.target_portal;
|
|
88316
88325
|
}
|
|
@@ -88360,7 +88369,7 @@ Disabled portals remain selectable, but only stale local data is available if it
|
|
|
88360
88369
|
isError: true
|
|
88361
88370
|
};
|
|
88362
88371
|
}
|
|
88363
|
-
const { previous, next } = Effect60.
|
|
88372
|
+
const { previous, next } = await Effect60.runPromise(
|
|
88364
88373
|
deps.config.update((state) => {
|
|
88365
88374
|
let nextState2 = seedMissingPortalSyncControls(
|
|
88366
88375
|
state,
|
|
@@ -134488,7 +134497,7 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
134488
134497
|
const portalFileState = yield* PortalFileStateService;
|
|
134489
134498
|
const getPortalId = () => getSelectedPortalId(config);
|
|
134490
134499
|
const getClientState2 = () => Effect143.runSync(config.load());
|
|
134491
|
-
const saveClientState = (updater) => Effect143.
|
|
134500
|
+
const saveClientState = async (updater) => Effect143.runPromise(
|
|
134492
134501
|
pipe119(
|
|
134493
134502
|
config.update(updater),
|
|
134494
134503
|
Effect143.map(({ next }) => next)
|
|
@@ -134516,7 +134525,7 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
134516
134525
|
portalData,
|
|
134517
134526
|
portalFileState
|
|
134518
134527
|
});
|
|
134519
|
-
const handoffSelectedPortal = (nextPortalId) => {
|
|
134528
|
+
const handoffSelectedPortal = async (nextPortalId) => {
|
|
134520
134529
|
const previousPortalId = getSelectedPortalId(config);
|
|
134521
134530
|
if (previousPortalId !== null && previousPortalId !== nextPortalId) {
|
|
134522
134531
|
Effect143.runSync(
|
|
@@ -134527,7 +134536,7 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
134527
134536
|
);
|
|
134528
134537
|
}
|
|
134529
134538
|
setSelectedPortal(nextPortalId);
|
|
134530
|
-
const nextState = saveClientState((state2) => ({
|
|
134539
|
+
const nextState = await saveClientState((state2) => ({
|
|
134531
134540
|
...state2,
|
|
134532
134541
|
selectedPortalId: nextPortalId
|
|
134533
134542
|
}));
|
|
@@ -134961,21 +134970,27 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
134961
134970
|
)
|
|
134962
134971
|
);
|
|
134963
134972
|
yield* ws6.registerHandlers({
|
|
134964
|
-
onSyncArtifacts: (portalId, artifacts) => {
|
|
134973
|
+
onSyncArtifacts: async (portalId, artifacts) => {
|
|
134965
134974
|
if (!isMasterClient()) {
|
|
134966
134975
|
logReadOnlySkip("full artifact sync", portalId);
|
|
134967
134976
|
return;
|
|
134968
134977
|
}
|
|
134969
134978
|
const incomingWithStatus = artifacts.map((a4) => ({ ...a4, status: "NOT_STARTED", error: null }));
|
|
134970
|
-
const updated =
|
|
134971
|
-
|
|
134972
|
-
|
|
134973
|
-
|
|
134974
|
-
() =>
|
|
134979
|
+
const updated = await Effect143.runPromise(
|
|
134980
|
+
pipe119(
|
|
134981
|
+
portalFileState.setArtifacts(portalId, incomingWithStatus),
|
|
134982
|
+
Effect143.tap(
|
|
134983
|
+
(s) => Effect143.sync(
|
|
134984
|
+
() => console.error(`[sync:full] Saved ${s.artifacts.length} artifacts for portal ${portalId}`)
|
|
134985
|
+
)
|
|
134986
|
+
),
|
|
134987
|
+
Effect143.catchAll(
|
|
134988
|
+
(error) => Effect143.sync(() => {
|
|
134989
|
+
console.error(`[sync:full] Failed to persist artifact manifest for portal ${portalId}:`, error);
|
|
134990
|
+
return null;
|
|
134991
|
+
})
|
|
134975
134992
|
)
|
|
134976
|
-
)
|
|
134977
|
-
Effect143.catchAll(() => Effect143.succeed(null)),
|
|
134978
|
-
Effect143.runSync
|
|
134993
|
+
)
|
|
134979
134994
|
);
|
|
134980
134995
|
if (!updated) return;
|
|
134981
134996
|
const enabledArtifacts = filterEnabledArtifacts(getClientState2(), portalId, incomingWithStatus);
|
|
@@ -134995,7 +135010,7 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
134995
135010
|
schedulePortalFollowUpAfterDrain(portalId, "sync:full");
|
|
134996
135011
|
}
|
|
134997
135012
|
},
|
|
134998
|
-
onNewArtifacts: (portalId, artifacts) => {
|
|
135013
|
+
onNewArtifacts: async (portalId, artifacts) => {
|
|
134999
135014
|
if (!isMasterClient()) {
|
|
135000
135015
|
logReadOnlySkip("new artifact handling", portalId);
|
|
135001
135016
|
return;
|
|
@@ -135004,10 +135019,16 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
135004
135019
|
const newWithStatus = artifacts.map((a4) => ({ ...a4, status: "NOT_STARTED", error: null }));
|
|
135005
135020
|
const enabledArtifacts = filterEnabledArtifacts(getClientState2(), portalId, newWithStatus);
|
|
135006
135021
|
const objectTypesToSync = enabledArtifacts.map((a4) => a4.object_type);
|
|
135007
|
-
const merged =
|
|
135008
|
-
|
|
135009
|
-
|
|
135010
|
-
|
|
135022
|
+
const merged = await Effect143.runPromise(
|
|
135023
|
+
pipe119(
|
|
135024
|
+
portalFileState.mergeArtifacts(portalId, newWithStatus),
|
|
135025
|
+
Effect143.catchAll(
|
|
135026
|
+
(error) => Effect143.sync(() => {
|
|
135027
|
+
console.error(`[sync:new-artifacts] Failed to persist artifact update for portal ${portalId}:`, error);
|
|
135028
|
+
return null;
|
|
135029
|
+
})
|
|
135030
|
+
)
|
|
135031
|
+
)
|
|
135011
135032
|
);
|
|
135012
135033
|
if (!merged) return;
|
|
135013
135034
|
const toSync = filterUnsyncedArtifacts(merged.artifacts, new Set(objectTypesToSync));
|
|
@@ -135173,15 +135194,15 @@ var mainProgram = Effect143.gen(function* () {
|
|
|
135173
135194
|
)
|
|
135174
135195
|
);
|
|
135175
135196
|
},
|
|
135176
|
-
autoSelectSinglePortal: (portals) => {
|
|
135177
|
-
const autoSelected = autoSelectSinglePortal(config, portals);
|
|
135197
|
+
autoSelectSinglePortal: async (portals) => {
|
|
135198
|
+
const autoSelected = await autoSelectSinglePortal(config, portals);
|
|
135178
135199
|
if (autoSelected !== null) {
|
|
135179
135200
|
setSelectedPortal(autoSelected);
|
|
135180
135201
|
}
|
|
135181
135202
|
return autoSelected;
|
|
135182
135203
|
},
|
|
135183
|
-
onRegisterSuccess: (portals) => {
|
|
135184
|
-
const nextState = saveClientState(
|
|
135204
|
+
onRegisterSuccess: async (portals) => {
|
|
135205
|
+
const nextState = await saveClientState(
|
|
135185
135206
|
(state2) => seedMissingPortalSyncControls(state2, portals.map((portal) => portal.target_portal))
|
|
135186
135207
|
);
|
|
135187
135208
|
const selectedPortalId2 = getSelectedPortalId(config);
|