@skaile/workspaces 4.5.2 → 4.6.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 +6 -0
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-G4WIFRFX.js → asset-feeds-3XUEJHLJ.js} +4 -4
- package/dist/{asset-feeds-G4WIFRFX.js.map → asset-feeds-3XUEJHLJ.js.map} +1 -1
- package/dist/asset-manager/index.js +1 -1
- package/dist/bridge/drivers/claude-sdk.js +4 -4
- package/dist/bridge/drivers/codex.js +2 -2
- package/dist/bridge/drivers/continue.js +2 -2
- package/dist/bridge/drivers/echo.js +3 -3
- package/dist/bridge/drivers/gemini.js +4 -4
- 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 +4 -4
- package/dist/bridge/index.js +5 -5
- package/dist/{chunk-JHPBSZIP.js → chunk-2CFREMKM.js} +3 -3
- package/dist/{chunk-JHPBSZIP.js.map → chunk-2CFREMKM.js.map} +1 -1
- package/dist/{chunk-CKLCKPC7.js → chunk-2HZJKDLG.js} +2 -2
- package/dist/{chunk-CKLCKPC7.js.map → chunk-2HZJKDLG.js.map} +1 -1
- package/dist/{chunk-NOH5UDO7.js → chunk-3GKBSHUG.js} +3 -3
- package/dist/{chunk-NOH5UDO7.js.map → chunk-3GKBSHUG.js.map} +1 -1
- package/dist/{chunk-XXRQHASJ.js → chunk-5CDL6VZQ.js} +6 -6
- package/dist/{chunk-XXRQHASJ.js.map → chunk-5CDL6VZQ.js.map} +1 -1
- package/dist/{chunk-AMJEPVNB.js → chunk-63PBQN5U.js} +6 -6
- package/dist/{chunk-AMJEPVNB.js.map → chunk-63PBQN5U.js.map} +1 -1
- package/dist/{chunk-YVQZQGVW.js → chunk-6ZQU5WKJ.js} +3 -3
- package/dist/{chunk-YVQZQGVW.js.map → chunk-6ZQU5WKJ.js.map} +1 -1
- package/dist/{chunk-3OLCTLTH.js → chunk-7WVPAQPE.js} +3 -2
- package/dist/chunk-7WVPAQPE.js.map +1 -0
- package/dist/{chunk-JF77XKD7.js → chunk-CU32AWH5.js} +3 -3
- package/dist/{chunk-JF77XKD7.js.map → chunk-CU32AWH5.js.map} +1 -1
- package/dist/{chunk-DHYIUGZW.js → chunk-D3332IMQ.js} +3 -3
- package/dist/{chunk-DHYIUGZW.js.map → chunk-D3332IMQ.js.map} +1 -1
- package/dist/{chunk-VJJUKODI.js → chunk-DXXIALYF.js} +3 -3
- package/dist/{chunk-VJJUKODI.js.map → chunk-DXXIALYF.js.map} +1 -1
- package/dist/{chunk-Q5C77OZW.js → chunk-EVVE4SL4.js} +3 -3
- package/dist/{chunk-Q5C77OZW.js.map → chunk-EVVE4SL4.js.map} +1 -1
- package/dist/{chunk-C2CYBRYJ.js → chunk-KMFZVPYR.js} +2 -2
- package/dist/{chunk-C2CYBRYJ.js.map → chunk-KMFZVPYR.js.map} +1 -1
- package/dist/{chunk-U4AA7MOV.js → chunk-QAH24E5U.js} +6 -3
- package/dist/chunk-QAH24E5U.js.map +1 -0
- package/dist/{chunk-VP2CACF2.js → chunk-QVTROHEZ.js} +3 -3
- package/dist/{chunk-VP2CACF2.js.map → chunk-QVTROHEZ.js.map} +1 -1
- package/dist/{chunk-CNYIITSZ.js → chunk-R4OMDCGZ.js} +3 -3
- package/dist/{chunk-CNYIITSZ.js.map → chunk-R4OMDCGZ.js.map} +1 -1
- package/dist/{chunk-6GA27VV4.js → chunk-SAXTWLXZ.js} +10 -10
- package/dist/{chunk-6GA27VV4.js.map → chunk-SAXTWLXZ.js.map} +1 -1
- package/dist/chunk-SDNGG6FB.js +32 -0
- package/dist/chunk-SDNGG6FB.js.map +1 -0
- package/dist/{chunk-Y5E6LHSQ.js → chunk-TRGMQUAZ.js} +94 -55
- package/dist/chunk-TRGMQUAZ.js.map +1 -0
- package/dist/{chunk-GVOPQBGM.js → chunk-V7SHQXDI.js} +4 -4
- package/dist/{chunk-GVOPQBGM.js.map → chunk-V7SHQXDI.js.map} +1 -1
- package/dist/{chunk-PJP2TOCB.js → chunk-VZOUBMM4.js} +5 -5
- package/dist/{chunk-PJP2TOCB.js.map → chunk-VZOUBMM4.js.map} +1 -1
- package/dist/{chunk-GNXKNQPU.js → chunk-YNZ5FIFH.js} +2 -2
- package/dist/{chunk-GNXKNQPU.js.map → chunk-YNZ5FIFH.js.map} +1 -1
- package/dist/{chunk-MKJ2QYID.js → chunk-ZGYPEVZW.js} +4 -4
- package/dist/{chunk-MKJ2QYID.js.map → chunk-ZGYPEVZW.js.map} +1 -1
- package/dist/cli/index.js +35 -34
- package/dist/cli/index.js.map +1 -1
- package/dist/connectors/index.js +7 -6
- package/dist/connectors/src/classify-connect-error.d.ts +20 -0
- package/dist/connectors/src/classify-connect-error.d.ts.map +1 -0
- package/dist/connectors/src/connect-error-kind.d.ts +47 -0
- package/dist/connectors/src/connect-error-kind.d.ts.map +1 -0
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +3 -0
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors-shared/index.js +2 -0
- package/dist/connectors-shared/index.js.map +1 -1
- package/dist/connectors-shared/src/index.d.ts +7 -2
- package/dist/connectors-shared/src/index.d.ts.map +1 -1
- package/dist/{ensure-sources-J5J2TBRA.js → ensure-sources-MFQDQPYL.js} +4 -4
- package/dist/{ensure-sources-J5J2TBRA.js.map → ensure-sources-MFQDQPYL.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +7 -6
- package/dist/factory-assets/connectors/deploy.js +7 -6
- package/dist/factory-assets/connectors/devserver.js +7 -6
- package/dist/factory-assets/connectors/flow/adapter.js +7 -6
- package/dist/factory-assets/connectors/flow/run-flow.js +8 -7
- package/dist/factory-assets/connectors/flow.js +7 -6
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +7 -6
- package/dist/factory-assets/connectors/gmail.js +7 -6
- package/dist/factory-assets/connectors/googledrive.js +7 -6
- package/dist/factory-assets/connectors/local.js +7 -6
- package/dist/factory-assets/connectors/mattermost.js +7 -6
- package/dist/factory-assets/connectors/memory.js +7 -6
- package/dist/factory-assets/connectors/minio.js +7 -6
- package/dist/factory-assets/connectors/postgres.js +7 -6
- package/dist/factory-assets/connectors/s3.js +7 -6
- package/dist/factory-assets/connectors/sharepoint.js +7 -6
- package/dist/factory-assets/connectors/sqlite.js +7 -6
- package/dist/factory-assets/connectors/static-server.js +7 -6
- package/dist/factory-assets/connectors/tunnel.js +7 -6
- package/dist/factory-assets/connectors/webdav.js +7 -6
- package/dist/factory-assets/connectors/xstate-store.js +7 -6
- package/dist/factory-assets/connectors/xstate.js +7 -6
- package/dist/{helpers-OJJNDSPO.js → helpers-VQLLQ6HB.js} +4 -4
- package/dist/{helpers-OJJNDSPO.js.map → helpers-VQLLQ6HB.js.map} +1 -1
- package/dist/{library-publish-TDT5HCLA.js → library-publish-73SFVNCE.js} +6 -6
- package/dist/{library-publish-TDT5HCLA.js.map → library-publish-73SFVNCE.js.map} +1 -1
- package/dist/{open-library-OAVUUOAN.js → open-library-QGTUQMUG.js} +5 -5
- package/dist/{open-library-OAVUUOAN.js.map → open-library-QGTUQMUG.js.map} +1 -1
- package/dist/{project-PNSDEXUH.js → project-LWS5PYIF.js} +5 -5
- package/dist/{project-PNSDEXUH.js.map → project-LWS5PYIF.js.map} +1 -1
- package/dist/runner/index.js +11 -10
- package/dist/sdk/asset-manager.js +1 -1
- package/dist/sdk/bridge.js +5 -5
- package/dist/sdk/index.js +11 -10
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runner.js +11 -10
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/store.js +1 -1
- package/dist/sdk/types.js +1 -1
- package/dist/session/index.js +2 -2
- package/dist/{setup-6FAITLPM.js → setup-EOJWDJK2.js} +10 -10
- package/dist/{setup-6FAITLPM.js.map → setup-EOJWDJK2.js.map} +1 -1
- package/dist/{source-RTVNF6GB.js → source-Q5IIYTRA.js} +6 -6
- package/dist/{source-RTVNF6GB.js.map → source-Q5IIYTRA.js.map} +1 -1
- package/dist/{source-manifest-publish-U2PVHXCF.js → source-manifest-publish-Z3WC4HA2.js} +7 -7
- package/dist/{source-manifest-publish-U2PVHXCF.js.map → source-manifest-publish-Z3WC4HA2.js.map} +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/src/resource-client.d.ts.map +1 -1
- package/dist/store/src/types.d.ts +3 -1
- package/dist/store/src/types.d.ts.map +1 -1
- package/dist/tui/index.js +11 -10
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/src/events.d.ts +22 -0
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +2 -2
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3OLCTLTH.js.map +0 -1
- package/dist/chunk-U4AA7MOV.js.map +0 -1
- package/dist/chunk-Y5E6LHSQ.js.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CONNECTOR_ERROR_KINDS } from './chunk-QAH24E5U.js';
|
|
2
|
+
|
|
3
|
+
// connectors/src/connect-error-kind.ts
|
|
4
|
+
var CONNECT_ERROR_KIND_PROPERTY = "skaileConnectErrorKind";
|
|
5
|
+
function declaredConnectErrorKind(err) {
|
|
6
|
+
if (err === null || typeof err !== "object" || !(CONNECT_ERROR_KIND_PROPERTY in err)) {
|
|
7
|
+
return void 0;
|
|
8
|
+
}
|
|
9
|
+
const value = err[CONNECT_ERROR_KIND_PROPERTY];
|
|
10
|
+
return CONNECTOR_ERROR_KINDS.includes(value) ? value : void 0;
|
|
11
|
+
}
|
|
12
|
+
function withConnectErrorKind(err, kind) {
|
|
13
|
+
if (err !== null && typeof err === "object" && !(CONNECT_ERROR_KIND_PROPERTY in err)) {
|
|
14
|
+
try {
|
|
15
|
+
err[CONNECT_ERROR_KIND_PROPERTY] = kind;
|
|
16
|
+
} catch {
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return err;
|
|
20
|
+
}
|
|
21
|
+
var ClassifiedConnectError = class extends Error {
|
|
22
|
+
[CONNECT_ERROR_KIND_PROPERTY];
|
|
23
|
+
constructor(message, kind) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = "ClassifiedConnectError";
|
|
26
|
+
this[CONNECT_ERROR_KIND_PROPERTY] = kind;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { CONNECT_ERROR_KIND_PROPERTY, ClassifiedConnectError, declaredConnectErrorKind, withConnectErrorKind };
|
|
31
|
+
//# sourceMappingURL=chunk-SDNGG6FB.js.map
|
|
32
|
+
//# sourceMappingURL=chunk-SDNGG6FB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../connectors/src/connect-error-kind.ts"],"names":[],"mappings":";;;AAuBO,IAAM,2BAAA,GAA8B;AAYpC,SAAS,yBAAyB,GAAA,EAA8C;AACrF,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAS,IAAgC,2BAA2B,CAAA;AAC1E,EAAA,OAAQ,qBAAA,CAA6C,QAAA,CAAS,KAAK,CAAA,GAC9D,KAAA,GACD,MAAA;AACN;AAOO,SAAS,oBAAA,CAAwB,KAAQ,IAAA,EAA6B;AAC3E,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,IAAI;AACF,MAAC,GAAA,CAAgC,2BAA2B,CAAA,GAAI,IAAA;AAAA,IAClE,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAMO,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChD,CAAU,2BAA2B;AAAA,EACrC,WAAA,CAAY,SAAiB,IAAA,EAA0B;AACrD,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,wBAAA;AACZ,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,IAAA;AAAA,EACtC;AACF","file":"chunk-SDNGG6FB.js","sourcesContent":["/**\n * The driver-side contract for classifying a connect failure: how a thrower\n * says which {@link ConnectorErrorKind} its error is. Read by the manager's\n * `classifyConnectError` (`classify-connect-error.ts`) into the `errorKind`\n * field of `connector_status` error events.\n *\n * Depends on nothing but `types`, so the `connectors-shared` subpath can\n * re-export it to out-of-tree drivers.\n *\n * @docLink packages/connectors/concepts#connector-manager\n */\n\nimport { CONNECTOR_ERROR_KINDS, type ConnectorErrorKind } from \"@skaile/workspaces/types\";\n\n/**\n * The property a thrown error carries its kind on.\n *\n * Namespaced because it is read off any thrown object: a bare `errorKind` is\n * a name a library's own error may already use, and a value that happened to\n * read `\"config\"` would silently misroute the failure. A plain string key\n * rather than a symbol, so a driver with no import from this package can still\n * set it: `throw Object.assign(new Error(msg), { skaileConnectErrorKind: \"config\" })`.\n */\nexport const CONNECT_ERROR_KIND_PROPERTY = \"skaileConnectErrorKind\";\n\n/**\n * The shape of an error that declares its kind. For classes that must spell the\n * key out instead of computing it (see the git driver's `TokenMediatorError`):\n * `implements` keeps the literal tied to {@link CONNECT_ERROR_KIND_PROPERTY}.\n */\nexport type DeclaresConnectErrorKind = {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n};\n\n/** The kind `err` declares for itself, or `undefined` when it declares none (or an unknown one). */\nexport function declaredConnectErrorKind(err: unknown): ConnectorErrorKind | undefined {\n if (err === null || typeof err !== \"object\" || !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n return undefined;\n }\n const value = (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY];\n return (CONNECTOR_ERROR_KINDS as readonly unknown[]).includes(value)\n ? (value as ConnectorErrorKind)\n : undefined;\n}\n\n/**\n * Stamp `kind` onto `err` unless it already declares one, and return it for\n * rethrowing. For throw sites that know what a failure means but throw an\n * error they did not construct (a failed `git` child, say).\n */\nexport function withConnectErrorKind<T>(err: T, kind: ConnectorErrorKind): T {\n if (err !== null && typeof err === \"object\" && !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n try {\n (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY] = kind;\n } catch {\n // Frozen or sealed: unclassified beats replacing the real error with a TypeError.\n }\n }\n return err;\n}\n\n/**\n * An `Error` carrying an explicit {@link ConnectorErrorKind}, for throw sites\n * that build their own error.\n */\nexport class ClassifiedConnectError extends Error {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n constructor(message: string, kind: ConnectorErrorKind) {\n super(message);\n this.name = \"ClassifiedConnectError\";\n this[CONNECT_ERROR_KIND_PROPERTY] = kind;\n }\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { declaredConnectErrorKind, ClassifiedConnectError, withConnectErrorKind } from './chunk-SDNGG6FB.js';
|
|
2
|
+
import { OAuthRequiredError, LegacyAuthGrammarError, resolveAuthRef } from './chunk-KW7YIRYL.js';
|
|
3
|
+
import { EventNormalizer } from './chunk-V7SHQXDI.js';
|
|
4
|
+
import { resolveModelTier } from './chunk-QVTROHEZ.js';
|
|
5
|
+
import { createDriver } from './chunk-KMFZVPYR.js';
|
|
5
6
|
import { pluginRegistry } from './chunk-6E6PKKAD.js';
|
|
6
7
|
import { computeStimulus } from './chunk-IFGTRL2I.js';
|
|
7
8
|
import { interpolateNodeInstruction, resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-NWZQMJTI.js';
|
|
@@ -9,7 +10,7 @@ import { INPUT_SCHEMA_SHAPES_HINT, coerceInputSchema } from './chunk-TIOT3ZOQ.js
|
|
|
9
10
|
import { classifierDecision, withoutReservedClassifierFields, parseFlowDefinition } from './chunk-53ORCYPJ.js';
|
|
10
11
|
import { describeStimulus, buildOrchestratorPrompt, renderSubpromptPrompt, renderStimulusPrompt } from './chunk-2D5BYAL6.js';
|
|
11
12
|
import { deterministicNodeKindLabel, nodeInstruction, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-ELPR5XBG.js';
|
|
12
|
-
import { withActivityLabelDefs } from './chunk-
|
|
13
|
+
import { withActivityLabelDefs } from './chunk-QAH24E5U.js';
|
|
13
14
|
import { processAlive } from './chunk-UJPVUN6H.js';
|
|
14
15
|
import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-MKZOK4JU.js';
|
|
15
16
|
import { portableSpawn } from './chunk-KSIRR5PL.js';
|
|
@@ -734,6 +735,44 @@ function runIsolatedPrompt(driver, prompt) {
|
|
|
734
735
|
driver.prompt(prompt).catch(done);
|
|
735
736
|
});
|
|
736
737
|
}
|
|
738
|
+
|
|
739
|
+
// connectors/src/connector-types.ts
|
|
740
|
+
var ConnectorFieldMissingError = class extends Error {
|
|
741
|
+
connectorId;
|
|
742
|
+
field;
|
|
743
|
+
triedRef;
|
|
744
|
+
availableProviders;
|
|
745
|
+
constructor(opts) {
|
|
746
|
+
super(
|
|
747
|
+
`Connector "${opts.connectorId}" is missing required field "${opts.field.key}" (tried: ${opts.triedRef || "(none)"}). Available providers: ${opts.availableProviders.join(", ") || "(none)"}`
|
|
748
|
+
);
|
|
749
|
+
this.name = "ConnectorFieldMissingError";
|
|
750
|
+
this.connectorId = opts.connectorId;
|
|
751
|
+
this.field = opts.field;
|
|
752
|
+
this.triedRef = opts.triedRef;
|
|
753
|
+
this.availableProviders = opts.availableProviders;
|
|
754
|
+
}
|
|
755
|
+
};
|
|
756
|
+
var ConnectorStartupError = class extends Error {
|
|
757
|
+
report;
|
|
758
|
+
failedReadWrite;
|
|
759
|
+
constructor(message, report, failedReadWrite) {
|
|
760
|
+
super(message);
|
|
761
|
+
this.name = "ConnectorStartupError";
|
|
762
|
+
this.report = report;
|
|
763
|
+
this.failedReadWrite = failedReadWrite;
|
|
764
|
+
}
|
|
765
|
+
};
|
|
766
|
+
|
|
767
|
+
// connectors/src/classify-connect-error.ts
|
|
768
|
+
function classifyConnectError(err) {
|
|
769
|
+
const declared = declaredConnectErrorKind(err);
|
|
770
|
+
if (declared) return declared;
|
|
771
|
+
if (err instanceof OAuthRequiredError) return "credential";
|
|
772
|
+
if (err instanceof ConnectorFieldMissingError) return "config";
|
|
773
|
+
if (err instanceof LegacyAuthGrammarError) return "config";
|
|
774
|
+
return void 0;
|
|
775
|
+
}
|
|
737
776
|
var execFileAsync = promisify(execFile);
|
|
738
777
|
var GIT_REV_PARSE_TIMEOUT_MS = 15e3;
|
|
739
778
|
var DeployConnector = class extends AbstractConnector {
|
|
@@ -1663,6 +1702,15 @@ async function clearStaleIndexLock(targetDir, log) {
|
|
|
1663
1702
|
log.warn("removed an abandoned .git/index.lock", { lockPath, ageMs });
|
|
1664
1703
|
}
|
|
1665
1704
|
}
|
|
1705
|
+
function isIndexLockFailure(err) {
|
|
1706
|
+
const stderr = err?.stderr;
|
|
1707
|
+
return typeof stderr === "string" && /index\.lock/.test(stderr);
|
|
1708
|
+
}
|
|
1709
|
+
function gitLocalCheckout(args, cwd) {
|
|
1710
|
+
return git(["checkout", ...args], cwd).catch((err) => {
|
|
1711
|
+
throw typeof err?.code === "number" ? withConnectErrorKind(err, "repo-state") : err;
|
|
1712
|
+
});
|
|
1713
|
+
}
|
|
1666
1714
|
async function syncSubmodules(cwd, log) {
|
|
1667
1715
|
if (!await pathExists(join(cwd, ".gitmodules"))) return;
|
|
1668
1716
|
try {
|
|
@@ -1743,6 +1791,8 @@ async function commitAll(cwd, message) {
|
|
|
1743
1791
|
return gitCommitting(["commit", "-m", message], cwd);
|
|
1744
1792
|
}
|
|
1745
1793
|
var TokenMediatorError = class extends Error {
|
|
1794
|
+
/** Every mediator refusal is fixed where the credential lives, whatever its code. */
|
|
1795
|
+
skaileConnectErrorKind = "credential";
|
|
1746
1796
|
code;
|
|
1747
1797
|
constructor(message, code, connectorId) {
|
|
1748
1798
|
super(`Git connector '${connectorId}': backend mediator ${code} \u2014 ${message}`);
|
|
@@ -1804,10 +1854,10 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1804
1854
|
let credentialAlignmentAttempted = false;
|
|
1805
1855
|
if (!url) {
|
|
1806
1856
|
this.log.error("connect failed: missing mount.source URL", void 0);
|
|
1807
|
-
throw new
|
|
1857
|
+
throw new ClassifiedConnectError("Git connector requires a mount.source URL", "config");
|
|
1808
1858
|
}
|
|
1809
1859
|
if (!isValidGitRefOrSha(branch)) {
|
|
1810
|
-
throw new
|
|
1860
|
+
throw new ClassifiedConnectError(`Git connector: invalid branch name "${branch}"`, "config");
|
|
1811
1861
|
}
|
|
1812
1862
|
try {
|
|
1813
1863
|
this.log.info("mount start", { url, branch, targetDir });
|
|
@@ -1888,6 +1938,7 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1888
1938
|
}
|
|
1889
1939
|
}
|
|
1890
1940
|
this.registerUnavailableCredentialHelper(declaration, credentialScopeUrl, err);
|
|
1941
|
+
if (isIndexLockFailure(err)) withConnectErrorKind(err, "repo-state");
|
|
1891
1942
|
throw err;
|
|
1892
1943
|
}
|
|
1893
1944
|
}
|
|
@@ -1976,11 +2027,14 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1976
2027
|
async checkoutSessionBranch(state, session, targetDir) {
|
|
1977
2028
|
const sessionBranch = `${session.branchPrefix}${session.slug}`;
|
|
1978
2029
|
if (!isValidGitRefOrSha(sessionBranch)) {
|
|
1979
|
-
throw new
|
|
2030
|
+
throw new ClassifiedConnectError(
|
|
2031
|
+
`Git connector: invalid session branch name "${sessionBranch}"`,
|
|
2032
|
+
"config"
|
|
2033
|
+
);
|
|
1980
2034
|
}
|
|
1981
2035
|
let created = false;
|
|
1982
2036
|
if (await localBranchExists(sessionBranch, targetDir)) {
|
|
1983
|
-
await
|
|
2037
|
+
await gitLocalCheckout([sessionBranch], targetDir);
|
|
1984
2038
|
this.log.info("reusing existing local session branch", { sessionBranch });
|
|
1985
2039
|
} else {
|
|
1986
2040
|
let originHasBranch = false;
|
|
@@ -1990,9 +2044,9 @@ var GitConnector = class extends AbstractConnector {
|
|
|
1990
2044
|
} catch {
|
|
1991
2045
|
}
|
|
1992
2046
|
if (originHasBranch) {
|
|
1993
|
-
await
|
|
2047
|
+
await gitLocalCheckout(["-B", sessionBranch, `origin/${sessionBranch}`], targetDir);
|
|
1994
2048
|
} else if (!await this.branchFromRef(session, sessionBranch, targetDir)) {
|
|
1995
|
-
await
|
|
2049
|
+
await gitLocalCheckout(["-b", sessionBranch], targetDir);
|
|
1996
2050
|
created = true;
|
|
1997
2051
|
} else {
|
|
1998
2052
|
created = true;
|
|
@@ -2312,8 +2366,9 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2312
2366
|
}
|
|
2313
2367
|
if (authRef.kind === "backend") {
|
|
2314
2368
|
if (!tokenMediator) {
|
|
2315
|
-
throw new
|
|
2316
|
-
`Connector '${declaration.id}' uses 'auth: backend' but no token mediator is wired (standalone CLI does not have one \u2014 use 'pat:env:NAME' instead)
|
|
2369
|
+
throw new ClassifiedConnectError(
|
|
2370
|
+
`Connector '${declaration.id}' uses 'auth: backend' but no token mediator is wired (standalone CLI does not have one \u2014 use 'pat:env:NAME' instead).`,
|
|
2371
|
+
"config"
|
|
2317
2372
|
);
|
|
2318
2373
|
}
|
|
2319
2374
|
const result = await tokenMediator({ connectorId: declaration.id, reason: "initial" });
|
|
@@ -2342,8 +2397,9 @@ var GitConnector = class extends AbstractConnector {
|
|
|
2342
2397
|
token = inner;
|
|
2343
2398
|
}
|
|
2344
2399
|
if (!token) {
|
|
2345
|
-
throw new
|
|
2346
|
-
`PAT auth ref '${authRef.raw}' did not resolve to a token. Provision '${authRef.value}' in the SecretProviderChain
|
|
2400
|
+
throw new ClassifiedConnectError(
|
|
2401
|
+
`PAT auth ref '${authRef.raw}' did not resolve to a token. Provision '${authRef.value}' in the SecretProviderChain.`,
|
|
2402
|
+
"credential"
|
|
2347
2403
|
);
|
|
2348
2404
|
}
|
|
2349
2405
|
return { authRef, token, expiresAt: null };
|
|
@@ -6261,34 +6317,6 @@ function ensureBuiltinsRegistered() {
|
|
|
6261
6317
|
}
|
|
6262
6318
|
}
|
|
6263
6319
|
|
|
6264
|
-
// connectors/src/connector-types.ts
|
|
6265
|
-
var ConnectorFieldMissingError = class extends Error {
|
|
6266
|
-
connectorId;
|
|
6267
|
-
field;
|
|
6268
|
-
triedRef;
|
|
6269
|
-
availableProviders;
|
|
6270
|
-
constructor(opts) {
|
|
6271
|
-
super(
|
|
6272
|
-
`Connector "${opts.connectorId}" is missing required field "${opts.field.key}" (tried: ${opts.triedRef || "(none)"}). Available providers: ${opts.availableProviders.join(", ") || "(none)"}`
|
|
6273
|
-
);
|
|
6274
|
-
this.name = "ConnectorFieldMissingError";
|
|
6275
|
-
this.connectorId = opts.connectorId;
|
|
6276
|
-
this.field = opts.field;
|
|
6277
|
-
this.triedRef = opts.triedRef;
|
|
6278
|
-
this.availableProviders = opts.availableProviders;
|
|
6279
|
-
}
|
|
6280
|
-
};
|
|
6281
|
-
var ConnectorStartupError = class extends Error {
|
|
6282
|
-
report;
|
|
6283
|
-
failedReadWrite;
|
|
6284
|
-
constructor(message, report, failedReadWrite) {
|
|
6285
|
-
super(message);
|
|
6286
|
-
this.name = "ConnectorStartupError";
|
|
6287
|
-
this.report = report;
|
|
6288
|
-
this.failedReadWrite = failedReadWrite;
|
|
6289
|
-
}
|
|
6290
|
-
};
|
|
6291
|
-
|
|
6292
6320
|
// connectors/src/connector-manager.ts
|
|
6293
6321
|
var KNOWN_PREFIXES = ["env:", "forge:", "op:", "kp:", "oauth:"];
|
|
6294
6322
|
function hasKnownPrefix(ref) {
|
|
@@ -6491,16 +6519,18 @@ var ConnectorManager = class {
|
|
|
6491
6519
|
if (registered) return registered;
|
|
6492
6520
|
const entry = this.catalogEntries.find((e) => e.kind === "connector" && e.name === driver);
|
|
6493
6521
|
if (!entry) {
|
|
6494
|
-
throw new
|
|
6495
|
-
`Unknown connector: "${driver}". Run 'skaile search connector' to see available connectors
|
|
6522
|
+
throw new ClassifiedConnectError(
|
|
6523
|
+
`Unknown connector: "${driver}". Run 'skaile search connector' to see available connectors.`,
|
|
6524
|
+
"config"
|
|
6496
6525
|
);
|
|
6497
6526
|
}
|
|
6498
6527
|
const entryPoint = entry.metadata?.entry ?? "./connector.ts";
|
|
6499
6528
|
const connectorPath = resolve(dirname(entry.source), entryPoint);
|
|
6500
6529
|
const mod = await import(connectorPath);
|
|
6501
6530
|
if (typeof mod.createConnector !== "function") {
|
|
6502
|
-
throw new
|
|
6503
|
-
`Connector "${driver}" at ${connectorPath} does not export createConnector()
|
|
6531
|
+
throw new ClassifiedConnectError(
|
|
6532
|
+
`Connector "${driver}" at ${connectorPath} does not export createConnector()`,
|
|
6533
|
+
"config"
|
|
6504
6534
|
);
|
|
6505
6535
|
}
|
|
6506
6536
|
const connector = mod.createConnector();
|
|
@@ -6535,8 +6565,9 @@ var ConnectorManager = class {
|
|
|
6535
6565
|
const owner = this.mountTargets.get(absPath);
|
|
6536
6566
|
if (owner === id) return;
|
|
6537
6567
|
if (owner !== void 0) {
|
|
6538
|
-
throw new
|
|
6539
|
-
`Mount target collision: connectors "${owner}" and "${id}" both resolve to "${absPath}". Each filesystem connector needs a distinct mount.target
|
|
6568
|
+
throw new ClassifiedConnectError(
|
|
6569
|
+
`Mount target collision: connectors "${owner}" and "${id}" both resolve to "${absPath}". Each filesystem connector needs a distinct mount.target.`,
|
|
6570
|
+
"config"
|
|
6540
6571
|
);
|
|
6541
6572
|
}
|
|
6542
6573
|
for (const [otherPath, otherId] of this.mountTargets) {
|
|
@@ -6744,12 +6775,18 @@ var ConnectorManager = class {
|
|
|
6744
6775
|
if (!this.active.has(decl.id)) this.releaseMountTarget(decl.id);
|
|
6745
6776
|
const msg = err instanceof Error ? err.message : String(err);
|
|
6746
6777
|
this.recordFailure(decl, msg);
|
|
6747
|
-
|
|
6778
|
+
const errorKind = classifyConnectError(err);
|
|
6779
|
+
this.mgrLog.error("connect failed", err, {
|
|
6780
|
+
id: decl.id,
|
|
6781
|
+
driver: decl.driver,
|
|
6782
|
+
...errorKind ? { errorKind } : {}
|
|
6783
|
+
});
|
|
6748
6784
|
this.opts.onStatusChange?.({
|
|
6749
6785
|
type: "connector_status",
|
|
6750
6786
|
connectorId: decl.id,
|
|
6751
6787
|
status: "error",
|
|
6752
|
-
error: msg
|
|
6788
|
+
error: msg,
|
|
6789
|
+
...errorKind ? { errorKind } : {}
|
|
6753
6790
|
});
|
|
6754
6791
|
return {
|
|
6755
6792
|
id: decl.id,
|
|
@@ -6834,11 +6871,13 @@ var ConnectorManager = class {
|
|
|
6834
6871
|
this.releaseMountTarget(declaration.id);
|
|
6835
6872
|
const msg = err instanceof Error ? err.message : String(err);
|
|
6836
6873
|
this.recordFailure(declaration, msg);
|
|
6874
|
+
const errorKind = classifyConnectError(err);
|
|
6837
6875
|
this.opts.onStatusChange?.({
|
|
6838
6876
|
type: "connector_status",
|
|
6839
6877
|
connectorId: declaration.id,
|
|
6840
6878
|
status: "error",
|
|
6841
|
-
error: msg
|
|
6879
|
+
error: msg,
|
|
6880
|
+
...errorKind ? { errorKind } : {}
|
|
6842
6881
|
});
|
|
6843
6882
|
throw err;
|
|
6844
6883
|
}
|
|
@@ -11081,6 +11120,6 @@ function describeFlowOperations() {
|
|
|
11081
11120
|
return new FlowAdapter().tools.describeOperations({ access: "read-write" });
|
|
11082
11121
|
}
|
|
11083
11122
|
|
|
11084
|
-
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ClassifierSubpromptRunner, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, MAX_REARM_MS, MIN_REFRESH_DELAY_MS, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NO_ACTIVE_FLOW_ERROR, PortPool, PostgresConnector, REFRESH_LEAD_MS, S3Connector, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildConnectorToolDefs, buildFlowPromptEvent, buildFlowToolDefs, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, classifierQuestion, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, describeFlowOperations, driveOrchestratorTurn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock };
|
|
11085
|
-
//# sourceMappingURL=chunk-
|
|
11086
|
-
//# sourceMappingURL=chunk-
|
|
11123
|
+
export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ClassifierSubpromptRunner, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, MAX_REARM_MS, MIN_REFRESH_DELAY_MS, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NO_ACTIVE_FLOW_ERROR, PortPool, PostgresConnector, REFRESH_LEAD_MS, S3Connector, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildConnectorToolDefs, buildFlowPromptEvent, buildFlowToolDefs, buildLazyFlowToolDefs, buildLazySdkFlowTools, buildSdkConnectorTools, buildSdkFlowTools, classifierQuestion, classifyConnectError, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, describeFlowOperations, driveOrchestratorTurn, ensureDirMode, ensureFleetMounted, ensureRefreshAttemptStamp, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, removeUnavailableMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock, writeUnavailableMountBlock };
|
|
11124
|
+
//# sourceMappingURL=chunk-TRGMQUAZ.js.map
|
|
11125
|
+
//# sourceMappingURL=chunk-TRGMQUAZ.js.map
|