@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
|
@@ -1231,7 +1231,6 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1231
1231
|
async refreshExposedCredential(connectorId, handle) {
|
|
1232
1232
|
const s = handle.state;
|
|
1233
1233
|
if (!s.managedGitconfig || !s.tokenMediator) return;
|
|
1234
|
-
const { credentialsPath, urlPrefix } = s.managedGitconfig;
|
|
1235
1234
|
const result = await s.tokenMediator({ connectorId, reason: "retry-401" });
|
|
1236
1235
|
if (!result.ok) {
|
|
1237
1236
|
this.log.warn("refresh-flag-driven mediation failed", {
|
|
@@ -1241,6 +1240,8 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1241
1240
|
});
|
|
1242
1241
|
return;
|
|
1243
1242
|
}
|
|
1243
|
+
if (!s.managedGitconfig) return;
|
|
1244
|
+
const { credentialsPath, urlPrefix } = s.managedGitconfig;
|
|
1244
1245
|
atomicReplaceCredential({
|
|
1245
1246
|
mountId: connectorId,
|
|
1246
1247
|
urlPrefix,
|
|
@@ -6078,6 +6079,77 @@ async function buildSdkConnectorTools(manager, options) {
|
|
|
6078
6079
|
}
|
|
6079
6080
|
return sdk.createSdkMcpServer({ name: "skaile-connectors", tools });
|
|
6080
6081
|
}
|
|
6082
|
+
var FLOW_AGENT_OPS = /* @__PURE__ */ new Set([
|
|
6083
|
+
"get_available",
|
|
6084
|
+
"get_state",
|
|
6085
|
+
"build_handoff",
|
|
6086
|
+
"validate_node",
|
|
6087
|
+
"start_node",
|
|
6088
|
+
"request_approval",
|
|
6089
|
+
"request_input",
|
|
6090
|
+
"complete_node",
|
|
6091
|
+
"skip_node",
|
|
6092
|
+
"fail_node"
|
|
6093
|
+
]);
|
|
6094
|
+
async function buildSdkFlowTools(manager, connectorId, options) {
|
|
6095
|
+
let sdk = options?.sdk;
|
|
6096
|
+
if (!sdk) {
|
|
6097
|
+
try {
|
|
6098
|
+
sdk = await import('@anthropic-ai/claude-agent-sdk');
|
|
6099
|
+
} catch {
|
|
6100
|
+
return null;
|
|
6101
|
+
}
|
|
6102
|
+
}
|
|
6103
|
+
const z4 = options?.z ?? zStatic;
|
|
6104
|
+
let ops;
|
|
6105
|
+
try {
|
|
6106
|
+
ops = manager.getOperations(connectorId);
|
|
6107
|
+
} catch {
|
|
6108
|
+
return null;
|
|
6109
|
+
}
|
|
6110
|
+
const agentOps = ops.filter((op) => FLOW_AGENT_OPS.has(op.name));
|
|
6111
|
+
if (agentOps.length === 0) return null;
|
|
6112
|
+
const tools = agentOps.map((op) => ({
|
|
6113
|
+
name: op.name,
|
|
6114
|
+
description: op.description,
|
|
6115
|
+
inputSchema: buildOperationInputSchema(op.args, z4),
|
|
6116
|
+
handler: async (input) => {
|
|
6117
|
+
try {
|
|
6118
|
+
const result = await manager.executeOp(connectorId, op.name, input ?? {});
|
|
6119
|
+
return { content: [{ type: "text", text: result || "(ok)" }] };
|
|
6120
|
+
} catch (err) {
|
|
6121
|
+
return {
|
|
6122
|
+
content: [{ type: "text", text: `Error: ${err.message}` }],
|
|
6123
|
+
isError: true
|
|
6124
|
+
};
|
|
6125
|
+
}
|
|
6126
|
+
}
|
|
6127
|
+
}));
|
|
6128
|
+
return sdk.createSdkMcpServer({ name: "skaile-flow", tools });
|
|
6129
|
+
}
|
|
6130
|
+
function buildOperationInputSchema(args, z4) {
|
|
6131
|
+
const shape = {};
|
|
6132
|
+
for (const arg of args) {
|
|
6133
|
+
let schema;
|
|
6134
|
+
switch (arg.type) {
|
|
6135
|
+
case "boolean":
|
|
6136
|
+
schema = z4.boolean();
|
|
6137
|
+
break;
|
|
6138
|
+
case "number":
|
|
6139
|
+
schema = z4.number();
|
|
6140
|
+
break;
|
|
6141
|
+
case "json":
|
|
6142
|
+
schema = z4.union([z4.string(), z4.record(z4.unknown()), z4.array(z4.unknown())]);
|
|
6143
|
+
break;
|
|
6144
|
+
default:
|
|
6145
|
+
schema = z4.string();
|
|
6146
|
+
}
|
|
6147
|
+
if (arg.description) schema = schema.describe(arg.description);
|
|
6148
|
+
if (!arg.required) schema = schema.optional();
|
|
6149
|
+
shape[arg.name] = schema;
|
|
6150
|
+
}
|
|
6151
|
+
return shape;
|
|
6152
|
+
}
|
|
6081
6153
|
function buildConnectorPromptSection(manager, options) {
|
|
6082
6154
|
const shellAccess = options?.shellAccess ?? true;
|
|
6083
6155
|
const allConnectors = manager.listConnectors();
|
|
@@ -6216,7 +6288,7 @@ function renderCredentialHelperScript(opts) {
|
|
|
6216
6288
|
return `#!/bin/sh
|
|
6217
6289
|
# Generated by skaile-runner -- do not edit.
|
|
6218
6290
|
# Tier-2 git credential helper: serves the latest cached token and triggers a
|
|
6219
|
-
# wake-mid-401 refresh when the credentials file is older than ${triggerAgeSec}s.
|
|
6291
|
+
# wake-mid-401 refresh when the credentials file is empty or older than ${triggerAgeSec}s.
|
|
6220
6292
|
# Spec: _devlog/specs/2026-05-07-unified-credential-mediation.md
|
|
6221
6293
|
|
|
6222
6294
|
set -u
|
|
@@ -6235,10 +6307,6 @@ TAG='${tag}'
|
|
|
6235
6307
|
# file already keys by URL prefix via the helper's gitconfig block.
|
|
6236
6308
|
cat > /dev/null 2>&1 || true
|
|
6237
6309
|
|
|
6238
|
-
# Bail silently if the credentials file is missing or empty: git falls
|
|
6239
|
-
# through to the next helper or its own prompt.
|
|
6240
|
-
[ -s "$CRED_FILE" ] || exit 0
|
|
6241
|
-
|
|
6242
6310
|
# Cross-platform mtime in epoch seconds: GNU stat -c first (Linux), then BSD
|
|
6243
6311
|
# stat -f (macOS), then 0 if neither is present (in which case we skip the
|
|
6244
6312
|
# refresh-flag dance entirely and just serve what we have).
|
|
@@ -6250,12 +6318,23 @@ now=$(date +%s 2>/dev/null || echo 0)
|
|
|
6250
6318
|
mtime=$(get_mtime "$CRED_FILE")
|
|
6251
6319
|
age=$((now - mtime))
|
|
6252
6320
|
|
|
6253
|
-
|
|
6321
|
+
# Emptiness is its own trigger: a truncated file has a recent mtime, so the age
|
|
6322
|
+
# check alone would leave it empty forever.
|
|
6323
|
+
started_empty=0
|
|
6324
|
+
[ -s "$CRED_FILE" ] || started_empty=1
|
|
6325
|
+
|
|
6326
|
+
if [ "$started_empty" -eq 1 ] || [ "$age" -gt ${triggerAgeSec} ]; then
|
|
6254
6327
|
# Touch the refresh-flag (atomic open+close emits 'change' to fs.watch).
|
|
6255
6328
|
: > "$FLAG_FILE" 2>/dev/null || true
|
|
6256
6329
|
|
|
6257
6330
|
# Poll for the credentials file mtime to advance. usleep gives sub-second
|
|
6258
|
-
# resolution where available; sleep 1 is the portable fallback.
|
|
6331
|
+
# resolution where available; sleep 1 is the portable fallback. Resolve which
|
|
6332
|
+
# once, up front, rather than probing PATH on every iteration.
|
|
6333
|
+
if command -v usleep >/dev/null 2>&1; then
|
|
6334
|
+
have_usleep=1
|
|
6335
|
+
else
|
|
6336
|
+
have_usleep=0
|
|
6337
|
+
fi
|
|
6259
6338
|
end=$((now + ${waitTimeoutSec}))
|
|
6260
6339
|
while :; do
|
|
6261
6340
|
cur=$(date +%s 2>/dev/null || echo 0)
|
|
@@ -6266,7 +6345,12 @@ if [ "$age" -gt ${triggerAgeSec} ]; then
|
|
|
6266
6345
|
if [ "$new_mtime" -gt "$mtime" ]; then
|
|
6267
6346
|
break
|
|
6268
6347
|
fi
|
|
6269
|
-
|
|
6348
|
+
# A same-second rewrite doesn't advance the second-resolution mtime, so an
|
|
6349
|
+
# empty file that gained content must break on content, not on mtime.
|
|
6350
|
+
if [ "$started_empty" -eq 1 ] && [ -s "$CRED_FILE" ]; then
|
|
6351
|
+
break
|
|
6352
|
+
fi
|
|
6353
|
+
if [ "$have_usleep" -eq 1 ]; then
|
|
6270
6354
|
usleep 200000
|
|
6271
6355
|
else
|
|
6272
6356
|
sleep 1
|
|
@@ -6549,11 +6633,6 @@ function atomicReplaceCredential(opts) {
|
|
|
6549
6633
|
const lines = readCredentialLines(credentialsPath);
|
|
6550
6634
|
const tag = credentialTag(mountId);
|
|
6551
6635
|
const without = lines.filter((l) => !l.endsWith(tag));
|
|
6552
|
-
if (without.length === lines.length) {
|
|
6553
|
-
throw new Error(
|
|
6554
|
-
`atomicReplaceCredential: no existing credential line for mount '${mountId}' in ${credentialsPath}`
|
|
6555
|
-
);
|
|
6556
|
-
}
|
|
6557
6636
|
without.push(buildCredentialLine(urlPrefix, token, mountId));
|
|
6558
6637
|
writeCredentialLines(credentialsPath, without);
|
|
6559
6638
|
}
|
|
@@ -7775,6 +7854,6 @@ function createConnector() {
|
|
|
7775
7854
|
return new FlowAdapter();
|
|
7776
7855
|
}
|
|
7777
7856
|
|
|
7778
|
-
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, PortPool, PostgresConnector, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
|
|
7779
|
-
//# sourceMappingURL=chunk-
|
|
7780
|
-
//# sourceMappingURL=chunk-
|
|
7857
|
+
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, PortPool, PostgresConnector, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, buildSdkFlowTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
|
|
7858
|
+
//# sourceMappingURL=chunk-2257NSNY.js.map
|
|
7859
|
+
//# sourceMappingURL=chunk-2257NSNY.js.map
|