@skaile/workspaces 4.6.0 → 4.7.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.
- package/CHANGELOG.md +12 -0
- package/dist/{asset-feeds-3XUEJHLJ.js → asset-feeds-CV7EE4GI.js} +7 -7
- package/dist/{asset-feeds-3XUEJHLJ.js.map → asset-feeds-CV7EE4GI.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +3 -3
- package/dist/asset-manager/index.js +6 -6
- package/dist/asset-manager/installer.js +4 -4
- package/dist/bridge/codex-app-server.js +4 -4
- package/dist/bridge/drivers/claude-sdk.js +52 -9
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +6 -6
- package/dist/bridge/drivers/continue.js +6 -6
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +4 -4
- package/dist/bridge/drivers/goose.js +6 -6
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.js +6 -6
- package/dist/bridge/drivers/qwen.js +4 -4
- package/dist/bridge/index.js +6 -6
- package/dist/bridge/src/drivers/claude-sdk.d.ts +16 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/{chunk-YNZ5FIFH.js → chunk-4AAEBUX7.js} +7 -7
- package/dist/{chunk-YNZ5FIFH.js.map → chunk-4AAEBUX7.js.map} +1 -1
- package/dist/{chunk-JXCUUZA3.js → chunk-4ZTPYIBE.js} +9 -6
- package/dist/chunk-4ZTPYIBE.js.map +1 -0
- package/dist/{chunk-KMFZVPYR.js → chunk-5GYFYGVW.js} +2 -2
- package/dist/{chunk-KMFZVPYR.js.map → chunk-5GYFYGVW.js.map} +1 -1
- package/dist/{chunk-2HZJKDLG.js → chunk-7UM46L33.js} +2 -2
- package/dist/{chunk-2HZJKDLG.js.map → chunk-7UM46L33.js.map} +1 -1
- package/dist/{chunk-EVVE4SL4.js → chunk-A42QGGSB.js} +3 -3
- package/dist/{chunk-EVVE4SL4.js.map → chunk-A42QGGSB.js.map} +1 -1
- package/dist/{chunk-UJPVUN6H.js → chunk-BCXZ74DM.js} +4 -4
- package/dist/{chunk-UJPVUN6H.js.map → chunk-BCXZ74DM.js.map} +1 -1
- package/dist/{chunk-PTETBRRC.js → chunk-DS7B54NF.js} +3 -3
- package/dist/{chunk-PTETBRRC.js.map → chunk-DS7B54NF.js.map} +1 -1
- package/dist/{chunk-KW7YIRYL.js → chunk-DYT3AQBM.js} +44 -4
- package/dist/chunk-DYT3AQBM.js.map +1 -0
- package/dist/{chunk-6ZQU5WKJ.js → chunk-HBBVWZ4T.js} +4 -4
- package/dist/{chunk-6ZQU5WKJ.js.map → chunk-HBBVWZ4T.js.map} +1 -1
- package/dist/{chunk-K27T47OO.js → chunk-HKOC273F.js} +71 -5
- package/dist/chunk-HKOC273F.js.map +1 -0
- package/dist/{chunk-COK4WPU4.js → chunk-HR2AGPLJ.js} +4 -4
- package/dist/{chunk-COK4WPU4.js.map → chunk-HR2AGPLJ.js.map} +1 -1
- package/dist/{chunk-SAXTWLXZ.js → chunk-HVTU3CVF.js} +187 -48
- package/dist/chunk-HVTU3CVF.js.map +1 -0
- package/dist/{chunk-W3YYB7K7.js → chunk-IECSLI55.js} +3 -3
- package/dist/{chunk-W3YYB7K7.js.map → chunk-IECSLI55.js.map} +1 -1
- package/dist/{chunk-QVTROHEZ.js → chunk-IUVPPJ4T.js} +3 -3
- package/dist/{chunk-QVTROHEZ.js.map → chunk-IUVPPJ4T.js.map} +1 -1
- package/dist/{chunk-35XUCUKZ.js → chunk-J2NEKEZK.js} +3 -3
- package/dist/{chunk-35XUCUKZ.js.map → chunk-J2NEKEZK.js.map} +1 -1
- package/dist/{chunk-DXXIALYF.js → chunk-JH63TVZG.js} +5 -5
- package/dist/{chunk-DXXIALYF.js.map → chunk-JH63TVZG.js.map} +1 -1
- package/dist/{chunk-WVSF3IEQ.js → chunk-JWWER4L5.js} +2 -2
- package/dist/{chunk-WVSF3IEQ.js.map → chunk-JWWER4L5.js.map} +1 -1
- package/dist/{chunk-63PBQN5U.js → chunk-MHROUPZN.js} +9 -9
- package/dist/{chunk-63PBQN5U.js.map → chunk-MHROUPZN.js.map} +1 -1
- package/dist/{chunk-NWZQMJTI.js → chunk-NIHNZC6E.js} +3 -3
- package/dist/{chunk-NWZQMJTI.js.map → chunk-NIHNZC6E.js.map} +1 -1
- package/dist/{chunk-VZOUBMM4.js → chunk-NV6R6HJR.js} +5 -5
- package/dist/{chunk-VZOUBMM4.js.map → chunk-NV6R6HJR.js.map} +1 -1
- package/dist/{chunk-TRGMQUAZ.js → chunk-NYRLSXTB.js} +66 -47
- package/dist/chunk-NYRLSXTB.js.map +1 -0
- package/dist/{chunk-D3332IMQ.js → chunk-P2PXD3AF.js} +6 -6
- package/dist/{chunk-D3332IMQ.js.map → chunk-P2PXD3AF.js.map} +1 -1
- package/dist/{chunk-CU32AWH5.js → chunk-Q5WGUPC5.js} +3 -3
- package/dist/{chunk-CU32AWH5.js.map → chunk-Q5WGUPC5.js.map} +1 -1
- package/dist/{chunk-ZGYPEVZW.js → chunk-RN3N7PHY.js} +5 -5
- package/dist/{chunk-ZGYPEVZW.js.map → chunk-RN3N7PHY.js.map} +1 -1
- package/dist/{chunk-5CDL6VZQ.js → chunk-S5TEP5WI.js} +7 -7
- package/dist/{chunk-5CDL6VZQ.js.map → chunk-S5TEP5WI.js.map} +1 -1
- package/dist/{chunk-REILIKVM.js → chunk-SU5LVG6T.js} +3 -3
- package/dist/{chunk-REILIKVM.js.map → chunk-SU5LVG6T.js.map} +1 -1
- package/dist/{chunk-23BTREZQ.js → chunk-TKHJXUG3.js} +4 -4
- package/dist/{chunk-23BTREZQ.js.map → chunk-TKHJXUG3.js.map} +1 -1
- package/dist/{chunk-V7SHQXDI.js → chunk-U4LC6PLI.js} +3 -3
- package/dist/{chunk-V7SHQXDI.js.map → chunk-U4LC6PLI.js.map} +1 -1
- package/dist/{chunk-YSJKLJD4.js → chunk-VRBEMXEM.js} +3 -3
- package/dist/{chunk-YSJKLJD4.js.map → chunk-VRBEMXEM.js.map} +1 -1
- package/dist/{chunk-2CFREMKM.js → chunk-XENB453B.js} +4 -4
- package/dist/{chunk-2CFREMKM.js.map → chunk-XENB453B.js.map} +1 -1
- package/dist/cli/index.js +50 -50
- package/dist/connectors/config.js +4 -4
- package/dist/connectors/index.js +9 -9
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/connectors/src/connector-manager.d.ts +9 -0
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/connector-types.d.ts +25 -0
- package/dist/connectors/src/connector-types.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -2
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -3
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/index.d.ts +1 -1
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +64 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +3 -3
- package/dist/{ensure-sources-MFQDQPYL.js → ensure-sources-E5C3NAZ5.js} +9 -9
- package/dist/{ensure-sources-MFQDQPYL.js.map → ensure-sources-E5C3NAZ5.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +9 -9
- package/dist/factory-assets/connectors/deploy.js +9 -9
- package/dist/factory-assets/connectors/devserver.js +9 -9
- package/dist/factory-assets/connectors/flow/adapter.js +9 -9
- package/dist/factory-assets/connectors/flow/engine.js +4 -4
- package/dist/factory-assets/connectors/flow/run-flow.js +10 -10
- package/dist/factory-assets/connectors/flow.js +9 -9
- package/dist/factory-assets/connectors/git.js +9 -9
- package/dist/factory-assets/connectors/gmail.js +9 -9
- package/dist/factory-assets/connectors/googledrive.js +9 -9
- package/dist/factory-assets/connectors/local.js +9 -9
- package/dist/factory-assets/connectors/mattermost.js +9 -9
- package/dist/factory-assets/connectors/memory.js +9 -9
- package/dist/factory-assets/connectors/minio.js +9 -9
- package/dist/factory-assets/connectors/postgres.js +9 -9
- package/dist/factory-assets/connectors/s3.js +9 -9
- package/dist/factory-assets/connectors/sharepoint.js +9 -9
- package/dist/factory-assets/connectors/sqlite.js +9 -9
- package/dist/factory-assets/connectors/static-server.js +9 -9
- package/dist/factory-assets/connectors/tunnel.js +9 -9
- package/dist/factory-assets/connectors/webdav.js +9 -9
- package/dist/factory-assets/connectors/xstate-store.js +9 -9
- package/dist/factory-assets/connectors/xstate.js +9 -9
- package/dist/{flows-X4KJC4RH.js → flows-DAA2HPCK.js} +6 -6
- package/dist/{flows-X4KJC4RH.js.map → flows-DAA2HPCK.js.map} +1 -1
- package/dist/{helpers-VQLLQ6HB.js → helpers-B37XGJHI.js} +9 -9
- package/dist/{helpers-VQLLQ6HB.js.map → helpers-B37XGJHI.js.map} +1 -1
- package/dist/library/index.js +4 -4
- package/dist/library/install.js +3 -3
- package/dist/{library-publish-73SFVNCE.js → library-publish-ANMJDDZH.js} +13 -13
- package/dist/{library-publish-73SFVNCE.js.map → library-publish-ANMJDDZH.js.map} +1 -1
- package/dist/{open-library-QGTUQMUG.js → open-library-O5HS654Y.js} +11 -11
- package/dist/{open-library-QGTUQMUG.js.map → open-library-O5HS654Y.js.map} +1 -1
- package/dist/{paths-FRD62K2N.js → paths-LH7LD4CC.js} +6 -6
- package/dist/{paths-FRD62K2N.js.map → paths-LH7LD4CC.js.map} +1 -1
- package/dist/{plugin-store-54SEASTK.js → plugin-store-A6VLQHCT.js} +5 -5
- package/dist/{plugin-store-54SEASTK.js.map → plugin-store-A6VLQHCT.js.map} +1 -1
- package/dist/{project-LWS5PYIF.js → project-DLAPSJ36.js} +10 -10
- package/dist/{project-LWS5PYIF.js.map → project-DLAPSJ36.js.map} +1 -1
- package/dist/resolver/index.js +3 -3
- package/dist/runner/index.js +15 -15
- package/dist/runner/src/runner-capabilities.d.ts +33 -2
- package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
- package/dist/runner/src/serial-lock.d.ts +17 -0
- package/dist/runner/src/serial-lock.d.ts.map +1 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +5 -0
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
- package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
- package/dist/runner/src/skill-staging.d.ts +76 -0
- package/dist/runner/src/skill-staging.d.ts.map +1 -0
- package/dist/sdk/asset-manager.js +6 -6
- package/dist/sdk/bridge.js +6 -6
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/flow.js +4 -4
- package/dist/sdk/index.js +15 -15
- package/dist/sdk/resolver.js +3 -3
- package/dist/sdk/runner.js +15 -15
- package/dist/{setup-EOJWDJK2.js → setup-TMPJSDCX.js} +13 -13
- package/dist/{setup-EOJWDJK2.js.map → setup-TMPJSDCX.js.map} +1 -1
- package/dist/{skills-C6NOMIBV.js → skills-ZO66BL2Y.js} +5 -5
- package/dist/{skills-C6NOMIBV.js.map → skills-ZO66BL2Y.js.map} +1 -1
- package/dist/{source-Q5IIYTRA.js → source-5WMBWNO7.js} +12 -12
- package/dist/{source-Q5IIYTRA.js.map → source-5WMBWNO7.js.map} +1 -1
- package/dist/{source-manifest-publish-Z3WC4HA2.js → source-manifest-publish-WBVQV3JC.js} +14 -14
- package/dist/{source-manifest-publish-Z3WC4HA2.js.map → source-manifest-publish-WBVQV3JC.js.map} +1 -1
- package/dist/tui/index.js +15 -15
- package/dist/validator-FA2PFW6N.js +5 -0
- package/dist/{validator-P5ESKTW5.js.map → validator-FA2PFW6N.js.map} +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +6 -6
- package/dist/workspace-plugin/adapters/omp.js +10 -10
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/tools/validator.d.ts +1 -0
- package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-JXCUUZA3.js.map +0 -1
- package/dist/chunk-K27T47OO.js.map +0 -1
- package/dist/chunk-KW7YIRYL.js.map +0 -1
- package/dist/chunk-SAXTWLXZ.js.map +0 -1
- package/dist/chunk-TRGMQUAZ.js.map +0 -1
- package/dist/validator-P5ESKTW5.js +0 -5
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { WorkspacePlugin } from './chunk-
|
|
2
|
-
import { buildWorkspaceToolDefs } from './chunk-
|
|
1
|
+
import { WorkspacePlugin } from './chunk-7UM46L33.js';
|
|
2
|
+
import { buildWorkspaceToolDefs } from './chunk-HBBVWZ4T.js';
|
|
3
3
|
import { findAiAssetsRoot } from './chunk-7IRJ4K4F.js';
|
|
4
4
|
import { WebSocketServerTransport } from './chunk-73ZXUUL6.js';
|
|
5
5
|
import { assembleSystemPrompt, buildCapabilitiesPromptSection } from './chunk-W3UDISS2.js';
|
|
6
6
|
import { prepareNativePolicy, codexInstanceEnvironment, parseCodexCredential, parseCodexRefreshInput, parseCodexRefreshResult } from './chunk-45LLHKQ2.js';
|
|
7
|
-
import { resolveFlowPath } from './chunk-
|
|
7
|
+
import { resolveFlowPath } from './chunk-P2PXD3AF.js';
|
|
8
8
|
import { findAiAssetsRoot as findAiAssetsRoot$1, deployCatalogEntry, undeployCatalogEntry } from './chunk-7BUZQVRR.js';
|
|
9
|
-
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager,
|
|
10
|
-
import { loadConnectorDeclarations, SecretProviderChain, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, isKnownSecretRef, deriveSingleMaterializedConnectorDeclaration } from './chunk-
|
|
11
|
-
import { EventNormalizer } from './chunk-
|
|
9
|
+
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, buildSdkConnectorTools, buildLazySdkFlowTools, describeFlowOperations, buildConnectorToolDefs, buildFlowToolDefs, driveOrchestratorTurn, SessionNodeExecutor, SessionSubpromptRunner, ClassifierSubpromptRunner, SessionInlineSubFlowRunner, buildSdkFlowTools } from './chunk-NYRLSXTB.js';
|
|
10
|
+
import { loadConnectorDeclarations, SecretProviderChain, ConnectorStartupError, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, isKnownSecretRef, deriveSingleMaterializedConnectorDeclaration } from './chunk-DYT3AQBM.js';
|
|
11
|
+
import { EventNormalizer } from './chunk-U4LC6PLI.js';
|
|
12
12
|
import { probeResumeTranscript } from './chunk-OUJVFZWJ.js';
|
|
13
13
|
import { CodexNativeStateUnavailable } from './chunk-LOO5CB5M.js';
|
|
14
14
|
import { dispatchCapability } from './chunk-3GKBSHUG.js';
|
|
15
15
|
import { classifyClaudeSdkError } from './chunk-GAH4YRCI.js';
|
|
16
|
-
import { createDriver, catalogLayer, providerCredentialEnvName, toMergedRegistry, registryCredentialEnv } from './chunk-
|
|
17
|
-
import { loadFlow } from './chunk-
|
|
16
|
+
import { createDriver, catalogLayer, providerCredentialEnvName, toMergedRegistry, registryCredentialEnv } from './chunk-5GYFYGVW.js';
|
|
17
|
+
import { loadFlow } from './chunk-NIHNZC6E.js';
|
|
18
18
|
import { parseFlowDefinition } from './chunk-53ORCYPJ.js';
|
|
19
19
|
import { renderStimulusPrompt } from './chunk-2D5BYAL6.js';
|
|
20
20
|
import { withActivityLabelJsonSchema, TOOL_ACTIVITY_PROMPT_SECTION, SESSION_ROOT_CONNECTOR_ID, PROTOCOL_VERSION } from './chunk-QAH24E5U.js';
|
|
21
|
-
import { resolveSettings, loadProviderRegistry } from './chunk-
|
|
22
|
-
import { resolveRuntimeAssets } from './chunk-
|
|
21
|
+
import { resolveSettings, loadProviderRegistry } from './chunk-BCXZ74DM.js';
|
|
22
|
+
import { resolveRuntimeAssets } from './chunk-SU5LVG6T.js';
|
|
23
23
|
import { resolveDriverPaths } from './chunk-K5GBV4SA.js';
|
|
24
|
-
import { resolveSkWorkspaceConfig, resolveAgentDir,
|
|
24
|
+
import { resolveSkWorkspaceConfig, resolveAgentDir, loadMcpServerDeclarations, COMPACTION_DEFAULTS, validateAssetRecipeAttr, deriveSingleMaterializedMcpDeclaration, stageMaterializedSkills, unstageSkill } from './chunk-HKOC273F.js';
|
|
25
25
|
import { withFsDeadline, FsDeadlineError, fsDeadlineMs, tryWithFsDeadline } from './chunk-MKZOK4JU.js';
|
|
26
26
|
import { parseAssetRef } from './chunk-GEEW6SY2.js';
|
|
27
27
|
import { resolveLogStoreConfig, createLogStoreFromConfig, OnLogBridgeSink, WsLogSink } from './chunk-FTG7CRFD.js';
|
|
@@ -4258,6 +4258,104 @@ var DriverSwapGate = class {
|
|
|
4258
4258
|
}
|
|
4259
4259
|
};
|
|
4260
4260
|
|
|
4261
|
+
// runner/src/serial-lock.ts
|
|
4262
|
+
function createSerialLock() {
|
|
4263
|
+
let tail = Promise.resolve();
|
|
4264
|
+
return (fn) => {
|
|
4265
|
+
const run = tail.then(fn, fn);
|
|
4266
|
+
tail = run.catch(() => void 0);
|
|
4267
|
+
return run;
|
|
4268
|
+
};
|
|
4269
|
+
}
|
|
4270
|
+
function createCoalescedTask(lock, fn) {
|
|
4271
|
+
let waiting = null;
|
|
4272
|
+
return (...args) => {
|
|
4273
|
+
if (waiting) return waiting;
|
|
4274
|
+
const run = lock(() => {
|
|
4275
|
+
waiting = null;
|
|
4276
|
+
return fn(...args);
|
|
4277
|
+
});
|
|
4278
|
+
waiting = run;
|
|
4279
|
+
return run;
|
|
4280
|
+
};
|
|
4281
|
+
}
|
|
4282
|
+
async function recordStagedSkills(staged, projectDir, skillsDir, names, timeoutMs) {
|
|
4283
|
+
for (const name of names) {
|
|
4284
|
+
const path5 = join(projectDir, skillsDir, name);
|
|
4285
|
+
const st = await tryWithFsDeadline(`lstat ${path5}`, () => lstat(path5), null, timeoutMs);
|
|
4286
|
+
staged.set(
|
|
4287
|
+
name,
|
|
4288
|
+
st?.isDirectory() && st.birthtimeMs > 0 ? { path: path5, dev: st.dev, ino: st.ino, birthtimeMs: st.birthtimeMs } : null
|
|
4289
|
+
);
|
|
4290
|
+
}
|
|
4291
|
+
}
|
|
4292
|
+
async function isStillOurs(record2, path5, timeoutMs) {
|
|
4293
|
+
if (!record2 || record2.path !== path5) return false;
|
|
4294
|
+
const st = await tryWithFsDeadline(`lstat ${path5}`, () => lstat(path5), null, timeoutMs);
|
|
4295
|
+
return st?.isDirectory() === true && st.dev === record2.dev && st.ino === record2.ino && st.birthtimeMs === record2.birthtimeMs;
|
|
4296
|
+
}
|
|
4297
|
+
async function attachStagedSkill(deps, name) {
|
|
4298
|
+
try {
|
|
4299
|
+
const skillsDir = deps.skillsDir();
|
|
4300
|
+
const staged = await deps.withSkillFsLock(async () => {
|
|
4301
|
+
const names = await stageMaterializedSkills(deps.projectDir, skillsDir, { declared: [name] });
|
|
4302
|
+
await recordStagedSkills(deps.stagedSkillDirs, deps.projectDir, skillsDir, names);
|
|
4303
|
+
return names;
|
|
4304
|
+
});
|
|
4305
|
+
if (staged.length === 0) {
|
|
4306
|
+
return {
|
|
4307
|
+
ok: false,
|
|
4308
|
+
code: "skill_not_materialized",
|
|
4309
|
+
message: `no materialized skill matching "${name}" under .skaile/assets/skill`
|
|
4310
|
+
};
|
|
4311
|
+
}
|
|
4312
|
+
deps.log(`[serve] runner.attach_instance staged skill(s): ${staged.join(", ")}`);
|
|
4313
|
+
const live = deps.driverStarted();
|
|
4314
|
+
deps.scheduleSkillRestart(staged.map((s) => ({ name: s, action: "add" })));
|
|
4315
|
+
return { ok: true, id: name, live, toolCount: 0 };
|
|
4316
|
+
} catch (err) {
|
|
4317
|
+
return {
|
|
4318
|
+
ok: false,
|
|
4319
|
+
code: "skill_attach_failed",
|
|
4320
|
+
message: err instanceof Error ? err.message : String(err)
|
|
4321
|
+
};
|
|
4322
|
+
}
|
|
4323
|
+
}
|
|
4324
|
+
async function detachStagedSkill(deps, name) {
|
|
4325
|
+
try {
|
|
4326
|
+
const skillsDir = deps.skillsDir();
|
|
4327
|
+
const dirName = name.split("/").pop() ?? name;
|
|
4328
|
+
const result = await deps.withSkillFsLock(async () => {
|
|
4329
|
+
const knownStaged = await isStillOurs(
|
|
4330
|
+
deps.stagedSkillDirs.get(dirName),
|
|
4331
|
+
join(deps.projectDir, skillsDir, dirName)
|
|
4332
|
+
);
|
|
4333
|
+
return unstageSkill(deps.projectDir, skillsDir, name, { knownStaged });
|
|
4334
|
+
});
|
|
4335
|
+
const live = deps.driverStarted();
|
|
4336
|
+
if ("reason" in result) {
|
|
4337
|
+
deps.log(
|
|
4338
|
+
`[serve] runner.detach_instance: "${result.name}" exists but was not staged by the runner \u2014 left in place`
|
|
4339
|
+
);
|
|
4340
|
+
return { ok: true, id: result.name, removed: false, live, reason: result.reason };
|
|
4341
|
+
}
|
|
4342
|
+
const wasTracked = deps.stagedSkillDirs.delete(result.name);
|
|
4343
|
+
if (!result.removedStaged && !wasTracked) {
|
|
4344
|
+
deps.log(`[serve] runner.detach_instance: skill "${result.name}" was not staged`);
|
|
4345
|
+
return { ok: true, id: result.name, removed: result.removedAsset, live };
|
|
4346
|
+
}
|
|
4347
|
+
deps.log(`[serve] runner.detach_instance unstaged skill: ${result.name}`);
|
|
4348
|
+
deps.scheduleSkillRestart([{ name: result.name, action: "remove" }]);
|
|
4349
|
+
return { ok: true, id: result.name, removed: true, live };
|
|
4350
|
+
} catch (err) {
|
|
4351
|
+
return {
|
|
4352
|
+
ok: false,
|
|
4353
|
+
code: "skill_detach_failed",
|
|
4354
|
+
message: err instanceof Error ? err.message : String(err)
|
|
4355
|
+
};
|
|
4356
|
+
}
|
|
4357
|
+
}
|
|
4358
|
+
|
|
4261
4359
|
// runner/src/flow-turn-dispatch.ts
|
|
4262
4360
|
var FLOW_TURN_COMPACTION_TIMEOUT = "Flow turn abandoned: a compaction held the driver";
|
|
4263
4361
|
async function dispatchFlowTurn(deps, prompt, timeoutMs) {
|
|
@@ -5189,6 +5287,13 @@ function asDeclaration(declaration) {
|
|
|
5189
5287
|
}
|
|
5190
5288
|
return null;
|
|
5191
5289
|
}
|
|
5290
|
+
function isLive(rm3, id) {
|
|
5291
|
+
try {
|
|
5292
|
+
return typeof rm3.has === "function" && rm3.has(id);
|
|
5293
|
+
} catch {
|
|
5294
|
+
return false;
|
|
5295
|
+
}
|
|
5296
|
+
}
|
|
5192
5297
|
function toPreMinted(token) {
|
|
5193
5298
|
return { ok: true, token: token.token, expiresAt: token.expiresAt ?? null };
|
|
5194
5299
|
}
|
|
@@ -5209,12 +5314,14 @@ function buildSessionResourceHandlers(deps) {
|
|
|
5209
5314
|
`[session-resource] preMintedToken provided but secret store not ready \u2014 ${kind}:${decl.id}`
|
|
5210
5315
|
);
|
|
5211
5316
|
}
|
|
5317
|
+
const wasLive = isLive(rm3, decl.id);
|
|
5212
5318
|
try {
|
|
5213
5319
|
await rm3.connect(decl);
|
|
5214
5320
|
} catch (err) {
|
|
5215
5321
|
if (input.preMintedToken) {
|
|
5216
5322
|
getPreMintedSecrets()?.unset(kind, decl.id);
|
|
5217
5323
|
}
|
|
5324
|
+
if (wasLive && !isLive(rm3, decl.id)) emitResourcesAvailable();
|
|
5218
5325
|
const message = err instanceof Error ? err.message : String(err);
|
|
5219
5326
|
log(`[session-resource] runner.add_${kind} failed for ${decl.id}: ${message}`);
|
|
5220
5327
|
return { ok: false, code: "connect_failed", message };
|
|
@@ -5257,12 +5364,14 @@ function buildSessionResourceHandlers(deps) {
|
|
|
5257
5364
|
`[session-resource] preMintedToken provided but secret store not ready \u2014 connector:${decl.id}`
|
|
5258
5365
|
);
|
|
5259
5366
|
}
|
|
5367
|
+
const wasLive = isLive(rm3, decl.id);
|
|
5260
5368
|
try {
|
|
5261
5369
|
await rm3.connect(decl);
|
|
5262
5370
|
} catch (err) {
|
|
5263
5371
|
if (preMintedToken) {
|
|
5264
5372
|
getPreMintedSecrets()?.unset("connector", decl.id);
|
|
5265
5373
|
}
|
|
5374
|
+
if (wasLive && !isLive(rm3, decl.id)) emitResourcesAvailable();
|
|
5266
5375
|
const message = err instanceof Error ? err.message : String(err);
|
|
5267
5376
|
log(`[session-resource] runner.attach_instance connector failed for ${decl.id}: ${message}`);
|
|
5268
5377
|
return { ok: false, code: "connector_connect_failed", message };
|
|
@@ -5446,6 +5555,10 @@ var attachInstanceInputSchema = z7.strictObject({
|
|
|
5446
5555
|
name: z7.string(),
|
|
5447
5556
|
preMintedToken: preMintedTokenSchema
|
|
5448
5557
|
});
|
|
5558
|
+
var detachInstanceInputSchema = z7.strictObject({
|
|
5559
|
+
kind: z7.string(),
|
|
5560
|
+
name: z7.string()
|
|
5561
|
+
});
|
|
5449
5562
|
var removeResourceInput = z7.strictObject({
|
|
5450
5563
|
id: z7.string()
|
|
5451
5564
|
});
|
|
@@ -5542,6 +5655,20 @@ function buildRunnerCapabilities(handlers) {
|
|
|
5542
5655
|
});
|
|
5543
5656
|
}
|
|
5544
5657
|
}),
|
|
5658
|
+
defineCapability({
|
|
5659
|
+
name: "runner.detach_instance",
|
|
5660
|
+
displayName: "Detach instance",
|
|
5661
|
+
description: "Unload an instance the platform unassigned from the live session. Skills only: removes the runner-staged copy and materialized asset, then restarts the driver without killing an in-flight turn. A same-named dir the runner did not stage is left in place (reason: not_staged).",
|
|
5662
|
+
side: "agent",
|
|
5663
|
+
origin: RUNNER_CAP_ORIGIN,
|
|
5664
|
+
audience: ["runtime"],
|
|
5665
|
+
kind: "effect",
|
|
5666
|
+
input: detachInstanceInputSchema,
|
|
5667
|
+
handler: async (input) => {
|
|
5668
|
+
if (!handlers.detachInstance) return notImplemented("runner.detach_instance");
|
|
5669
|
+
return handlers.detachInstance({ kind: input.kind, name: input.name });
|
|
5670
|
+
}
|
|
5671
|
+
}),
|
|
5545
5672
|
defineCapability({
|
|
5546
5673
|
name: "runner.remove_resource",
|
|
5547
5674
|
displayName: "Remove resource",
|
|
@@ -5646,6 +5773,7 @@ function wireSessionCapabilities(deps) {
|
|
|
5646
5773
|
getCompactionOrchestrator,
|
|
5647
5774
|
getProjectDir,
|
|
5648
5775
|
attachSkillInstance,
|
|
5776
|
+
detachSkillInstance,
|
|
5649
5777
|
registerLiveAttachedMcp,
|
|
5650
5778
|
scheduleDriverRestartForToolChanges,
|
|
5651
5779
|
log
|
|
@@ -5687,6 +5815,18 @@ function wireSessionCapabilities(deps) {
|
|
|
5687
5815
|
message: "attach_instance handler not configured"
|
|
5688
5816
|
};
|
|
5689
5817
|
},
|
|
5818
|
+
// Only skills have a live unload path; a connector or mount detaches
|
|
5819
|
+
// through remove_resource, and MCP servers have no detach yet.
|
|
5820
|
+
detachInstance: async (input) => {
|
|
5821
|
+
if (input.kind === "skill") {
|
|
5822
|
+
return detachSkillInstance(input.name);
|
|
5823
|
+
}
|
|
5824
|
+
return {
|
|
5825
|
+
ok: false,
|
|
5826
|
+
code: "unsupported_kind",
|
|
5827
|
+
message: `detach_instance does not support kind "${input.kind}"`
|
|
5828
|
+
};
|
|
5829
|
+
},
|
|
5690
5830
|
// setLogLevel left undefined (the cap self-falls-back to getLogStore);
|
|
5691
5831
|
// setState remains a stub (not resource hot-plug).
|
|
5692
5832
|
lifecycle: buildLifecycleHandler({
|
|
@@ -6912,14 +7052,21 @@ async function startAgentServer(opts) {
|
|
|
6912
7052
|
let managedInitFingerprint;
|
|
6913
7053
|
let managedInitComplete = false;
|
|
6914
7054
|
let appliedWireAgentConfigKey;
|
|
6915
|
-
const stagedSkillDirs = /* @__PURE__ */ new
|
|
7055
|
+
const stagedSkillDirs = /* @__PURE__ */ new Map();
|
|
7056
|
+
const withSkillFsLock = createSerialLock();
|
|
7057
|
+
const stageDeclaredSkills = createCoalescedTask(
|
|
7058
|
+
withSkillFsLock,
|
|
7059
|
+
async (skillsDir, declared) => {
|
|
7060
|
+
const names = await stageMaterializedSkills(opts.projectDir, skillsDir, { declared });
|
|
7061
|
+
await recordStagedSkills(stagedSkillDirs, opts.projectDir, skillsDir, names);
|
|
7062
|
+
return names;
|
|
7063
|
+
}
|
|
7064
|
+
);
|
|
6916
7065
|
await restageMaterializedSkills(false);
|
|
6917
7066
|
async function restageMaterializedSkills(allowRestart) {
|
|
6918
7067
|
if (managedHost) return;
|
|
6919
7068
|
try {
|
|
6920
|
-
const
|
|
6921
|
-
driver: opts.driver ?? wsConfig.agent_config?.default?.driver ?? wireAgentConfig?.driver ?? "claude-sdk"
|
|
6922
|
-
});
|
|
7069
|
+
const skillsDir = activeSkillsDir();
|
|
6923
7070
|
const declared = (wsConfig.dependencies ?? []).flatMap((dep) => {
|
|
6924
7071
|
try {
|
|
6925
7072
|
const ref = parseAssetRef(dep);
|
|
@@ -6929,9 +7076,9 @@ async function startAgentServer(opts) {
|
|
|
6929
7076
|
}
|
|
6930
7077
|
});
|
|
6931
7078
|
if (declared.length === 0) return;
|
|
6932
|
-
const
|
|
6933
|
-
const
|
|
6934
|
-
|
|
7079
|
+
const previouslyStaged = new Set(stagedSkillDirs.keys());
|
|
7080
|
+
const staged = await stageDeclaredSkills(skillsDir, declared);
|
|
7081
|
+
const newlyStaged = staged.filter((s) => !previouslyStaged.has(s));
|
|
6935
7082
|
if (newlyStaged.length === 0) return;
|
|
6936
7083
|
log(`[serve] staged ${newlyStaged.length} materialized skill(s): ${newlyStaged.join(", ")}`);
|
|
6937
7084
|
if (allowRestart && driverStarted) {
|
|
@@ -7648,6 +7795,7 @@ async function startAgentServer(opts) {
|
|
|
7648
7795
|
getCompactionOrchestrator: () => compactionOrchestrator,
|
|
7649
7796
|
getProjectDir: () => opts.projectDir,
|
|
7650
7797
|
attachSkillInstance,
|
|
7798
|
+
detachSkillInstance,
|
|
7651
7799
|
registerLiveAttachedMcp,
|
|
7652
7800
|
scheduleDriverRestartForToolChanges,
|
|
7653
7801
|
log
|
|
@@ -7855,34 +8003,25 @@ async function startAgentServer(opts) {
|
|
|
7855
8003
|
log(`[serve] ${removed ? "removed" : "not found"} skill: ${res.name}`);
|
|
7856
8004
|
}
|
|
7857
8005
|
}
|
|
7858
|
-
|
|
7859
|
-
|
|
7860
|
-
|
|
7861
|
-
|
|
7862
|
-
|
|
7863
|
-
|
|
7864
|
-
|
|
7865
|
-
|
|
7866
|
-
|
|
7867
|
-
|
|
7868
|
-
|
|
7869
|
-
|
|
7870
|
-
|
|
7871
|
-
|
|
7872
|
-
|
|
7873
|
-
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
|
|
7877
|
-
);
|
|
7878
|
-
return { ok: true, id: name, live, toolCount: 0 };
|
|
7879
|
-
} catch (err) {
|
|
7880
|
-
return {
|
|
7881
|
-
ok: false,
|
|
7882
|
-
code: "skill_attach_failed",
|
|
7883
|
-
message: err instanceof Error ? err.message : String(err)
|
|
7884
|
-
};
|
|
7885
|
-
}
|
|
8006
|
+
function activeSkillsDir() {
|
|
8007
|
+
return resolveDriverPaths({
|
|
8008
|
+
driver: opts.driver ?? wsConfig.agent_config?.default?.driver ?? wireAgentConfig?.driver ?? "claude-sdk"
|
|
8009
|
+
}).skillsDir;
|
|
8010
|
+
}
|
|
8011
|
+
const skillStagingDeps = {
|
|
8012
|
+
projectDir: opts.projectDir,
|
|
8013
|
+
skillsDir: () => activeSkillsDir(),
|
|
8014
|
+
stagedSkillDirs,
|
|
8015
|
+
withSkillFsLock,
|
|
8016
|
+
scheduleSkillRestart: (actions) => scheduleDriverRestartForSkillChanges(actions),
|
|
8017
|
+
driverStarted: () => driverStarted,
|
|
8018
|
+
log
|
|
8019
|
+
};
|
|
8020
|
+
function attachSkillInstance(name) {
|
|
8021
|
+
return attachStagedSkill(skillStagingDeps, name);
|
|
8022
|
+
}
|
|
8023
|
+
function detachSkillInstance(name) {
|
|
8024
|
+
return detachStagedSkill(skillStagingDeps, name);
|
|
7886
8025
|
}
|
|
7887
8026
|
async function restartDriverForToolChanges(reason) {
|
|
7888
8027
|
if (!driverStarted) {
|
|
@@ -8825,5 +8964,5 @@ function touchSession(state) {
|
|
|
8825
8964
|
}
|
|
8826
8965
|
|
|
8827
8966
|
export { CLAUDE_CODE_CREDENTIALS_KEY, COMPILE_MANIFEST_FILENAME, CapabilityRegistry, DEFAULT_CAPABILITY_CALL_TIMEOUT_MS, DEFAULT_COALESCE_MS, DEFAULT_FLOW_MUTATE_CONNECTOR_WAIT_MS, MOUNT_LIST_MAX_DEPTH, MOUNT_LIST_MAX_ENTRIES, MOUNT_READ_DEADLINE_FACTOR, MOUNT_STAT_BUDGET_MS, MOUNT_STAT_MAX_ENTRIES, MOUNT_TREE_OP_DEADLINE_FACTOR, MarkdownStreamer, PreInitRingSink, ResourceOperationError, SESSION_ROOT_WRITABLE_DIRS, SESSION_ROOT_WRITABLE_FILES, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, buildStoreSnapshotReplay, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, computeDirectoryTotals, connectorRefreshKind, createAgentSession, createFlowConnectorReadiness, createManagedCodexSubpromptDriver, createSessionStimulusBus, defineCapability, deleteSession, dispatchResourceRequest, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureClaudeSettingsDisablesConnectors, ensureGitConfigInclude, executeConnectorMutate, extractClaudeAiOauthExpiresAt, flowStartNeedsDriverRestart, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, handleSessionRootResourceRequest, hasNonTerminalFlow, hostOpResumeStimulus, installPreInitRingSink, isSessionRootPathAllowed, isTerminalFlowStatus, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadManagedCodexHostConfig, loadSession, loadSessionById, mcpAuthSecretKey, newSession, nulTailPaddingLength, pickFlowToolTarget, pickRepointedManager, planFlowMutate, prepareCodexTools, reconcilePendingDecisions, registerActiveFlow, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveFlowMutateConnectorWaitMs, resolveMixin, runAgentChat, saveSession, setCurrentSession, setUpFlowConnector, startAgentServer, stimulusFromMetas, supportsLiveToolUpdates, touchSession, validateInputResponse, writeClaudeCodeCredentialsFile };
|
|
8828
|
-
//# sourceMappingURL=chunk-
|
|
8829
|
-
//# sourceMappingURL=chunk-
|
|
8967
|
+
//# sourceMappingURL=chunk-HVTU3CVF.js.map
|
|
8968
|
+
//# sourceMappingURL=chunk-HVTU3CVF.js.map
|