@skaile/workspaces 1.9.0 → 1.10.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 +81 -0
- package/dist/{asset-feeds-SS336LXB.js → asset-feeds-FMV3SJVQ.js} +4 -4
- package/dist/{asset-feeds-SS336LXB.js.map → asset-feeds-FMV3SJVQ.js.map} +1 -1
- package/dist/asset-manager/index.js +1 -1
- package/dist/bridge/drivers/claude-sdk.js +1 -1
- package/dist/bridge/drivers/codex.js +1 -1
- package/dist/bridge/drivers/continue.js +2 -2
- package/dist/bridge/drivers/echo.js +201 -1
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +3 -3
- package/dist/bridge/drivers/goose.js +2 -2
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.js +2 -2
- package/dist/bridge/drivers/qwen.js +3 -3
- package/dist/bridge/index.js +2 -2
- package/dist/bridge/src/drivers/echo.d.ts +16 -0
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/drivers/flow-script.d.ts +129 -0
- package/dist/bridge/src/drivers/flow-script.d.ts.map +1 -0
- package/dist/bridge/src/types.d.ts +32 -1
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-4DFBHEXQ.js → chunk-2257NSNY.js} +96 -17
- package/dist/chunk-2257NSNY.js.map +1 -0
- package/dist/{chunk-MWZGGCMF.js → chunk-2ZP6KIIQ.js} +2 -2
- package/dist/{chunk-MWZGGCMF.js.map → chunk-2ZP6KIIQ.js.map} +1 -1
- package/dist/{chunk-NKTFEV7Q.js → chunk-6XQ5QG63.js} +4 -4
- package/dist/{chunk-NKTFEV7Q.js.map → chunk-6XQ5QG63.js.map} +1 -1
- package/dist/{chunk-TNSCHS4I.js → chunk-APHTT5GE.js} +2 -2
- package/dist/{chunk-TNSCHS4I.js.map → chunk-APHTT5GE.js.map} +1 -1
- package/dist/{chunk-UNJGSISX.js → chunk-DEBMR6MK.js} +3 -3
- package/dist/{chunk-UNJGSISX.js.map → chunk-DEBMR6MK.js.map} +1 -1
- package/dist/{chunk-UQ5FK2AB.js → chunk-FRD4NU3W.js} +3 -3
- package/dist/{chunk-UQ5FK2AB.js.map → chunk-FRD4NU3W.js.map} +1 -1
- package/dist/{chunk-GKPUN2YQ.js → chunk-GEZMBQ3R.js} +3 -3
- package/dist/{chunk-GKPUN2YQ.js.map → chunk-GEZMBQ3R.js.map} +1 -1
- package/dist/{chunk-TJNEKDWS.js → chunk-IFCHOBEF.js} +6 -6
- package/dist/{chunk-TJNEKDWS.js.map → chunk-IFCHOBEF.js.map} +1 -1
- package/dist/{chunk-HKX5VSWQ.js → chunk-LVQO4X4U.js} +3 -3
- package/dist/{chunk-HKX5VSWQ.js.map → chunk-LVQO4X4U.js.map} +1 -1
- package/dist/{chunk-QY47VHNI.js → chunk-PU3FGN4T.js} +2 -2
- package/dist/{chunk-QY47VHNI.js.map → chunk-PU3FGN4T.js.map} +1 -1
- package/dist/{chunk-OMBYBUOF.js → chunk-SMWXVW6Z.js} +3 -3
- package/dist/{chunk-OMBYBUOF.js.map → chunk-SMWXVW6Z.js.map} +1 -1
- package/dist/{chunk-R5UMZEBH.js → chunk-TR6E5JOF.js} +6 -6
- package/dist/{chunk-R5UMZEBH.js.map → chunk-TR6E5JOF.js.map} +1 -1
- package/dist/{chunk-DTZ7JUZY.js → chunk-YNEJXDCZ.js} +250 -195
- package/dist/chunk-YNEJXDCZ.js.map +1 -0
- package/dist/{chunk-5DC744E3.js → chunk-ZDRAMXBS.js} +3 -3
- package/dist/{chunk-5DC744E3.js.map → chunk-ZDRAMXBS.js.map} +1 -1
- package/dist/cli/index.js +27 -27
- package/dist/connectors/index.js +1 -1
- package/dist/connectors/src/connector-prompt.d.ts +23 -0
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/credential-helper-script.d.ts +8 -5
- package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +1 -1
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts +4 -2
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/{ensure-sources-ELLWRQAT.js → ensure-sources-OJ5GIRZF.js} +4 -4
- package/dist/{ensure-sources-ELLWRQAT.js.map → ensure-sources-OJ5GIRZF.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +1 -1
- package/dist/factory-assets/connectors/deploy.js +1 -1
- package/dist/factory-assets/connectors/devserver.js +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +2 -2
- package/dist/factory-assets/connectors/flow.js +1 -1
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +1 -1
- package/dist/factory-assets/connectors/gmail.js +1 -1
- package/dist/factory-assets/connectors/googledrive.js +1 -1
- package/dist/factory-assets/connectors/local.js +1 -1
- package/dist/factory-assets/connectors/mattermost.js +1 -1
- package/dist/factory-assets/connectors/memory.js +1 -1
- package/dist/factory-assets/connectors/minio.js +1 -1
- package/dist/factory-assets/connectors/postgres.js +1 -1
- package/dist/factory-assets/connectors/s3.js +1 -1
- package/dist/factory-assets/connectors/sharepoint.js +1 -1
- package/dist/factory-assets/connectors/sqlite.js +1 -1
- package/dist/factory-assets/connectors/static-server.js +1 -1
- package/dist/factory-assets/connectors/tunnel.js +1 -1
- package/dist/factory-assets/connectors/webdav.js +1 -1
- package/dist/factory-assets/connectors/xstate-store.js +1 -1
- package/dist/factory-assets/connectors/xstate.js +1 -1
- package/dist/{helpers-7Y4DTFR6.js → helpers-PS37RNFV.js} +4 -4
- package/dist/{helpers-7Y4DTFR6.js.map → helpers-PS37RNFV.js.map} +1 -1
- package/dist/{library-publish-7AH63NKA.js → library-publish-CRG7JLDZ.js} +6 -6
- package/dist/{library-publish-7AH63NKA.js.map → library-publish-CRG7JLDZ.js.map} +1 -1
- package/dist/{open-library-J2PRSM3J.js → open-library-5SRCSBSY.js} +5 -5
- package/dist/{open-library-J2PRSM3J.js.map → open-library-5SRCSBSY.js.map} +1 -1
- package/dist/{project-CSNHUQFK.js → project-SM2VMQOZ.js} +5 -5
- package/dist/{project-CSNHUQFK.js.map → project-SM2VMQOZ.js.map} +1 -1
- package/dist/run-group-engine/index.js.map +1 -1
- package/dist/run-group-engine/src/rollup.d.ts +5 -3
- package/dist/run-group-engine/src/rollup.d.ts.map +1 -1
- package/dist/runner/index.js +5 -5
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +49 -0
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -0
- package/dist/runner/src/session-resource-handlers.d.ts +1 -2
- package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +1 -1
- package/dist/sdk/bridge.js +2 -2
- package/dist/sdk/index.js +5 -5
- package/dist/sdk/runner.js +5 -5
- package/dist/{setup-ETGRXSZG.js → setup-H3WCLOEH.js} +4 -4
- package/dist/{setup-ETGRXSZG.js.map → setup-H3WCLOEH.js.map} +1 -1
- package/dist/{source-4YG45QO6.js → source-Y7ZTBG2U.js} +6 -6
- package/dist/{source-4YG45QO6.js.map → source-Y7ZTBG2U.js.map} +1 -1
- package/dist/{source-manifest-publish-RFU4YBC6.js → source-manifest-publish-SXJ6LF4S.js} +7 -7
- package/dist/{source-manifest-publish-RFU4YBC6.js.map → source-manifest-publish-SXJ6LF4S.js.map} +1 -1
- package/dist/tui/index.js +5 -5
- package/dist/types/src/run-group.d.ts +2 -2
- package/dist/types/src/run-group.d.ts.map +1 -1
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4DFBHEXQ.js.map +0 -1
- package/dist/chunk-DTZ7JUZY.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { WorkspacePlugin } from './chunk-
|
|
1
|
+
import { WorkspacePlugin } from './chunk-2ZP6KIIQ.js';
|
|
2
2
|
import { WebSocketServerTransport } from './chunk-WQ7DE5UC.js';
|
|
3
3
|
import { assembleSystemPrompt, buildCapabilitiesPromptSection } from './chunk-W3UDISS2.js';
|
|
4
|
-
import { EventNormalizer } from './chunk-
|
|
4
|
+
import { EventNormalizer } from './chunk-LVQO4X4U.js';
|
|
5
5
|
import { SUPPORTED_CLOUDS, CLOUD_SECRET_ENV_KEYS } from './chunk-ISQWMBKD.js';
|
|
6
6
|
import { classifyClaudeSdkError } from './chunk-GAH4YRCI.js';
|
|
7
|
-
import { createDriver } from './chunk-
|
|
7
|
+
import { createDriver } from './chunk-APHTT5GE.js';
|
|
8
8
|
import { deployCatalogEntry, undeployCatalogEntry } from './chunk-LV2HPH3C.js';
|
|
9
|
-
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools } from './chunk-
|
|
9
|
+
import { registerBuiltinConnectors, buildConnectorPromptSection, findMissingPackages, installNpmPackages, ConnectorManager, ConnectorStartupError, buildSdkConnectorTools, buildSdkFlowTools } from './chunk-2257NSNY.js';
|
|
10
10
|
import { loadConnectorDeclarations, SecretProviderChain, PreMintedSecretProvider, InMemorySecretProvider, resolvedConfigToDeclarations, deriveSingleMaterializedConnectorDeclaration } from './chunk-Y6FV73IH.js';
|
|
11
11
|
import { renderStimulusPrompt, buildOrchestratorPrompt } from './chunk-DEYYRFQU.js';
|
|
12
12
|
import { PROTOCOL_VERSION } from './chunk-XJOPAGZX.js';
|
|
@@ -3292,6 +3292,137 @@ function rewriteFileChangedPath(event, cwd, mounts) {
|
|
|
3292
3292
|
}
|
|
3293
3293
|
return event;
|
|
3294
3294
|
}
|
|
3295
|
+
function parseFleetHealthBody(body) {
|
|
3296
|
+
const trimmed = body.trim().toLowerCase();
|
|
3297
|
+
if (trimmed === "healthy") return "healthy";
|
|
3298
|
+
if (trimmed === "degraded") return "degraded";
|
|
3299
|
+
return "error";
|
|
3300
|
+
}
|
|
3301
|
+
async function dispatchFleetHealthFlag(dir, fileName, manager, log) {
|
|
3302
|
+
if (!manager) return;
|
|
3303
|
+
const connectorId = fileName;
|
|
3304
|
+
if (!connectorId || connectorId.startsWith(".")) return;
|
|
3305
|
+
let verdict;
|
|
3306
|
+
try {
|
|
3307
|
+
verdict = parseFleetHealthBody(await readFile(join(dir, connectorId), "utf8"));
|
|
3308
|
+
} catch {
|
|
3309
|
+
verdict = "error";
|
|
3310
|
+
}
|
|
3311
|
+
try {
|
|
3312
|
+
await manager.reportFleetHealth(connectorId, verdict);
|
|
3313
|
+
log.debug("fleet-health flag dispatched", { connectorId, verdict });
|
|
3314
|
+
} catch (err) {
|
|
3315
|
+
log.warn("fleet-health flag dispatch failed", {
|
|
3316
|
+
connectorId,
|
|
3317
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3318
|
+
});
|
|
3319
|
+
}
|
|
3320
|
+
}
|
|
3321
|
+
|
|
3322
|
+
// runner/src/refresh-flag-dispatcher.ts
|
|
3323
|
+
async function dispatchRefreshToExposedGitMounts(manager, log) {
|
|
3324
|
+
if (!manager) return;
|
|
3325
|
+
let gitConnectors;
|
|
3326
|
+
try {
|
|
3327
|
+
gitConnectors = manager.listGitConnectors();
|
|
3328
|
+
} catch (err) {
|
|
3329
|
+
log.warn("listGitConnectors failed during refresh-flag dispatch", {
|
|
3330
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3331
|
+
});
|
|
3332
|
+
return;
|
|
3333
|
+
}
|
|
3334
|
+
const eligible = gitConnectors.filter(
|
|
3335
|
+
(m) => m.exposeAccessToken === true && m.auth === "backend"
|
|
3336
|
+
);
|
|
3337
|
+
if (eligible.length === 0) {
|
|
3338
|
+
log.debug("refresh-flag fired but no eligible git connectors (Tier-2 backend) found");
|
|
3339
|
+
return;
|
|
3340
|
+
}
|
|
3341
|
+
log.info("refresh-flag fired -- dispatching backend mediation", {
|
|
3342
|
+
connectorIds: eligible.map((m) => m.id)
|
|
3343
|
+
});
|
|
3344
|
+
await Promise.all(
|
|
3345
|
+
eligible.map(async (m) => {
|
|
3346
|
+
try {
|
|
3347
|
+
const entry = manager.get(m.id);
|
|
3348
|
+
if (typeof entry.connector.refreshExposedCredential !== "function") {
|
|
3349
|
+
log.debug("connector lacks refreshExposedCredential -- skipping", {
|
|
3350
|
+
connectorId: m.id
|
|
3351
|
+
});
|
|
3352
|
+
return;
|
|
3353
|
+
}
|
|
3354
|
+
await entry.connector.refreshExposedCredential(m.id, entry.handle);
|
|
3355
|
+
} catch (err) {
|
|
3356
|
+
log.warn("refresh-flag dispatch failed for connector", {
|
|
3357
|
+
connectorId: m.id,
|
|
3358
|
+
error: err instanceof Error ? err.message : String(err)
|
|
3359
|
+
});
|
|
3360
|
+
}
|
|
3361
|
+
})
|
|
3362
|
+
);
|
|
3363
|
+
}
|
|
3364
|
+
var CLAUDE_CODE_CREDENTIALS_KEY = "CLAUDE_CODE_CREDENTIALS_JSON";
|
|
3365
|
+
async function writeClaudeCodeCredentialsFile(home, json) {
|
|
3366
|
+
const claudeDir = join(home, ".claude");
|
|
3367
|
+
await mkdir(claudeDir, { recursive: true, mode: 448 });
|
|
3368
|
+
const finalPath = join(claudeDir, ".credentials.json");
|
|
3369
|
+
const tmpPath = `${finalPath}.tmp.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}`;
|
|
3370
|
+
await writeFile(tmpPath, json, { mode: 384 });
|
|
3371
|
+
await rename(tmpPath, finalPath);
|
|
3372
|
+
return finalPath;
|
|
3373
|
+
}
|
|
3374
|
+
async function mergeAndRewriteCredentialsFile(home, accessToken, expiresAt) {
|
|
3375
|
+
const credPath = join(home, ".claude", ".credentials.json");
|
|
3376
|
+
let merged = {};
|
|
3377
|
+
if (existsSync(credPath)) {
|
|
3378
|
+
try {
|
|
3379
|
+
merged = JSON.parse(readFileSync(credPath, "utf-8"));
|
|
3380
|
+
} catch {
|
|
3381
|
+
merged = {};
|
|
3382
|
+
}
|
|
3383
|
+
}
|
|
3384
|
+
const oauthBlock = merged.claudeAiOauth ?? {};
|
|
3385
|
+
oauthBlock.accessToken = accessToken;
|
|
3386
|
+
if (expiresAt) oauthBlock.expiresAt = expiresAt;
|
|
3387
|
+
merged.claudeAiOauth = oauthBlock;
|
|
3388
|
+
merged.accessToken = accessToken;
|
|
3389
|
+
return writeClaudeCodeCredentialsFile(home, JSON.stringify(merged));
|
|
3390
|
+
}
|
|
3391
|
+
function extractClaudeAiOauthExpiresAt(json) {
|
|
3392
|
+
let parsed;
|
|
3393
|
+
try {
|
|
3394
|
+
parsed = JSON.parse(json);
|
|
3395
|
+
} catch {
|
|
3396
|
+
return null;
|
|
3397
|
+
}
|
|
3398
|
+
if (!parsed || typeof parsed !== "object") return null;
|
|
3399
|
+
const obj = parsed;
|
|
3400
|
+
const oauth = obj.claudeAiOauth;
|
|
3401
|
+
const raw = oauth?.expiresAt ?? obj.expiresAt;
|
|
3402
|
+
if (raw == null) return null;
|
|
3403
|
+
if (typeof raw === "string") {
|
|
3404
|
+
const t = Date.parse(raw);
|
|
3405
|
+
return Number.isFinite(t) ? new Date(t).toISOString() : null;
|
|
3406
|
+
}
|
|
3407
|
+
if (typeof raw === "number" && Number.isFinite(raw)) {
|
|
3408
|
+
return new Date(raw).toISOString();
|
|
3409
|
+
}
|
|
3410
|
+
return null;
|
|
3411
|
+
}
|
|
3412
|
+
function readCurrentClaudeAccessToken(home) {
|
|
3413
|
+
const credPath = join(home, ".claude", ".credentials.json");
|
|
3414
|
+
if (!existsSync(credPath)) return null;
|
|
3415
|
+
let parsed;
|
|
3416
|
+
try {
|
|
3417
|
+
parsed = JSON.parse(readFileSync(credPath, "utf-8"));
|
|
3418
|
+
} catch {
|
|
3419
|
+
return null;
|
|
3420
|
+
}
|
|
3421
|
+
if (!parsed || typeof parsed !== "object") return null;
|
|
3422
|
+
const obj = parsed;
|
|
3423
|
+
const raw = obj.claudeAiOauth?.accessToken ?? obj.accessToken;
|
|
3424
|
+
return typeof raw === "string" && raw.length > 0 ? raw : null;
|
|
3425
|
+
}
|
|
3295
3426
|
|
|
3296
3427
|
// runner/src/lifecycle-handler.ts
|
|
3297
3428
|
function buildLifecycleHandler(deps) {
|
|
@@ -3534,75 +3665,6 @@ function buildMcpRuntimeHandlers(deps) {
|
|
|
3534
3665
|
}
|
|
3535
3666
|
};
|
|
3536
3667
|
}
|
|
3537
|
-
function parseFleetHealthBody(body) {
|
|
3538
|
-
const trimmed = body.trim().toLowerCase();
|
|
3539
|
-
if (trimmed === "healthy") return "healthy";
|
|
3540
|
-
if (trimmed === "degraded") return "degraded";
|
|
3541
|
-
return "error";
|
|
3542
|
-
}
|
|
3543
|
-
async function dispatchFleetHealthFlag(dir, fileName, manager, log) {
|
|
3544
|
-
if (!manager) return;
|
|
3545
|
-
const connectorId = fileName;
|
|
3546
|
-
if (!connectorId || connectorId.startsWith(".")) return;
|
|
3547
|
-
let verdict;
|
|
3548
|
-
try {
|
|
3549
|
-
verdict = parseFleetHealthBody(await readFile(join(dir, connectorId), "utf8"));
|
|
3550
|
-
} catch {
|
|
3551
|
-
verdict = "error";
|
|
3552
|
-
}
|
|
3553
|
-
try {
|
|
3554
|
-
await manager.reportFleetHealth(connectorId, verdict);
|
|
3555
|
-
log.debug("fleet-health flag dispatched", { connectorId, verdict });
|
|
3556
|
-
} catch (err) {
|
|
3557
|
-
log.warn("fleet-health flag dispatch failed", {
|
|
3558
|
-
connectorId,
|
|
3559
|
-
error: err instanceof Error ? err.message : String(err)
|
|
3560
|
-
});
|
|
3561
|
-
}
|
|
3562
|
-
}
|
|
3563
|
-
|
|
3564
|
-
// runner/src/refresh-flag-dispatcher.ts
|
|
3565
|
-
async function dispatchRefreshToExposedGitMounts(manager, log) {
|
|
3566
|
-
if (!manager) return;
|
|
3567
|
-
let gitConnectors;
|
|
3568
|
-
try {
|
|
3569
|
-
gitConnectors = manager.listGitConnectors();
|
|
3570
|
-
} catch (err) {
|
|
3571
|
-
log.warn("listGitConnectors failed during refresh-flag dispatch", {
|
|
3572
|
-
error: err instanceof Error ? err.message : String(err)
|
|
3573
|
-
});
|
|
3574
|
-
return;
|
|
3575
|
-
}
|
|
3576
|
-
const eligible = gitConnectors.filter(
|
|
3577
|
-
(m) => m.exposeAccessToken === true && m.auth === "backend"
|
|
3578
|
-
);
|
|
3579
|
-
if (eligible.length === 0) {
|
|
3580
|
-
log.debug("refresh-flag fired but no eligible git connectors (Tier-2 backend) found");
|
|
3581
|
-
return;
|
|
3582
|
-
}
|
|
3583
|
-
log.info("refresh-flag fired -- dispatching backend mediation", {
|
|
3584
|
-
connectorIds: eligible.map((m) => m.id)
|
|
3585
|
-
});
|
|
3586
|
-
await Promise.all(
|
|
3587
|
-
eligible.map(async (m) => {
|
|
3588
|
-
try {
|
|
3589
|
-
const entry = manager.get(m.id);
|
|
3590
|
-
if (typeof entry.connector.refreshExposedCredential !== "function") {
|
|
3591
|
-
log.debug("connector lacks refreshExposedCredential -- skipping", {
|
|
3592
|
-
connectorId: m.id
|
|
3593
|
-
});
|
|
3594
|
-
return;
|
|
3595
|
-
}
|
|
3596
|
-
await entry.connector.refreshExposedCredential(m.id, entry.handle);
|
|
3597
|
-
} catch (err) {
|
|
3598
|
-
log.warn("refresh-flag dispatch failed for connector", {
|
|
3599
|
-
connectorId: m.id,
|
|
3600
|
-
error: err instanceof Error ? err.message : String(err)
|
|
3601
|
-
});
|
|
3602
|
-
}
|
|
3603
|
-
})
|
|
3604
|
-
);
|
|
3605
|
-
}
|
|
3606
3668
|
var RUNNER_CAP_ORIGIN = { kind: "framework" };
|
|
3607
3669
|
function notImplemented(name) {
|
|
3608
3670
|
return {
|
|
@@ -3823,67 +3885,68 @@ function buildRunnerCapabilities(handlers) {
|
|
|
3823
3885
|
})
|
|
3824
3886
|
];
|
|
3825
3887
|
}
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
}
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3888
|
+
|
|
3889
|
+
// runner/src/session-capability-wiring.ts
|
|
3890
|
+
function wireSessionCapabilities(deps) {
|
|
3891
|
+
const {
|
|
3892
|
+
capabilityRegistry,
|
|
3893
|
+
remoteCapabilityInvoker,
|
|
3894
|
+
getResourceManager,
|
|
3895
|
+
getPreMintedSecrets,
|
|
3896
|
+
emitResourcesAvailable,
|
|
3897
|
+
driverPicksUpToolsLive,
|
|
3898
|
+
getOrCreateMcpManager,
|
|
3899
|
+
getCompactionOrchestrator,
|
|
3900
|
+
getProjectDir,
|
|
3901
|
+
attachSkillInstance,
|
|
3902
|
+
log
|
|
3903
|
+
} = deps;
|
|
3904
|
+
capabilityRegistry.setRemoteInvoker(remoteCapabilityInvoker);
|
|
3905
|
+
const { attachConnectorInstance, ...resourceCaps } = buildSessionResourceHandlers({
|
|
3906
|
+
getResourceManager,
|
|
3907
|
+
getPreMintedSecrets,
|
|
3908
|
+
emitResourcesAvailable,
|
|
3909
|
+
log,
|
|
3910
|
+
getProjectDir
|
|
3911
|
+
});
|
|
3912
|
+
const mcpHandlers = buildMcpRuntimeHandlers({
|
|
3913
|
+
getOrCreateMcpManager,
|
|
3914
|
+
getPreMintedSecrets: () => getPreMintedSecrets() ?? null,
|
|
3915
|
+
driverPicksUpToolsLive,
|
|
3916
|
+
emitResourcesAvailable,
|
|
3917
|
+
log,
|
|
3918
|
+
getProjectDir
|
|
3919
|
+
});
|
|
3920
|
+
const runnerCaps = buildRunnerCapabilities({
|
|
3921
|
+
...resourceCaps,
|
|
3922
|
+
...mcpHandlers,
|
|
3923
|
+
// attach_instance routes by kind: skills stage-then-fast-restart,
|
|
3924
|
+
// connectors materialize-then-connect; everything else stays on the
|
|
3925
|
+
// MCP attach path.
|
|
3926
|
+
attachInstance: async (input) => {
|
|
3927
|
+
if (input.kind === "skill") {
|
|
3928
|
+
return attachSkillInstance(input.name);
|
|
3929
|
+
}
|
|
3930
|
+
if (input.kind === "connector") {
|
|
3931
|
+
return attachConnectorInstance(input.name, input.preMintedToken);
|
|
3932
|
+
}
|
|
3933
|
+
return mcpHandlers.attachInstance ? mcpHandlers.attachInstance(input) : {
|
|
3934
|
+
ok: false,
|
|
3935
|
+
code: "not_implemented",
|
|
3936
|
+
message: "attach_instance handler not configured"
|
|
3937
|
+
};
|
|
3938
|
+
},
|
|
3939
|
+
// setLogLevel left undefined (the cap self-falls-back to getLogStore);
|
|
3940
|
+
// setState remains a stub (not resource hot-plug).
|
|
3941
|
+
lifecycle: buildLifecycleHandler({
|
|
3942
|
+
getCompactionOrchestrator,
|
|
3943
|
+
getResourceManager,
|
|
3944
|
+
log
|
|
3945
|
+
})
|
|
3946
|
+
});
|
|
3947
|
+
for (const cap of runnerCaps) {
|
|
3948
|
+
capabilityRegistry.register(cap, "agent");
|
|
3882
3949
|
}
|
|
3883
|
-
if (!parsed || typeof parsed !== "object") return null;
|
|
3884
|
-
const obj = parsed;
|
|
3885
|
-
const raw = obj.claudeAiOauth?.accessToken ?? obj.accessToken;
|
|
3886
|
-
return typeof raw === "string" && raw.length > 0 ? raw : null;
|
|
3887
3950
|
}
|
|
3888
3951
|
|
|
3889
3952
|
// runner/src/session-stimulus.ts
|
|
@@ -4536,6 +4599,15 @@ async function startAgentServer(opts) {
|
|
|
4536
4599
|
captureBakedMcpServers();
|
|
4537
4600
|
}
|
|
4538
4601
|
let resourceManager = secretsMode === "env" ? agentSession.resourceManager : null;
|
|
4602
|
+
const driverPicksUpToolsLive = () => agentSession?.driverType !== "claude-sdk";
|
|
4603
|
+
const emitResourcesAvailable = () => sendEvent(
|
|
4604
|
+
buildResourcesAvailablePayload(
|
|
4605
|
+
resourceManager,
|
|
4606
|
+
agentSession?.getExternalMcpManager(),
|
|
4607
|
+
driverPicksUpToolsLive(),
|
|
4608
|
+
bakedMcpServerIds
|
|
4609
|
+
)
|
|
4610
|
+
);
|
|
4539
4611
|
if (secretsMode === "env") {
|
|
4540
4612
|
if (!agentSession.provider) {
|
|
4541
4613
|
log(
|
|
@@ -4807,9 +4879,21 @@ async function startAgentServer(opts) {
|
|
|
4807
4879
|
state
|
|
4808
4880
|
});
|
|
4809
4881
|
});
|
|
4882
|
+
if ("seed" in seedOrExecution) {
|
|
4883
|
+
sendEvent({
|
|
4884
|
+
type: "state_changed",
|
|
4885
|
+
store: `flow:${runId}`,
|
|
4886
|
+
state: adapter.getExecution(handle)
|
|
4887
|
+
});
|
|
4888
|
+
}
|
|
4889
|
+
driver.config.flowTestDriver = {
|
|
4890
|
+
getState: () => adapter.getExecution(handle),
|
|
4891
|
+
execute: (op, args) => adapter.executeOp(handle, op, args)
|
|
4892
|
+
};
|
|
4810
4893
|
if (agentSession?.driverType === "claude-sdk") {
|
|
4811
4894
|
try {
|
|
4812
4895
|
const server = await buildSdkConnectorTools(resourceManager, { z: z });
|
|
4896
|
+
const flowServer = await buildSdkFlowTools(resourceManager, connectorId, { z: z });
|
|
4813
4897
|
if (server) {
|
|
4814
4898
|
if (driverStarted) {
|
|
4815
4899
|
const prevSessionId = driver.runtimeSessionId;
|
|
@@ -4818,8 +4902,10 @@ async function startAgentServer(opts) {
|
|
|
4818
4902
|
);
|
|
4819
4903
|
await recreateAgentSession({ resumeSessionId: prevSessionId });
|
|
4820
4904
|
}
|
|
4821
|
-
driver.config.mcpServers = { "skaile-connectors": server };
|
|
4822
|
-
log(
|
|
4905
|
+
driver.config.mcpServers = flowServer ? { "skaile-connectors": server, "skaile-flow": flowServer } : { "skaile-connectors": server };
|
|
4906
|
+
log(
|
|
4907
|
+
`[serve] rebuilt MCP connector tools for flow ${connectorId}` + (flowServer ? " (+ skaile-flow agent tools)" : "")
|
|
4908
|
+
);
|
|
4823
4909
|
} else {
|
|
4824
4910
|
log(`[serve] buildSdkConnectorTools returned null for flow ${connectorId}`);
|
|
4825
4911
|
}
|
|
@@ -5000,6 +5086,7 @@ async function startAgentServer(opts) {
|
|
|
5000
5086
|
cloudSecrets,
|
|
5001
5087
|
fallbackConnectorDeclarations
|
|
5002
5088
|
);
|
|
5089
|
+
let needsWireFallbackRecreate = false;
|
|
5003
5090
|
if (!agentSession) {
|
|
5004
5091
|
agentSession = await createAgentSession(sessionConfig);
|
|
5005
5092
|
emitSystemPromptComposed(agentSession, sendEvent);
|
|
@@ -5007,72 +5094,30 @@ async function startAgentServer(opts) {
|
|
|
5007
5094
|
driver = agentSession.driver;
|
|
5008
5095
|
rebuildCompactionOrchestrator();
|
|
5009
5096
|
registerSessionComposition(agentSession);
|
|
5010
|
-
const driverPicksUpToolsLive = () => agentSession?.driverType !== "claude-sdk";
|
|
5011
|
-
const emitResourcesAvailable = () => sendEvent(
|
|
5012
|
-
buildResourcesAvailablePayload(
|
|
5013
|
-
resourceManager,
|
|
5014
|
-
agentSession?.getExternalMcpManager(),
|
|
5015
|
-
driverPicksUpToolsLive(),
|
|
5016
|
-
bakedMcpServerIds
|
|
5017
|
-
)
|
|
5018
|
-
);
|
|
5019
5097
|
captureBakedMcpServers();
|
|
5020
5098
|
emitResourcesAvailable();
|
|
5021
5099
|
agentSession.startWatching();
|
|
5022
|
-
capabilityRegistry.setRemoteInvoker(remoteCapabilityInvoker);
|
|
5023
|
-
const { attachConnectorInstance, ...resourceCaps } = buildSessionResourceHandlers({
|
|
5024
|
-
getResourceManager: () => resourceManager,
|
|
5025
|
-
getPreMintedSecrets: () => preMintedSecrets,
|
|
5026
|
-
emitResourcesAvailable,
|
|
5027
|
-
log,
|
|
5028
|
-
getProjectDir: () => opts.projectDir
|
|
5029
|
-
});
|
|
5030
|
-
const mcpHandlers = buildMcpRuntimeHandlers({
|
|
5031
|
-
getOrCreateMcpManager: () => agentSession?.getOrCreateExternalMcpManager() ?? null,
|
|
5032
|
-
getPreMintedSecrets: () => preMintedSecrets ?? null,
|
|
5033
|
-
driverPicksUpToolsLive,
|
|
5034
|
-
emitResourcesAvailable,
|
|
5035
|
-
log,
|
|
5036
|
-
getProjectDir: () => opts.projectDir
|
|
5037
|
-
});
|
|
5038
|
-
const runnerCaps = buildRunnerCapabilities({
|
|
5039
|
-
...resourceCaps,
|
|
5040
|
-
...mcpHandlers,
|
|
5041
|
-
// attach_instance routes by kind: skills stage-then-fast-restart,
|
|
5042
|
-
// connectors materialize-then-connect; everything else stays on the
|
|
5043
|
-
// MCP attach path.
|
|
5044
|
-
attachInstance: async (input) => {
|
|
5045
|
-
if (input.kind === "skill") {
|
|
5046
|
-
return attachSkillInstance(input.name);
|
|
5047
|
-
}
|
|
5048
|
-
if (input.kind === "connector") {
|
|
5049
|
-
return attachConnectorInstance(input.name, input.preMintedToken);
|
|
5050
|
-
}
|
|
5051
|
-
return mcpHandlers.attachInstance ? mcpHandlers.attachInstance(input) : {
|
|
5052
|
-
ok: false,
|
|
5053
|
-
code: "not_implemented",
|
|
5054
|
-
message: "attach_instance handler not configured"
|
|
5055
|
-
};
|
|
5056
|
-
},
|
|
5057
|
-
// setLogLevel left undefined (the cap self-falls-back to getLogStore);
|
|
5058
|
-
// setState remains a stub (not resource hot-plug).
|
|
5059
|
-
lifecycle: buildLifecycleHandler({
|
|
5060
|
-
getCompactionOrchestrator: () => compactionOrchestrator,
|
|
5061
|
-
getResourceManager: () => resourceManager,
|
|
5062
|
-
log
|
|
5063
|
-
})
|
|
5064
|
-
});
|
|
5065
|
-
for (const cap of runnerCaps) {
|
|
5066
|
-
capabilityRegistry.register(cap, "agent");
|
|
5067
|
-
}
|
|
5068
5100
|
log("[serve] session built from session_init envelope");
|
|
5069
5101
|
} else if ((fallbackConnectorDeclarations?.length ?? 0) > 0 && !agentSession.resourceManager) {
|
|
5070
5102
|
log(
|
|
5071
5103
|
`[serve] session_init: recreating eagerly-built session to apply ${fallbackConnectorDeclarations.length} wire connector declaration(s) (no disk declarations)`
|
|
5072
5104
|
);
|
|
5073
|
-
|
|
5105
|
+
needsWireFallbackRecreate = true;
|
|
5074
5106
|
}
|
|
5075
|
-
|
|
5107
|
+
wireSessionCapabilities({
|
|
5108
|
+
capabilityRegistry,
|
|
5109
|
+
remoteCapabilityInvoker,
|
|
5110
|
+
getResourceManager: () => resourceManager,
|
|
5111
|
+
getPreMintedSecrets: () => preMintedSecrets,
|
|
5112
|
+
emitResourcesAvailable,
|
|
5113
|
+
driverPicksUpToolsLive,
|
|
5114
|
+
getOrCreateMcpManager: () => agentSession?.getOrCreateExternalMcpManager() ?? null,
|
|
5115
|
+
getCompactionOrchestrator: () => compactionOrchestrator,
|
|
5116
|
+
getProjectDir: () => opts.projectDir,
|
|
5117
|
+
attachSkillInstance,
|
|
5118
|
+
log
|
|
5119
|
+
});
|
|
5120
|
+
return { needsWireFallbackRecreate };
|
|
5076
5121
|
}
|
|
5077
5122
|
async function recreateAgentSession(overrides) {
|
|
5078
5123
|
const disposedManager = agentSession.resourceManager;
|
|
@@ -5534,6 +5579,16 @@ async function startAgentServer(opts) {
|
|
|
5534
5579
|
runId: entry.runId,
|
|
5535
5580
|
flowId: plan.flowDef.id
|
|
5536
5581
|
});
|
|
5582
|
+
const startStimulus = { kind: "flow_started" };
|
|
5583
|
+
void getOrCreateStimulusBus().signal(entry.connectorId, {
|
|
5584
|
+
promptFragment: renderStimulusPrompt(startStimulus),
|
|
5585
|
+
meta: { kind: startStimulus.kind, runId: entry.runId }
|
|
5586
|
+
}).catch((err) => {
|
|
5587
|
+
serverLog.warn("flow_started turn failed", {
|
|
5588
|
+
runId: entry.runId,
|
|
5589
|
+
error: err instanceof Error ? err.message : String(err)
|
|
5590
|
+
});
|
|
5591
|
+
});
|
|
5537
5592
|
return;
|
|
5538
5593
|
}
|
|
5539
5594
|
case "create-hydrate": {
|
|
@@ -5659,7 +5714,7 @@ async function startAgentServer(opts) {
|
|
|
5659
5714
|
}
|
|
5660
5715
|
async function handleDebug(cmd) {
|
|
5661
5716
|
if (!await awaitSessionReadyOrFail()) return;
|
|
5662
|
-
|
|
5717
|
+
serverLog.debug(`[serve] debug query=${cmd.query}`);
|
|
5663
5718
|
let result;
|
|
5664
5719
|
try {
|
|
5665
5720
|
result = await computeDebugResult(cmd);
|
|
@@ -6009,5 +6064,5 @@ function touchSession(state) {
|
|
|
6009
6064
|
}
|
|
6010
6065
|
|
|
6011
6066
|
export { CLAUDE_CODE_CREDENTIALS_KEY, COMPILE_MANIFEST_FILENAME, CapabilityRegistry, DEFAULT_CAPABILITY_CALL_TIMEOUT_MS, DEFAULT_COALESCE_MS, MarkdownStreamer, PreInitRingSink, agentDefinitionExists, bootstrapCapabilityRegistry, bootstrapRunnerLogStore, buildAgentResources, buildClientCapabilityHandler, buildConnectorTokenMediator, buildContextSection, buildEnvironmentSection, buildResourcesAvailablePayload, builtinCapabilities, capabilityLogInstance, clearPreInitRingSink, clearSession, compileComposition, computeCapabilitySignature, connectorRefreshKind, createAgentSession, createSessionStimulusBus, defineCapability, deleteSession, dispatchRunnerCapabilityInvocation, emitSystemPromptComposed, ensureGitConfigInclude, extractClaudeAiOauthExpiresAt, getPreInitRingSink, handleMountResourceRequest, handleResourceRequest, installPreInitRingSink, listSessions, loadAgentManifest, loadCompileManifest, loadCompileManifestFromDir, loadSession, loadSessionById, mcpAuthSecretKey, newSession, pickRepointedManager, planFlowMutate, registerCompositionCapabilities, rejectCapabilityOnApprovalDeny, resetRunnerLogStore, resolveAgentComposition, resolveAgentMixins, resolveBinding, resolveCapabilityCallTimeoutMs, resolveCapabilityResult, resolveComposition, resolveMixin, runAgentChat, saveSession, setCurrentSession, startAgentServer, touchSession, writeClaudeCodeCredentialsFile };
|
|
6012
|
-
//# sourceMappingURL=chunk-
|
|
6013
|
-
//# sourceMappingURL=chunk-
|
|
6067
|
+
//# sourceMappingURL=chunk-YNEJXDCZ.js.map
|
|
6068
|
+
//# sourceMappingURL=chunk-YNEJXDCZ.js.map
|