@sideboard-ai/core 0.1.273 → 0.1.275
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/dist/{abletime-4ZSDI4YP.js → abletime-VCVPSLSU.js} +4 -4
- package/dist/{abletime-JNQAHLHH.js → abletime-VRATUMDO.js} +4 -4
- package/dist/{abletime-oauth-4RXZH2KU.js → abletime-oauth-4C4G2J3R.js} +3 -3
- package/dist/{abletime-oauth-DCEIINYT.js → abletime-oauth-4K7MICAD.js} +3 -3
- package/dist/{abletime-rest-KVBJFVFD.js → abletime-rest-6N63ZVQ3.js} +3 -3
- package/dist/{abletime-rest-VN6PZ6P2.js → abletime-rest-PIBCNHF3.js} +3 -3
- package/dist/{agents-LAFFXBBZ.js → agents-2FOWVJCN.js} +4 -4
- package/dist/{agents-ZCO37SKG.js → agents-JBVJRDH3.js} +4 -4
- package/dist/{app-settings-RAC4PSSP.js → app-settings-EQQZQNYD.js} +1 -1
- package/dist/{app-settings-L5HGYXWJ.js → app-settings-NI4X5HW3.js} +1 -1
- package/dist/{chunk-UXI52MLJ.js → chunk-2J34G3WJ.js} +3 -3
- package/dist/{chunk-PTNGMA5C.js → chunk-A2G3ZBJS.js} +2 -2
- package/dist/{chunk-T47ARZ5Q.js → chunk-FELFTNH2.js} +25 -24
- package/dist/{chunk-OUBQH5GR.js → chunk-HOMZKYHF.js} +31 -29
- package/dist/{chunk-GONPMH36.js → chunk-IJDQKC5A.js} +5 -5
- package/dist/{chunk-USBZ7PH4.js → chunk-IPPY3FG5.js} +1 -1
- package/dist/{chunk-NWE3NOWQ.js → chunk-K7MWJLR7.js} +1 -1
- package/dist/{chunk-HO2T6BC3.js → chunk-MGS5T2A3.js} +31 -29
- package/dist/{chunk-ADWNK2JH.js → chunk-NIB2IZ6J.js} +5 -5
- package/dist/{chunk-AGXZAMOF.js → chunk-NQ7JMVSU.js} +2 -2
- package/dist/{chunk-JLDJGGCL.js → chunk-NT7RIWRR.js} +5 -5
- package/dist/{chunk-L6CYOON4.js → chunk-PZURG3XN.js} +5 -5
- package/dist/{chunk-LAIBYKZS.js → chunk-QINJKNLR.js} +3 -3
- package/dist/{chunk-2QUILREI.js → chunk-QTZO4LPU.js} +2 -2
- package/dist/{chunk-KZ2CDZBZ.js → chunk-R7HLXD4I.js} +3 -3
- package/dist/{chunk-N3LASDJM.js → chunk-SQOAFR2U.js} +26 -25
- package/dist/{chunk-OIENQEGG.js → chunk-WRIMAEF2.js} +67 -122
- package/dist/{chunk-DBFAFI5A.js → chunk-XKZAVGTT.js} +2 -2
- package/dist/{chunk-PAH7KDL2.js → chunk-YNTXWFXT.js} +67 -122
- package/dist/{conductor-3AQM67VK.js → conductor-GBCE37K4.js} +4 -4
- package/dist/{conductor-FLWACOVC.js → conductor-YYQKZAND.js} +4 -4
- package/dist/{coordinator-prompt-4KVA6XUX.js → coordinator-prompt-B3GLVXPP.js} +3 -3
- package/dist/{coordinator-prompt-MVUHFNSC.js → coordinator-prompt-SFZCZ3HR.js} +3 -3
- package/dist/{global-workspace-FR7QTLPK.js → global-workspace-7XEXTIHL.js} +3 -3
- package/dist/{global-workspace-34Z2IWYQ.js → global-workspace-N2YYJKA5.js} +3 -3
- package/dist/index.cjs +1700 -186
- package/dist/index.d.cts +99 -20
- package/dist/index.d.ts +99 -20
- package/dist/index.js +1583 -43
- package/dist/mcp/run-stdio.cjs +95 -141
- package/dist/mcp/run-stdio.js +11 -11
- package/dist/{orchestrator-YKSDWR6C.js → orchestrator-6QJLM6Y4.js} +6 -6
- package/dist/{orchestrator-K42IBMBE.js → orchestrator-QMKVXVUR.js} +6 -6
- package/dist/{workspaces-5GERYHDJ.js → workspaces-BJCHMGVG.js} +3 -3
- package/dist/{workspaces-2JBDUMM6.js → workspaces-PBB6HY2D.js} +3 -3
- package/dist/{worktree-ACW23KJ5.js → worktree-L57T3KH7.js} +2 -2
- package/dist/{worktree-C7RPVHZ7.js → worktree-Q6UJHG25.js} +2 -2
- package/package.json +1 -1
package/dist/mcp/run-stdio.cjs
CHANGED
|
@@ -3872,6 +3872,9 @@ function normalizeVault(raw) {
|
|
|
3872
3872
|
if (typeof raw.remoteHostSecret === "string" && raw.remoteHostSecret.trim()) {
|
|
3873
3873
|
out.remoteHostSecret = raw.remoteHostSecret.trim();
|
|
3874
3874
|
}
|
|
3875
|
+
if (typeof raw.remoteAccountToken === "string" && raw.remoteAccountToken.trim()) {
|
|
3876
|
+
out.remoteAccountToken = raw.remoteAccountToken.trim();
|
|
3877
|
+
}
|
|
3875
3878
|
if (typeof raw.githubPat === "string" && raw.githubPat.trim()) {
|
|
3876
3879
|
out.githubPat = raw.githubPat.trim();
|
|
3877
3880
|
}
|
|
@@ -4540,7 +4543,8 @@ function emptyPublicIntegrations() {
|
|
|
4540
4543
|
hasVercelToken: false,
|
|
4541
4544
|
hasSupabaseToken: false,
|
|
4542
4545
|
hasPosthogToken: false,
|
|
4543
|
-
hasSentryToken: false
|
|
4546
|
+
hasSentryToken: false,
|
|
4547
|
+
hasRemoteAccount: false
|
|
4544
4548
|
};
|
|
4545
4549
|
}
|
|
4546
4550
|
function hasLinearOAuth(integrations) {
|
|
@@ -4557,29 +4561,7 @@ function toPublicAppSettings(settings) {
|
|
|
4557
4561
|
if (key.trim()) environment[key] = "";
|
|
4558
4562
|
}
|
|
4559
4563
|
const integrations = { ...settings.integrations };
|
|
4560
|
-
const
|
|
4561
|
-
const slackAppToken = integrations.slackAppToken;
|
|
4562
|
-
const githubPat = integrations.githubPat;
|
|
4563
|
-
const abletimeAccessToken = integrations.abletimeAccessToken;
|
|
4564
|
-
const abletimeRefreshToken = integrations.abletimeRefreshToken;
|
|
4565
|
-
const vercelToken = integrations.vercelToken;
|
|
4566
|
-
const supabaseAccessToken = integrations.supabaseAccessToken;
|
|
4567
|
-
const posthogPersonalApiKey = integrations.posthogPersonalApiKey;
|
|
4568
|
-
const sentryAuthToken = integrations.sentryAuthToken;
|
|
4569
|
-
delete integrations.linearApiKey;
|
|
4570
|
-
delete integrations.linearAccessToken;
|
|
4571
|
-
delete integrations.linearRefreshToken;
|
|
4572
|
-
delete integrations.linearClientSecret;
|
|
4573
|
-
delete integrations.slackClientSecret;
|
|
4574
|
-
delete integrations.slackAppToken;
|
|
4575
|
-
delete integrations.remoteHostSecret;
|
|
4576
|
-
delete integrations.githubPat;
|
|
4577
|
-
delete integrations.abletimeAccessToken;
|
|
4578
|
-
delete integrations.abletimeRefreshToken;
|
|
4579
|
-
delete integrations.vercelToken;
|
|
4580
|
-
delete integrations.supabaseAccessToken;
|
|
4581
|
-
delete integrations.posthogPersonalApiKey;
|
|
4582
|
-
delete integrations.sentryAuthToken;
|
|
4564
|
+
for (const key of INTEGRATION_VAULT_KEYS) delete integrations[key];
|
|
4583
4565
|
return {
|
|
4584
4566
|
...settings,
|
|
4585
4567
|
environment,
|
|
@@ -4587,15 +4569,18 @@ function toPublicAppSettings(settings) {
|
|
|
4587
4569
|
...integrations,
|
|
4588
4570
|
hasLinearApiKey: hasLinearCredentials(settings.integrations),
|
|
4589
4571
|
hasLinearOAuth: hasLinearOAuth(settings.integrations),
|
|
4590
|
-
hasSlackClientSecret: Boolean(slackClientSecret?.trim()),
|
|
4591
|
-
hasSlackAppToken: Boolean(slackAppToken?.trim()),
|
|
4592
|
-
hasGithubPat: Boolean(githubPat?.trim()),
|
|
4593
|
-
hasAbleTimeToken: Boolean(
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4572
|
+
hasSlackClientSecret: Boolean(settings.integrations.slackClientSecret?.trim()),
|
|
4573
|
+
hasSlackAppToken: Boolean(settings.integrations.slackAppToken?.trim()),
|
|
4574
|
+
hasGithubPat: Boolean(settings.integrations.githubPat?.trim()),
|
|
4575
|
+
hasAbleTimeToken: Boolean(
|
|
4576
|
+
settings.integrations.abletimeAccessToken?.trim() || settings.integrations.abletimeRefreshToken?.trim()
|
|
4577
|
+
),
|
|
4578
|
+
hasAbleTimeOAuth: Boolean(settings.integrations.abletimeRefreshToken?.trim()),
|
|
4579
|
+
hasVercelToken: Boolean(settings.integrations.vercelToken?.trim()),
|
|
4580
|
+
hasSupabaseToken: Boolean(settings.integrations.supabaseAccessToken?.trim()),
|
|
4581
|
+
hasPosthogToken: Boolean(settings.integrations.posthogPersonalApiKey?.trim()),
|
|
4582
|
+
hasSentryToken: Boolean(settings.integrations.sentryAuthToken?.trim()),
|
|
4583
|
+
hasRemoteAccount: Boolean(settings.integrations.remoteAccountToken?.trim())
|
|
4599
4584
|
}
|
|
4600
4585
|
};
|
|
4601
4586
|
}
|
|
@@ -4722,6 +4707,14 @@ function normalizeIntegrations(raw) {
|
|
|
4722
4707
|
const secret = source.remoteHostSecret.trim();
|
|
4723
4708
|
if (secret) out.remoteHostSecret = secret;
|
|
4724
4709
|
}
|
|
4710
|
+
if (typeof source.remoteAccountToken === "string") {
|
|
4711
|
+
const token = source.remoteAccountToken.trim();
|
|
4712
|
+
if (token) out.remoteAccountToken = token;
|
|
4713
|
+
}
|
|
4714
|
+
if (typeof source.remoteAccountEmail === "string") {
|
|
4715
|
+
const email = source.remoteAccountEmail.trim().toLowerCase();
|
|
4716
|
+
if (email) out.remoteAccountEmail = email;
|
|
4717
|
+
}
|
|
4725
4718
|
if (typeof source.githubGitAuthMode === "string" && GIT_AUTH_MODES.has(source.githubGitAuthMode)) {
|
|
4726
4719
|
out.githubGitAuthMode = source.githubGitAuthMode;
|
|
4727
4720
|
}
|
|
@@ -5065,110 +5058,31 @@ function readSettingsFile() {
|
|
|
5065
5058
|
}
|
|
5066
5059
|
}
|
|
5067
5060
|
function diskHoldsSecrets(disk) {
|
|
5068
|
-
return Boolean(
|
|
5069
|
-
disk.integrations.linearApiKey || disk.integrations.linearAccessToken || disk.integrations.linearRefreshToken || disk.integrations.linearClientSecret || disk.integrations.slackClientSecret || disk.integrations.slackAppToken || disk.integrations.remoteHostSecret || disk.integrations.githubPat || disk.integrations.abletimeAccessToken || disk.integrations.abletimeRefreshToken || disk.integrations.vercelToken || disk.integrations.supabaseAccessToken || disk.integrations.posthogPersonalApiKey || disk.integrations.sentryAuthToken || Object.keys(disk.environment).length > 0
|
|
5070
|
-
);
|
|
5061
|
+
return INTEGRATION_VAULT_KEYS.some((key) => Boolean(disk.integrations[key])) || Object.keys(disk.environment).length > 0;
|
|
5071
5062
|
}
|
|
5072
5063
|
function mergeVault(disk) {
|
|
5073
5064
|
const vault = loadSecretVault();
|
|
5074
5065
|
const environment = { ...vault.environment ?? {}, ...disk.environment };
|
|
5075
5066
|
const integrations = { ...disk.integrations };
|
|
5076
|
-
|
|
5077
|
-
|
|
5078
|
-
|
|
5079
|
-
if (vault.linearAccessToken && !integrations.linearAccessToken) {
|
|
5080
|
-
integrations.linearAccessToken = vault.linearAccessToken;
|
|
5081
|
-
}
|
|
5082
|
-
if (vault.linearRefreshToken && !integrations.linearRefreshToken) {
|
|
5083
|
-
integrations.linearRefreshToken = vault.linearRefreshToken;
|
|
5084
|
-
}
|
|
5085
|
-
if (vault.linearClientSecret && !integrations.linearClientSecret) {
|
|
5086
|
-
integrations.linearClientSecret = vault.linearClientSecret;
|
|
5087
|
-
}
|
|
5088
|
-
if (vault.slackClientSecret && !integrations.slackClientSecret) {
|
|
5089
|
-
integrations.slackClientSecret = vault.slackClientSecret;
|
|
5090
|
-
}
|
|
5091
|
-
if (vault.slackAppToken && !integrations.slackAppToken) {
|
|
5092
|
-
integrations.slackAppToken = vault.slackAppToken;
|
|
5093
|
-
}
|
|
5094
|
-
if (vault.remoteHostSecret && !integrations.remoteHostSecret) {
|
|
5095
|
-
integrations.remoteHostSecret = vault.remoteHostSecret;
|
|
5096
|
-
}
|
|
5097
|
-
if (vault.githubPat && !integrations.githubPat) {
|
|
5098
|
-
integrations.githubPat = vault.githubPat;
|
|
5099
|
-
}
|
|
5100
|
-
if (vault.abletimeAccessToken && !integrations.abletimeAccessToken) {
|
|
5101
|
-
integrations.abletimeAccessToken = vault.abletimeAccessToken;
|
|
5102
|
-
}
|
|
5103
|
-
if (vault.abletimeRefreshToken && !integrations.abletimeRefreshToken) {
|
|
5104
|
-
integrations.abletimeRefreshToken = vault.abletimeRefreshToken;
|
|
5105
|
-
}
|
|
5106
|
-
if (vault.vercelToken && !integrations.vercelToken) {
|
|
5107
|
-
integrations.vercelToken = vault.vercelToken;
|
|
5108
|
-
}
|
|
5109
|
-
if (vault.supabaseAccessToken && !integrations.supabaseAccessToken) {
|
|
5110
|
-
integrations.supabaseAccessToken = vault.supabaseAccessToken;
|
|
5111
|
-
}
|
|
5112
|
-
if (vault.posthogPersonalApiKey && !integrations.posthogPersonalApiKey) {
|
|
5113
|
-
integrations.posthogPersonalApiKey = vault.posthogPersonalApiKey;
|
|
5114
|
-
}
|
|
5115
|
-
if (vault.sentryAuthToken && !integrations.sentryAuthToken) {
|
|
5116
|
-
integrations.sentryAuthToken = vault.sentryAuthToken;
|
|
5067
|
+
for (const key of INTEGRATION_VAULT_KEYS) {
|
|
5068
|
+
const stored = vault[key];
|
|
5069
|
+
if (stored && !integrations[key]) integrations[key] = stored;
|
|
5117
5070
|
}
|
|
5118
5071
|
return { ...disk, environment, integrations };
|
|
5119
5072
|
}
|
|
5120
5073
|
function persistSplit(settings) {
|
|
5121
5074
|
const integrations = { ...settings.integrations };
|
|
5122
|
-
const
|
|
5123
|
-
const
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
const slackAppToken = integrations.slackAppToken;
|
|
5128
|
-
const remoteHostSecret = integrations.remoteHostSecret;
|
|
5129
|
-
const githubPat = integrations.githubPat;
|
|
5130
|
-
const abletimeAccessToken = integrations.abletimeAccessToken;
|
|
5131
|
-
const abletimeRefreshToken = integrations.abletimeRefreshToken;
|
|
5132
|
-
const vercelToken = integrations.vercelToken;
|
|
5133
|
-
const supabaseAccessToken = integrations.supabaseAccessToken;
|
|
5134
|
-
const posthogPersonalApiKey = integrations.posthogPersonalApiKey;
|
|
5135
|
-
const sentryAuthToken = integrations.sentryAuthToken;
|
|
5136
|
-
delete integrations.linearApiKey;
|
|
5137
|
-
delete integrations.linearAccessToken;
|
|
5138
|
-
delete integrations.linearRefreshToken;
|
|
5139
|
-
delete integrations.linearClientSecret;
|
|
5140
|
-
delete integrations.slackClientSecret;
|
|
5141
|
-
delete integrations.slackAppToken;
|
|
5142
|
-
delete integrations.remoteHostSecret;
|
|
5143
|
-
delete integrations.githubPat;
|
|
5144
|
-
delete integrations.abletimeAccessToken;
|
|
5145
|
-
delete integrations.abletimeRefreshToken;
|
|
5146
|
-
delete integrations.vercelToken;
|
|
5147
|
-
delete integrations.supabaseAccessToken;
|
|
5148
|
-
delete integrations.posthogPersonalApiKey;
|
|
5149
|
-
delete integrations.sentryAuthToken;
|
|
5075
|
+
const vault = { environment: settings.environment };
|
|
5076
|
+
for (const key of INTEGRATION_VAULT_KEYS) {
|
|
5077
|
+
vault[key] = integrations[key];
|
|
5078
|
+
delete integrations[key];
|
|
5079
|
+
}
|
|
5150
5080
|
writePrivateFile2(
|
|
5151
5081
|
appSettingsPath(),
|
|
5152
5082
|
`${JSON.stringify({ ...settings, environment: {}, integrations }, null, 2)}
|
|
5153
5083
|
`
|
|
5154
5084
|
);
|
|
5155
|
-
saveSecretVault(
|
|
5156
|
-
linearApiKey,
|
|
5157
|
-
linearAccessToken,
|
|
5158
|
-
linearRefreshToken,
|
|
5159
|
-
linearClientSecret,
|
|
5160
|
-
slackClientSecret,
|
|
5161
|
-
slackAppToken,
|
|
5162
|
-
remoteHostSecret,
|
|
5163
|
-
githubPat,
|
|
5164
|
-
abletimeAccessToken,
|
|
5165
|
-
abletimeRefreshToken,
|
|
5166
|
-
vercelToken,
|
|
5167
|
-
supabaseAccessToken,
|
|
5168
|
-
posthogPersonalApiKey,
|
|
5169
|
-
sentryAuthToken,
|
|
5170
|
-
environment: settings.environment
|
|
5171
|
-
});
|
|
5085
|
+
saveSecretVault(vault);
|
|
5172
5086
|
}
|
|
5173
5087
|
function loadAppSettings() {
|
|
5174
5088
|
const disk = readSettingsFile();
|
|
@@ -5379,6 +5293,20 @@ function updateIntegrationsSettings(patch) {
|
|
|
5379
5293
|
integrations.remoteHostSecret = patch.remoteHostSecret.trim();
|
|
5380
5294
|
}
|
|
5381
5295
|
}
|
|
5296
|
+
if ("remoteAccountToken" in patch) {
|
|
5297
|
+
if (patch.remoteAccountToken == null || patch.remoteAccountToken.trim() === "") {
|
|
5298
|
+
delete integrations.remoteAccountToken;
|
|
5299
|
+
} else {
|
|
5300
|
+
integrations.remoteAccountToken = patch.remoteAccountToken.trim();
|
|
5301
|
+
}
|
|
5302
|
+
}
|
|
5303
|
+
if ("remoteAccountEmail" in patch) {
|
|
5304
|
+
if (patch.remoteAccountEmail == null || patch.remoteAccountEmail.trim() === "") {
|
|
5305
|
+
delete integrations.remoteAccountEmail;
|
|
5306
|
+
} else {
|
|
5307
|
+
integrations.remoteAccountEmail = patch.remoteAccountEmail.trim().toLowerCase();
|
|
5308
|
+
}
|
|
5309
|
+
}
|
|
5382
5310
|
if ("githubGitAuthMode" in patch) {
|
|
5383
5311
|
if (patch.githubGitAuthMode == null) {
|
|
5384
5312
|
delete integrations.githubGitAuthMode;
|
|
@@ -6117,7 +6045,7 @@ function childEnvWithAppSettings(extra) {
|
|
|
6117
6045
|
function harnessEnvKey(harness) {
|
|
6118
6046
|
return HARNESS_ENV_KEYS[harness];
|
|
6119
6047
|
}
|
|
6120
|
-
var import_node_crypto2, import_node_fs15, import_node_os6, import_node_path16, HARNESS_ENV_KEYS, DEFAULT_AGENTS, GITHUB_GIT_AUTH_MODES, FOLLOW_UP_BEHAVIORS, AGENT_DONE_SOUNDS, CHAT_TEXT_SCALES, CHAT_TEXT_SCALE_DEFAULT, CLOUD_CONNECT_AGENTS, ISSUE_SOURCES, GIT_AUTH_MODES, REVIEW_LABEL_MAX, EMPTY_SETTINGS, CONFIRM_ACCOUNT, CONFIRM_PROJECT, DEFAULT_CLI_BIN;
|
|
6048
|
+
var import_node_crypto2, import_node_fs15, import_node_os6, import_node_path16, HARNESS_ENV_KEYS, DEFAULT_AGENTS, GITHUB_GIT_AUTH_MODES, FOLLOW_UP_BEHAVIORS, AGENT_DONE_SOUNDS, CHAT_TEXT_SCALES, CHAT_TEXT_SCALE_DEFAULT, INTEGRATION_VAULT_KEYS, CLOUD_CONNECT_AGENTS, ISSUE_SOURCES, GIT_AUTH_MODES, REVIEW_LABEL_MAX, EMPTY_SETTINGS, CONFIRM_ACCOUNT, CONFIRM_PROJECT, DEFAULT_CLI_BIN;
|
|
6121
6049
|
var init_app_settings = __esm({
|
|
6122
6050
|
"src/store/app-settings.ts"() {
|
|
6123
6051
|
"use strict";
|
|
@@ -6170,6 +6098,23 @@ var init_app_settings = __esm({
|
|
|
6170
6098
|
];
|
|
6171
6099
|
CHAT_TEXT_SCALES = [1.2, 1.4];
|
|
6172
6100
|
CHAT_TEXT_SCALE_DEFAULT = 1.2;
|
|
6101
|
+
INTEGRATION_VAULT_KEYS = [
|
|
6102
|
+
"linearApiKey",
|
|
6103
|
+
"linearAccessToken",
|
|
6104
|
+
"linearRefreshToken",
|
|
6105
|
+
"linearClientSecret",
|
|
6106
|
+
"slackClientSecret",
|
|
6107
|
+
"slackAppToken",
|
|
6108
|
+
"remoteHostSecret",
|
|
6109
|
+
"remoteAccountToken",
|
|
6110
|
+
"githubPat",
|
|
6111
|
+
"abletimeAccessToken",
|
|
6112
|
+
"abletimeRefreshToken",
|
|
6113
|
+
"vercelToken",
|
|
6114
|
+
"supabaseAccessToken",
|
|
6115
|
+
"posthogPersonalApiKey",
|
|
6116
|
+
"sentryAuthToken"
|
|
6117
|
+
];
|
|
6173
6118
|
CLOUD_CONNECT_AGENTS = /* @__PURE__ */ new Set([
|
|
6174
6119
|
"claude",
|
|
6175
6120
|
"codex",
|
|
@@ -16064,17 +16009,7 @@ var init_worktree_run_ports = __esm({
|
|
|
16064
16009
|
}
|
|
16065
16010
|
});
|
|
16066
16011
|
|
|
16067
|
-
// src/mcp/
|
|
16068
|
-
function mcpWaitForJobTimeoutMs(requested) {
|
|
16069
|
-
return mcpWaitForTurnTimeoutMs(requested);
|
|
16070
|
-
}
|
|
16071
|
-
function sanitizeDetachedJobId(id) {
|
|
16072
|
-
const s = id.trim();
|
|
16073
|
-
if (!JOB_ID_RE.test(s)) {
|
|
16074
|
-
throw new Error(`detached-job id must be 1\u201364 chars [A-Za-z0-9._-], got ${JSON.stringify(id)}`);
|
|
16075
|
-
}
|
|
16076
|
-
return s;
|
|
16077
|
-
}
|
|
16012
|
+
// src/mcp/job-process.ts
|
|
16078
16013
|
function jobAlive(pid) {
|
|
16079
16014
|
if (!Number.isInteger(pid) || pid <= 0) return false;
|
|
16080
16015
|
try {
|
|
@@ -16098,6 +16033,23 @@ function jobTreeAlive(pid) {
|
|
|
16098
16033
|
if (pid == null) return false;
|
|
16099
16034
|
return jobAlive(pid) || processGroupAlive(pid);
|
|
16100
16035
|
}
|
|
16036
|
+
var init_job_process = __esm({
|
|
16037
|
+
"src/mcp/job-process.ts"() {
|
|
16038
|
+
"use strict";
|
|
16039
|
+
}
|
|
16040
|
+
});
|
|
16041
|
+
|
|
16042
|
+
// src/mcp/wait-for-job.ts
|
|
16043
|
+
function mcpWaitForJobTimeoutMs(requested) {
|
|
16044
|
+
return mcpWaitForTurnTimeoutMs(requested);
|
|
16045
|
+
}
|
|
16046
|
+
function sanitizeDetachedJobId(id) {
|
|
16047
|
+
const s = id.trim();
|
|
16048
|
+
if (!JOB_ID_RE.test(s)) {
|
|
16049
|
+
throw new Error(`detached-job id must be 1\u201364 chars [A-Za-z0-9._-], got ${JSON.stringify(id)}`);
|
|
16050
|
+
}
|
|
16051
|
+
return s;
|
|
16052
|
+
}
|
|
16101
16053
|
function readIntFile(file) {
|
|
16102
16054
|
if (!(0, import_node_fs45.existsSync)(file)) return null;
|
|
16103
16055
|
const n = Number.parseInt((0, import_node_fs45.readFileSync)(file, "utf8").trim(), 10);
|
|
@@ -16138,7 +16090,7 @@ function looksLikeDeferredDonePromise(text6) {
|
|
|
16138
16090
|
if (!t || t.length > DEFERRED_DONE_MAX_CHARS) return false;
|
|
16139
16091
|
const unquoted = t.replace(/`[^`]*`/g, " ").replace(/["“”][^"“”]*["“”]/g, " ").replace(/\s+/g, " ").trim();
|
|
16140
16092
|
if (!unquoted) return false;
|
|
16141
|
-
return /\b(i['’]?ll|i will)\s+let you know\b/i.test(unquoted) || /\blet you know when\b/i.test(unquoted) || /\b(check back|ping me)\s+when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(report|update you)\s+when\b/i.test(unquoted) || /\
|
|
16093
|
+
return /\b(i['’]?ll|i will)\s+let you know\b/i.test(unquoted) || /\blet you know when\b/i.test(unquoted) || /\b(check back|ping me)\s+when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(report|update you)\s+when\b/i.test(unquoted) || /\bwill notify (?:me|you) when\b/i.test(unquoted) || /\bi(?:['’]ll| will) be notified when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(?:keep|continue)\s+(?:watching|waiting|polling|checking)\b/i.test(
|
|
16142
16094
|
unquoted
|
|
16143
16095
|
) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
|
|
16144
16096
|
}
|
|
@@ -16182,7 +16134,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
|
|
|
16182
16134
|
function formatDeferredDoneContinuePrompt() {
|
|
16183
16135
|
return [
|
|
16184
16136
|
"You ended the turn after promising to report later, but no detached job is running.",
|
|
16185
|
-
"A native
|
|
16137
|
+
"A native CLI Task or bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
|
|
16186
16138
|
"If tests/pack/deploy still need to run: start once with detached-job.cjs, then loop wait_for_job until stillRunning is false (the log pane updates from wait JSON).",
|
|
16187
16139
|
"Do not say you will let the user know later."
|
|
16188
16140
|
].join(" ");
|
|
@@ -16407,6 +16359,7 @@ var init_wait_for_job = __esm({
|
|
|
16407
16359
|
import_node_fs45 = require("fs");
|
|
16408
16360
|
import_node_path45 = require("path");
|
|
16409
16361
|
init_workspace_scratch();
|
|
16362
|
+
init_job_process();
|
|
16410
16363
|
init_wait_for_turn();
|
|
16411
16364
|
MAX_JOB_CONTINUES = 8;
|
|
16412
16365
|
MAX_JOB_DELTA_LINES = 80;
|
|
@@ -22534,7 +22487,7 @@ var init_long_running = __esm({
|
|
|
22534
22487
|
|
|
22535
22488
|
A Sideboard or Cursor **worktree turn** SIGTERMs the agent shell (and its process group) when the user sends another message or the turn is interrupted. \`block_until_ms: 0\` is not enough \u2014 the child stays in that group.
|
|
22536
22489
|
|
|
22537
|
-
Do **not** ask the human to check back. Detach, then **wait** in 45s slices (MCP \`wait_for_job\`, same idea as \`wait_for_turn\`) until \`stillRunning\` is false. Do not end the turn
|
|
22490
|
+
Do **not** ask the human to check back. Detach, then **wait** in 45s slices (MCP \`wait_for_job\`, same idea as \`wait_for_turn\`) until \`stillRunning\` is false. Do not end the turn after starting a job \u2014 a native CLI Task or bash notify does **not** resume a Sideboard chat (Claude, Cursor, Codex, OpenCode).
|
|
22538
22491
|
|
|
22539
22492
|
## Tool
|
|
22540
22493
|
|
|
@@ -23181,7 +23134,7 @@ function formatPrGateDirective() {
|
|
|
23181
23134
|
return [
|
|
23182
23135
|
"If a goal is given (not after every push):",
|
|
23183
23136
|
"- Enter a watch-fix-push loop and stay in it until that goal is met or you are blocked (examples: \u201CGreptile 5/5\u201D, \u201CCI green\u201D, \u201Cuntil checks pass\u201D). Do not stop after one red run or one review cycle.",
|
|
23184
|
-
"- Wait with `/long-running`: detach `gh pr checks --watch` (add `-R <origin>` when needed), then loop `wait_for_job` until stillRunning is false. Do not end the turn \u2014 a
|
|
23137
|
+
"- Wait with `/long-running`: detach `gh pr checks --watch` (add `-R <origin>` when needed), then loop `wait_for_job` until stillRunning is false. Do not end the turn \u2014 a native CLI Task or bash notify does not resume this chat. Do not ask the human to poll.",
|
|
23185
23138
|
"- Greptile 5/5: wait for the greptile check; read the latest `N/5` from the PR body or Greptile\u2019s most recently *updated* issue comment; also fetch unresolved review comments / the \u201CPrompt to fix all with AI\u201D block. Done = **5/5 and zero unresolved Greptile comments**. If Greptile is idle, comment `@greptile review`. Cap about 5 iterations, then report leftovers. Do not merge unless asked."
|
|
23186
23139
|
].join("\n");
|
|
23187
23140
|
}
|
|
@@ -23214,7 +23167,7 @@ function formatLongRunningDirective(opts) {
|
|
|
23214
23167
|
}
|
|
23215
23168
|
function formatLongRunningReminder(opts) {
|
|
23216
23169
|
const invoke = formatDetachedJobInvoke(opts?.scriptPath);
|
|
23217
|
-
return `Long jobs: \`${invoke} start <id> -- <cmd>\`, loop wait_for_job (or detached-job wait). The log pane updates from wait JSON; present_artifact type=log is optional. stop_job if hanging or wrong. Do not say you will let the user know later \u2014 stay in the turn. A
|
|
23170
|
+
return `Long jobs: \`${invoke} start <id> -- <cmd>\`, loop wait_for_job (or detached-job wait). The log pane updates from wait JSON; present_artifact type=log is optional. stop_job if hanging or wrong. Do not say you will let the user know later \u2014 stay in the turn. A native CLI Task or bash notify does not resume this chat. Project Dev button: list_run_scripts / run_dev_script / stop_dev_script / get_run_log (UI-connected \u2014 not detached-job). ${formatDevAccessHint(opts?.activeRuns)}`;
|
|
23218
23171
|
}
|
|
23219
23172
|
function formatArtifactDirective() {
|
|
23220
23173
|
return [
|
|
@@ -24913,7 +24866,8 @@ var init_orchestrator = __esm({
|
|
|
24913
24866
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
24914
24867
|
}
|
|
24915
24868
|
const followUp = resolveSendFollowUp(current, opts?.followUp);
|
|
24916
|
-
const
|
|
24869
|
+
const explicit = opts?.attachments;
|
|
24870
|
+
const consumed = explicit !== void 0 ? { attachments: current.attachments, consumed: explicit } : consumeComposerAttachments(current);
|
|
24917
24871
|
const queued = appendQueuedItem(
|
|
24918
24872
|
current.queue,
|
|
24919
24873
|
current.queueAttachments,
|
|
@@ -24927,7 +24881,7 @@ var init_orchestrator = __esm({
|
|
|
24927
24881
|
const inFlight = this.activeTurns.has(thread.id) || this.startingTurns.has(thread.id) || current.status === "running";
|
|
24928
24882
|
shouldSteer = followUp === "steer" && (inFlight || current.queue.length > 0);
|
|
24929
24883
|
const patch = queued;
|
|
24930
|
-
if (consumed.consumed.length > 0) {
|
|
24884
|
+
if (explicit === void 0 && consumed.consumed.length > 0) {
|
|
24931
24885
|
patch.attachments = consumed.attachments;
|
|
24932
24886
|
}
|
|
24933
24887
|
if (!inFlight) patch.status = "queued";
|
package/dist/mcp/run-stdio.js
CHANGED
|
@@ -18,9 +18,9 @@ import {
|
|
|
18
18
|
searchAbleTimeTasks,
|
|
19
19
|
toAbleTimeIssueInfo,
|
|
20
20
|
updateAbleTimeTask
|
|
21
|
-
} from "../chunk-
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
21
|
+
} from "../chunk-R7HLXD4I.js";
|
|
22
|
+
import "../chunk-XKZAVGTT.js";
|
|
23
|
+
import "../chunk-IJDQKC5A.js";
|
|
24
24
|
import {
|
|
25
25
|
AGENT_GIT_ACTIONS,
|
|
26
26
|
BOARD_COLUMN_DEFS,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
sliceRunLogOutput,
|
|
53
53
|
syncBoardPins,
|
|
54
54
|
updateSchedule
|
|
55
|
-
} from "../chunk-
|
|
55
|
+
} from "../chunk-FELFTNH2.js";
|
|
56
56
|
import "../chunk-LX5R5JOR.js";
|
|
57
57
|
import {
|
|
58
58
|
PRESENT_PLAN_REQUIRES_PLAN_MODE,
|
|
@@ -71,7 +71,7 @@ import {
|
|
|
71
71
|
sideboardMcpProfile,
|
|
72
72
|
trustSystemCertificates,
|
|
73
73
|
worktreeMcpToolNames
|
|
74
|
-
} from "../chunk-
|
|
74
|
+
} from "../chunk-NT7RIWRR.js";
|
|
75
75
|
import "../chunk-TQRSVE7D.js";
|
|
76
76
|
import "../chunk-P2BSMNHB.js";
|
|
77
77
|
import {
|
|
@@ -86,7 +86,7 @@ import {
|
|
|
86
86
|
threadsSharingWorktree,
|
|
87
87
|
waitForDetachedJob,
|
|
88
88
|
waitForTurnToolResult
|
|
89
|
-
} from "../chunk-
|
|
89
|
+
} from "../chunk-HOMZKYHF.js";
|
|
90
90
|
import {
|
|
91
91
|
clipToolResultForStore,
|
|
92
92
|
isInternalAgentStatusText,
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
isCloudCoordinatorThread,
|
|
98
98
|
isOrchestratorThread,
|
|
99
99
|
listWorkspaces
|
|
100
|
-
} from "../chunk-
|
|
100
|
+
} from "../chunk-QTZO4LPU.js";
|
|
101
101
|
import {
|
|
102
102
|
canonicalizeRepoPath,
|
|
103
103
|
formatGhLandError,
|
|
@@ -108,7 +108,7 @@ import {
|
|
|
108
108
|
resolveListPrsOptions,
|
|
109
109
|
resolveRepoRoot,
|
|
110
110
|
warmGithubAgentAuth
|
|
111
|
-
} from "../chunk-
|
|
111
|
+
} from "../chunk-K7MWJLR7.js";
|
|
112
112
|
import {
|
|
113
113
|
CLI_DIR
|
|
114
114
|
} from "../chunk-N2WW62LF.js";
|
|
@@ -131,7 +131,7 @@ import {
|
|
|
131
131
|
resolveViewerProfileForRepo,
|
|
132
132
|
saveLinearOAuth,
|
|
133
133
|
writeViewerContext
|
|
134
|
-
} from "../chunk-
|
|
134
|
+
} from "../chunk-WRIMAEF2.js";
|
|
135
135
|
import "../chunk-NSTQ6QKD.js";
|
|
136
136
|
import {
|
|
137
137
|
dropNestedElectronEnvFromProcess
|
|
@@ -3860,7 +3860,7 @@ async function startMcpServer() {
|
|
|
3860
3860
|
);
|
|
3861
3861
|
}
|
|
3862
3862
|
try {
|
|
3863
|
-
const { maxConcurrentAgents } = await import("../app-settings-
|
|
3863
|
+
const { maxConcurrentAgents } = await import("../app-settings-EQQZQNYD.js");
|
|
3864
3864
|
orch.setMaxConcurrent(maxConcurrentAgents());
|
|
3865
3865
|
} catch {
|
|
3866
3866
|
}
|
|
@@ -4348,7 +4348,7 @@ async function startMcpServer() {
|
|
|
4348
4348
|
if (!worktreeProfile) {
|
|
4349
4349
|
registerConnectedIssueVendorTools(server);
|
|
4350
4350
|
const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-7JM5H5P3.js");
|
|
4351
|
-
const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-
|
|
4351
|
+
const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-EQQZQNYD.js");
|
|
4352
4352
|
const accountDefaults = resolveThreadDefaults();
|
|
4353
4353
|
const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
|
|
4354
4354
|
server.tool(
|
|
@@ -11,22 +11,22 @@ import {
|
|
|
11
11
|
resolveSendFollowUp,
|
|
12
12
|
startOrchestration,
|
|
13
13
|
waitForPidExit
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FELFTNH2.js";
|
|
15
15
|
import "./chunk-LX5R5JOR.js";
|
|
16
16
|
import "./chunk-4GK32AYX.js";
|
|
17
17
|
import "./chunk-5DZUWGKV.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-NT7RIWRR.js";
|
|
19
19
|
import "./chunk-TQRSVE7D.js";
|
|
20
20
|
import "./chunk-P2BSMNHB.js";
|
|
21
21
|
import "./chunk-VKQGAWHY.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-HOMZKYHF.js";
|
|
23
23
|
import "./chunk-UKSJO36E.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-QTZO4LPU.js";
|
|
25
|
+
import "./chunk-K7MWJLR7.js";
|
|
26
26
|
import "./chunk-N2WW62LF.js";
|
|
27
27
|
import "./chunk-DD67JWTN.js";
|
|
28
28
|
import "./chunk-2UG25RMK.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-WRIMAEF2.js";
|
|
30
30
|
import "./chunk-NSTQ6QKD.js";
|
|
31
31
|
import "./chunk-WWUABK6B.js";
|
|
32
32
|
import "./chunk-FJZWM2ON.js";
|
|
@@ -9,15 +9,15 @@ import {
|
|
|
9
9
|
resolveSendFollowUp,
|
|
10
10
|
startOrchestration,
|
|
11
11
|
waitForPidExit
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-SQOAFR2U.js";
|
|
13
|
+
import "./chunk-NIB2IZ6J.js";
|
|
14
14
|
import "./chunk-GWFVCCJZ.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-MGS5T2A3.js";
|
|
16
16
|
import "./chunk-FAGK33E2.js";
|
|
17
17
|
import "./chunk-7H655NEW.js";
|
|
18
18
|
import "./chunk-PGPSIEMW.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-A2G3ZBJS.js";
|
|
20
|
+
import "./chunk-IPPY3FG5.js";
|
|
21
21
|
import "./chunk-FWNL62VA.js";
|
|
22
22
|
import "./chunk-2P4XKWV2.js";
|
|
23
23
|
import "./chunk-ROPGQRPU.js";
|
|
@@ -29,7 +29,7 @@ import "./chunk-6K64FJDD.js";
|
|
|
29
29
|
import "./chunk-UWQ6UCIB.js";
|
|
30
30
|
import "./chunk-QVN2WOKJ.js";
|
|
31
31
|
import "./chunk-NYBFYFK7.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-YNTXWFXT.js";
|
|
33
33
|
import "./chunk-77WWLBCI.js";
|
|
34
34
|
import "./chunk-4TR3HZFT.js";
|
|
35
35
|
import "./chunk-WDRMZKVB.js";
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
primaryCheckoutFromLinkedWorktree,
|
|
8
8
|
removeWorkspace,
|
|
9
9
|
syncWorkspacesFromThreads
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-QTZO4LPU.js";
|
|
11
|
+
import "./chunk-K7MWJLR7.js";
|
|
12
12
|
import "./chunk-N2WW62LF.js";
|
|
13
13
|
import "./chunk-DD67JWTN.js";
|
|
14
14
|
import "./chunk-2UG25RMK.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-WRIMAEF2.js";
|
|
16
16
|
import "./chunk-NSTQ6QKD.js";
|
|
17
17
|
import "./chunk-WWUABK6B.js";
|
|
18
18
|
import "./chunk-FJZWM2ON.js";
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
primaryCheckoutFromLinkedWorktree,
|
|
6
6
|
removeWorkspace,
|
|
7
7
|
syncWorkspacesFromThreads
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-A2G3ZBJS.js";
|
|
9
|
+
import "./chunk-IPPY3FG5.js";
|
|
10
10
|
import "./chunk-FWNL62VA.js";
|
|
11
11
|
import "./chunk-2P4XKWV2.js";
|
|
12
12
|
import "./chunk-6K64FJDD.js";
|
|
13
13
|
import "./chunk-UWQ6UCIB.js";
|
|
14
14
|
import "./chunk-QVN2WOKJ.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-YNTXWFXT.js";
|
|
16
16
|
import "./chunk-77WWLBCI.js";
|
|
17
17
|
import "./chunk-4TR3HZFT.js";
|
|
18
18
|
import "./chunk-WDRMZKVB.js";
|
|
@@ -62,11 +62,11 @@ import {
|
|
|
62
62
|
worktreeDisplayLabelForGroup,
|
|
63
63
|
worktreeNameFromPath,
|
|
64
64
|
worktreeSlugForTicket
|
|
65
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-K7MWJLR7.js";
|
|
66
66
|
import "./chunk-N2WW62LF.js";
|
|
67
67
|
import "./chunk-DD67JWTN.js";
|
|
68
68
|
import "./chunk-2UG25RMK.js";
|
|
69
|
-
import "./chunk-
|
|
69
|
+
import "./chunk-WRIMAEF2.js";
|
|
70
70
|
import "./chunk-NSTQ6QKD.js";
|
|
71
71
|
import "./chunk-WWUABK6B.js";
|
|
72
72
|
import "./chunk-FJZWM2ON.js";
|
|
@@ -60,13 +60,13 @@ import {
|
|
|
60
60
|
worktreeDisplayLabelForGroup,
|
|
61
61
|
worktreeNameFromPath,
|
|
62
62
|
worktreeSlugForTicket
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-IPPY3FG5.js";
|
|
64
64
|
import "./chunk-FWNL62VA.js";
|
|
65
65
|
import "./chunk-2P4XKWV2.js";
|
|
66
66
|
import "./chunk-6K64FJDD.js";
|
|
67
67
|
import "./chunk-UWQ6UCIB.js";
|
|
68
68
|
import "./chunk-QVN2WOKJ.js";
|
|
69
|
-
import "./chunk-
|
|
69
|
+
import "./chunk-YNTXWFXT.js";
|
|
70
70
|
import "./chunk-77WWLBCI.js";
|
|
71
71
|
import "./chunk-4TR3HZFT.js";
|
|
72
72
|
import "./chunk-WDRMZKVB.js";
|