@civilization/deepseek-harness-skill-mcp 0.1.3 → 0.1.4
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/README.md +2 -0
- package/package.json +1 -1
- package/src/index.js +1 -1
- package/src/store.js +12 -1
package/README.md
CHANGED
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -20,7 +20,7 @@ const output = {
|
|
|
20
20
|
export async function apply(ctx, config) {
|
|
21
21
|
const home = process.env.DSH_HOME || join(homedir(), '.dsh')
|
|
22
22
|
const store = new ExtensionStore(config.patchPath || join(home, 'profiles', 'web', 'cordis.patch.yml'))
|
|
23
|
-
await store.
|
|
23
|
+
await store.ensureNonFatalMcpStartup()
|
|
24
24
|
ctx.inject(['connection'], web => {
|
|
25
25
|
web.connection.rpc.handle('/extensions', createWebHandler(store, ctx))
|
|
26
26
|
})
|
package/src/store.js
CHANGED
|
@@ -113,6 +113,17 @@ export class ExtensionStore {
|
|
|
113
113
|
return markedRows(content)?.rows ?? legacyPatch(content)?.managed ?? []
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
/** Migrate managed MCP rows so an unavailable server cannot reject profile startup. */
|
|
117
|
+
async ensureNonFatalMcpStartup() {
|
|
118
|
+
const rows = await this.read()
|
|
119
|
+
if (!rows.some(row => row.config.serverName && row.config.failOnStartupError !== false)) return
|
|
120
|
+
await this.update(current => {
|
|
121
|
+
for (const row of current) {
|
|
122
|
+
if (row.config.serverName) row.config.failOnStartupError = false
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
|
|
116
127
|
async update(change, signal, expectedRevision) {
|
|
117
128
|
signal?.throwIfAborted()
|
|
118
129
|
const lockPath = `${this.path}.lock`
|
|
@@ -178,7 +189,7 @@ export class ExtensionStore {
|
|
|
178
189
|
command: typeof input.command === 'string' ? normalizeWindowsPath(input.command) : input.command,
|
|
179
190
|
cwd: typeof input.cwd === 'string' && input.cwd ? normalizeWindowsPath(input.cwd) : input.cwd,
|
|
180
191
|
} : input
|
|
181
|
-
const config = McpConfig({ ...normalized, serverName: id, failOnStartupError:
|
|
192
|
+
const config = McpConfig({ ...normalized, serverName: id, failOnStartupError: false })
|
|
182
193
|
if (config.transport === 'streamable-http') {
|
|
183
194
|
const url = new URL(config.url)
|
|
184
195
|
if (!['http:', 'https:'].includes(url.protocol) || url.username || url.password || url.search || url.hash) throw new Error('Use an HTTP(S) endpoint without credentials, query or fragment.')
|