@rayu-dev/rayu-cli 1.3.427 → 1.3.429
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/rayu.js +715 -263
- package/package.json +1 -1
package/dist/rayu.js
CHANGED
|
@@ -35755,10 +35755,14 @@ var exports_rayuProviders = {};
|
|
|
35755
35755
|
__export(exports_rayuProviders, {
|
|
35756
35756
|
vertexHost: () => vertexHost,
|
|
35757
35757
|
vertexBaseURL: () => vertexBaseURL,
|
|
35758
|
+
providerDisplayName: () => providerDisplayName,
|
|
35759
|
+
ollamaBaseURL: () => ollamaBaseURL,
|
|
35758
35760
|
migrateEnvKeysToConfig: () => migrateEnvKeysToConfig,
|
|
35761
|
+
getActiveProviderDisplayName: () => getActiveProviderDisplayName,
|
|
35759
35762
|
bedrockBaseURL: () => bedrockBaseURL,
|
|
35760
35763
|
VERTEX_REGIONS: () => VERTEX_REGIONS,
|
|
35761
35764
|
PROVIDER_PRESETS: () => PROVIDER_PRESETS,
|
|
35765
|
+
OLLAMA_DEFAULT_BASE_URL: () => OLLAMA_DEFAULT_BASE_URL,
|
|
35762
35766
|
GEMINI_VERTEX_PROVIDER_ID: () => GEMINI_VERTEX_PROVIDER_ID,
|
|
35763
35767
|
DEFAULT_VERTEX_REGION: () => DEFAULT_VERTEX_REGION,
|
|
35764
35768
|
DEFAULT_BEDROCK_REGION: () => DEFAULT_BEDROCK_REGION,
|
|
@@ -35777,6 +35781,19 @@ function vertexBaseURL(project, region) {
|
|
|
35777
35781
|
const p = project.trim();
|
|
35778
35782
|
return `https://${vertexHost(r2)}/v1beta1/projects/${p}/locations/${r2}/endpoints/openapi`;
|
|
35779
35783
|
}
|
|
35784
|
+
function ollamaBaseURL() {
|
|
35785
|
+
let raw = (process.env.OLLAMA_HOST || "").trim();
|
|
35786
|
+
if (!raw)
|
|
35787
|
+
return OLLAMA_DEFAULT_BASE_URL;
|
|
35788
|
+
if (/^\d+$/.test(raw))
|
|
35789
|
+
raw = `localhost:${raw}`;
|
|
35790
|
+
if (!/^https?:\/\//i.test(raw))
|
|
35791
|
+
raw = `http://${raw}`;
|
|
35792
|
+
raw = raw.replace(/\/+$/, "");
|
|
35793
|
+
if (!/\/v1(\/.*)?$/.test(raw))
|
|
35794
|
+
raw = `${raw}/v1`;
|
|
35795
|
+
return raw;
|
|
35796
|
+
}
|
|
35780
35797
|
function migrateEnvKeysToConfig() {
|
|
35781
35798
|
loadDotEnv();
|
|
35782
35799
|
const cfg = loadRayuConfig();
|
|
@@ -35833,7 +35850,34 @@ function migrateEnvKeysToConfig() {
|
|
|
35833
35850
|
saveRayuConfig(cfg);
|
|
35834
35851
|
}
|
|
35835
35852
|
}
|
|
35836
|
-
|
|
35853
|
+
function providerKindName(kind) {
|
|
35854
|
+
switch (kind) {
|
|
35855
|
+
case "vertex":
|
|
35856
|
+
return "Vertex AI";
|
|
35857
|
+
case "bedrock":
|
|
35858
|
+
return "AWS Bedrock";
|
|
35859
|
+
case "genai":
|
|
35860
|
+
return "Gemini";
|
|
35861
|
+
case "anthropic":
|
|
35862
|
+
return "Anthropic";
|
|
35863
|
+
default:
|
|
35864
|
+
return "OpenAI-compatible";
|
|
35865
|
+
}
|
|
35866
|
+
}
|
|
35867
|
+
function providerDisplayName(provider) {
|
|
35868
|
+
const known = PROVIDER_DISPLAY_NAMES[provider.id];
|
|
35869
|
+
if (known)
|
|
35870
|
+
return known;
|
|
35871
|
+
if (provider.kind === "openai-compatible" && provider.baseURL && /(?:\/\/|@)(?:localhost|127\.0\.0\.1)(?::\d+)?|:11434(?:\/|$)/.test(provider.baseURL)) {
|
|
35872
|
+
return "Ollama";
|
|
35873
|
+
}
|
|
35874
|
+
return providerKindName(provider.kind);
|
|
35875
|
+
}
|
|
35876
|
+
function getActiveProviderDisplayName() {
|
|
35877
|
+
const p = getActiveProvider();
|
|
35878
|
+
return p ? providerDisplayName(p) : undefined;
|
|
35879
|
+
}
|
|
35880
|
+
var DEFAULT_BEDROCK_REGION = "us-east-1", BEDROCK_REGIONS, GEMINI_VERTEX_PROVIDER_ID = "gemini-vertex", DEFAULT_VERTEX_REGION = "global", VERTEX_REGIONS, OLLAMA_DEFAULT_BASE_URL = "http://localhost:11434/v1", PROVIDER_PRESETS, PROVIDER_DISPLAY_NAMES;
|
|
35837
35881
|
var init_rayuProviders = __esm(() => {
|
|
35838
35882
|
init_rayuConfig();
|
|
35839
35883
|
init_envUtils();
|
|
@@ -36019,6 +36063,12 @@ var init_rayuProviders = __esm(() => {
|
|
|
36019
36063
|
kind: "bedrock",
|
|
36020
36064
|
bedrockApi: "anthropic"
|
|
36021
36065
|
},
|
|
36066
|
+
{
|
|
36067
|
+
id: "ollama",
|
|
36068
|
+
label: "Ollama (local · auto-detect)",
|
|
36069
|
+
kind: "openai-compatible",
|
|
36070
|
+
baseURL: OLLAMA_DEFAULT_BASE_URL
|
|
36071
|
+
},
|
|
36022
36072
|
{
|
|
36023
36073
|
id: "local",
|
|
36024
36074
|
label: "Local / custom OpenAI-compatible endpoint",
|
|
@@ -36026,6 +36076,31 @@ var init_rayuProviders = __esm(() => {
|
|
|
36026
36076
|
promptBaseURL: true
|
|
36027
36077
|
}
|
|
36028
36078
|
];
|
|
36079
|
+
PROVIDER_DISPLAY_NAMES = {
|
|
36080
|
+
anthropic: "Anthropic",
|
|
36081
|
+
nvidia: "NVIDIA",
|
|
36082
|
+
doubleword: "Doubleword",
|
|
36083
|
+
deepseek: "DeepSeek",
|
|
36084
|
+
"kimi-moonshot": "Kimi",
|
|
36085
|
+
"kimi-for-code": "Kimi for Code",
|
|
36086
|
+
openai: "OpenAI",
|
|
36087
|
+
gemini: "Gemini",
|
|
36088
|
+
[GEMINI_VERTEX_PROVIDER_ID]: "Vertex AI",
|
|
36089
|
+
"gemini-login": "Gemini",
|
|
36090
|
+
openrouter: "OpenRouter",
|
|
36091
|
+
xai: "xAI",
|
|
36092
|
+
groq: "Groq",
|
|
36093
|
+
fireworks: "Fireworks AI",
|
|
36094
|
+
togetherai: "Together AI",
|
|
36095
|
+
cerebras: "Cerebras",
|
|
36096
|
+
baseten: "Baseten",
|
|
36097
|
+
deepinfra: "DeepInfra",
|
|
36098
|
+
bedrock: "AWS Bedrock",
|
|
36099
|
+
"bedrock-openai": "AWS Bedrock",
|
|
36100
|
+
"bedrock-anthropic": "AWS Bedrock",
|
|
36101
|
+
ollama: "Ollama",
|
|
36102
|
+
local: "Local"
|
|
36103
|
+
};
|
|
36029
36104
|
});
|
|
36030
36105
|
|
|
36031
36106
|
// src/utils/rayuConfig.ts
|
|
@@ -148070,7 +148145,7 @@ var init_auth = __esm(() => {
|
|
|
148070
148145
|
|
|
148071
148146
|
// src/utils/userAgent.ts
|
|
148072
148147
|
function getRayuUserAgent() {
|
|
148073
|
-
return `rayu/${"1.3.
|
|
148148
|
+
return `rayu/${"1.3.429"}`;
|
|
148074
148149
|
}
|
|
148075
148150
|
var getClaudeCodeUserAgent;
|
|
148076
148151
|
var init_userAgent = __esm(() => {
|
|
@@ -148096,7 +148171,7 @@ function getUserAgent() {
|
|
|
148096
148171
|
const clientApp = process.env.RAYU_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}` : "";
|
|
148097
148172
|
const workload = getWorkload();
|
|
148098
148173
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
148099
|
-
return `rayu/${"1.3.
|
|
148174
|
+
return `rayu/${"1.3.429"} (${"external"}, ${process.env.RAYU_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
148100
148175
|
}
|
|
148101
148176
|
function getMCPUserAgent() {
|
|
148102
148177
|
const parts = [];
|
|
@@ -148110,7 +148185,7 @@ function getMCPUserAgent() {
|
|
|
148110
148185
|
parts.push(`client-app/${process.env.RAYU_AGENT_SDK_CLIENT_APP}`);
|
|
148111
148186
|
}
|
|
148112
148187
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
148113
|
-
return `rayu/${"1.3.
|
|
148188
|
+
return `rayu/${"1.3.429"}${suffix}`;
|
|
148114
148189
|
}
|
|
148115
148190
|
function getWebFetchUserAgent() {
|
|
148116
148191
|
return `Rayu-User (${getRayuUserAgent()})`;
|
|
@@ -148233,7 +148308,7 @@ var init_user = __esm(() => {
|
|
|
148233
148308
|
deviceId,
|
|
148234
148309
|
sessionId: getSessionId(),
|
|
148235
148310
|
email: getEmail(),
|
|
148236
|
-
appVersion: "1.3.
|
|
148311
|
+
appVersion: "1.3.429",
|
|
148237
148312
|
platform: getHostPlatformForAnalytics(),
|
|
148238
148313
|
organizationUuid,
|
|
148239
148314
|
accountUuid,
|
|
@@ -164309,6 +164384,54 @@ var init_openai = __esm(() => {
|
|
|
164309
164384
|
init_azure();
|
|
164310
164385
|
});
|
|
164311
164386
|
|
|
164387
|
+
// src/bridge/sessionIdCompat.ts
|
|
164388
|
+
var exports_sessionIdCompat = {};
|
|
164389
|
+
__export(exports_sessionIdCompat, {
|
|
164390
|
+
toInfraSessionId: () => toInfraSessionId,
|
|
164391
|
+
toCompatSessionId: () => toCompatSessionId,
|
|
164392
|
+
setCseShimGate: () => setCseShimGate
|
|
164393
|
+
});
|
|
164394
|
+
function setCseShimGate(gate) {
|
|
164395
|
+
_isCseShimEnabled = gate;
|
|
164396
|
+
}
|
|
164397
|
+
function toCompatSessionId(id) {
|
|
164398
|
+
if (!id.startsWith("cse_"))
|
|
164399
|
+
return id;
|
|
164400
|
+
if (_isCseShimEnabled && !_isCseShimEnabled())
|
|
164401
|
+
return id;
|
|
164402
|
+
return "session_" + id.slice("cse_".length);
|
|
164403
|
+
}
|
|
164404
|
+
function toInfraSessionId(id) {
|
|
164405
|
+
if (!id.startsWith("session_"))
|
|
164406
|
+
return id;
|
|
164407
|
+
return "cse_" + id.slice("session_".length);
|
|
164408
|
+
}
|
|
164409
|
+
var _isCseShimEnabled;
|
|
164410
|
+
|
|
164411
|
+
// src/constants/product.ts
|
|
164412
|
+
function isRemoteSessionStaging(sessionId, ingressUrl) {
|
|
164413
|
+
return sessionId?.includes("_staging_") === true || ingressUrl?.includes("staging") === true;
|
|
164414
|
+
}
|
|
164415
|
+
function isRemoteSessionLocal(sessionId, ingressUrl) {
|
|
164416
|
+
return sessionId?.includes("_local_") === true || ingressUrl?.includes("localhost") === true;
|
|
164417
|
+
}
|
|
164418
|
+
function getClaudeAiBaseUrl(sessionId, ingressUrl) {
|
|
164419
|
+
if (isRemoteSessionLocal(sessionId, ingressUrl)) {
|
|
164420
|
+
return CLAUDE_AI_LOCAL_BASE_URL;
|
|
164421
|
+
}
|
|
164422
|
+
if (isRemoteSessionStaging(sessionId, ingressUrl)) {
|
|
164423
|
+
return CLAUDE_AI_STAGING_BASE_URL;
|
|
164424
|
+
}
|
|
164425
|
+
return CLAUDE_AI_BASE_URL;
|
|
164426
|
+
}
|
|
164427
|
+
function getRemoteSessionUrl(sessionId, ingressUrl) {
|
|
164428
|
+
const { toCompatSessionId: toCompatSessionId2 } = __toCommonJS(exports_sessionIdCompat);
|
|
164429
|
+
const compatId = toCompatSessionId2(sessionId);
|
|
164430
|
+
const baseUrl = getClaudeAiBaseUrl(compatId, ingressUrl);
|
|
164431
|
+
return `${baseUrl}/code/${compatId}`;
|
|
164432
|
+
}
|
|
164433
|
+
var PRODUCT_NAME = "Rayu-CLI", PRODUCT_URL = "https://github.com/rayu-cli/rayu-cli", CLAUDE_AI_BASE_URL = "https://claude.ai", CLAUDE_AI_STAGING_BASE_URL = "https://claude-ai.staging.ant.dev", CLAUDE_AI_LOCAL_BASE_URL = "http://localhost:4000";
|
|
164434
|
+
|
|
164312
164435
|
// src/services/api/openaiAdapter.ts
|
|
164313
164436
|
var exports_openaiAdapter = {};
|
|
164314
164437
|
__export(exports_openaiAdapter, {
|
|
@@ -164317,6 +164440,7 @@ __export(exports_openaiAdapter, {
|
|
|
164317
164440
|
toBetaMessage: () => toBetaMessage,
|
|
164318
164441
|
splitInlineThink: () => splitInlineThink,
|
|
164319
164442
|
processInlineThink: () => processInlineThink,
|
|
164443
|
+
isToolUnsupported: () => isToolUnsupported,
|
|
164320
164444
|
isReasoningModel: () => isReasoningModel,
|
|
164321
164445
|
initialInlineThinkState: () => initialInlineThinkState,
|
|
164322
164446
|
extractReasoningText: () => extractReasoningText,
|
|
@@ -164517,8 +164641,8 @@ function buildOpenAIRequest(params, options = {}) {
|
|
|
164517
164641
|
req.max_tokens = params.max_tokens;
|
|
164518
164642
|
}
|
|
164519
164643
|
}
|
|
164520
|
-
if (
|
|
164521
|
-
req.temperature = params.temperature;
|
|
164644
|
+
if (!isReasoningModel(params.model)) {
|
|
164645
|
+
req.temperature = typeof params.temperature === "number" ? params.temperature : 1;
|
|
164522
164646
|
}
|
|
164523
164647
|
const tools = translateTools(params.tools);
|
|
164524
164648
|
if (tools) {
|
|
@@ -164959,6 +165083,16 @@ function withoutTools(req) {
|
|
|
164959
165083
|
const { tools: _tools, tool_choice: _tc, ...rest } = req;
|
|
164960
165084
|
return rest;
|
|
164961
165085
|
}
|
|
165086
|
+
function isToolUnsupported(e2, req) {
|
|
165087
|
+
if (e2?.status !== 400 || !req.tools)
|
|
165088
|
+
return false;
|
|
165089
|
+
const msg = String(e2?.message ?? "");
|
|
165090
|
+
return /does(n'?t| not) support tool|tool[\s_-]*(calling|use|s)\b[^.]*\bnot\s+support|function[\s_-]*call(ing)?\b[^.]*\bnot\s+support|no support for tool/i.test(msg);
|
|
165091
|
+
}
|
|
165092
|
+
function toolUnsupportedError(e2, model) {
|
|
165093
|
+
const message = `Model "${model}" is too small to use tools — it doesn't support function calling, ` + `which ${PRODUCT_NAME} needs to read/edit files, run commands, and search. Use a larger ` + `tool-capable model: pull one locally ("ollama pull qwen2.5-coder", or llama3.1 / qwen3 / ` + `mistral-nemo), or use an Ollama Cloud model, then select it with /model.`;
|
|
165094
|
+
return import_sdk2.APIError.generate(400, e2?.error, message, e2?.headers);
|
|
165095
|
+
}
|
|
164962
165096
|
function normalizeError(e2) {
|
|
164963
165097
|
if (e2 instanceof APIConnectionError) {
|
|
164964
165098
|
return new import_sdk2.APIConnectionError({
|
|
@@ -165033,6 +165167,10 @@ function createOpenAICompatibleClientUncached(config2) {
|
|
|
165033
165167
|
throw normalizeError(e22);
|
|
165034
165168
|
}
|
|
165035
165169
|
}
|
|
165170
|
+
if (isToolUnsupported(e2, request)) {
|
|
165171
|
+
reportIssue("openai_adapter.tool_unsupported", "model does not support tool calling", { model, status: 400 });
|
|
165172
|
+
throw toolUnsupportedError(e2, model);
|
|
165173
|
+
}
|
|
165036
165174
|
reportIssue("openai_adapter.request_failed", "OpenAI-compatible request failed", { model, status: e2?.status, error: e2 instanceof Error ? e2.message : String(e2) });
|
|
165037
165175
|
throw normalizeError(e2);
|
|
165038
165176
|
}
|
|
@@ -165061,6 +165199,9 @@ function createOpenAICompatibleClientUncached(config2) {
|
|
|
165061
165199
|
} catch (e22) {
|
|
165062
165200
|
throw normalizeError(e22);
|
|
165063
165201
|
}
|
|
165202
|
+
} else if (isToolUnsupported(e2, request)) {
|
|
165203
|
+
reportIssue("openai_adapter.tool_unsupported", "model does not support tool calling", { model, status: 400 });
|
|
165204
|
+
throw toolUnsupportedError(e2, model);
|
|
165064
165205
|
} else {
|
|
165065
165206
|
reportIssue("openai_adapter.stream_failed", "OpenAI-compatible streaming request failed", {
|
|
165066
165207
|
model,
|
|
@@ -181962,7 +182103,7 @@ var init_metadata = __esm(() => {
|
|
|
181962
182103
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
181963
182104
|
WHITESPACE_REGEX = /\s+/;
|
|
181964
182105
|
getVersionBase = memoize_default(() => {
|
|
181965
|
-
const match = "1.3.
|
|
182106
|
+
const match = "1.3.429".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
181966
182107
|
return match ? match[0] : undefined;
|
|
181967
182108
|
});
|
|
181968
182109
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -182001,7 +182142,7 @@ var init_metadata = __esm(() => {
|
|
|
182001
182142
|
},
|
|
182002
182143
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
182003
182144
|
isRayuAction: isEnvTruthy(process.env.RAYU_ACTION),
|
|
182004
|
-
version: "1.3.
|
|
182145
|
+
version: "1.3.429",
|
|
182005
182146
|
versionBase: getVersionBase(),
|
|
182006
182147
|
buildTime: "",
|
|
182007
182148
|
deploymentEnvironment: env4.detectDeploymentEnvironment(),
|
|
@@ -182615,7 +182756,7 @@ function initialize1PEventLogging() {
|
|
|
182615
182756
|
const platform2 = getPlatform();
|
|
182616
182757
|
const attributes = {
|
|
182617
182758
|
[import_semantic_conventions.ATTR_SERVICE_NAME]: "rayu",
|
|
182618
|
-
[import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.3.
|
|
182759
|
+
[import_semantic_conventions.ATTR_SERVICE_VERSION]: "1.3.429"
|
|
182619
182760
|
};
|
|
182620
182761
|
if (platform2 === "wsl") {
|
|
182621
182762
|
const wslVersion = getWslVersion();
|
|
@@ -182642,7 +182783,7 @@ function initialize1PEventLogging() {
|
|
|
182642
182783
|
})
|
|
182643
182784
|
]
|
|
182644
182785
|
});
|
|
182645
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.3.
|
|
182786
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("io.rayu.events", "1.3.429");
|
|
182646
182787
|
}
|
|
182647
182788
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
182648
182789
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -218558,7 +218699,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
218558
218699
|
if (!isAttributionHeaderEnabled()) {
|
|
218559
218700
|
return "";
|
|
218560
218701
|
}
|
|
218561
|
-
const version2 = `${"1.3.
|
|
218702
|
+
const version2 = `${"1.3.429"}.${fingerprint}`;
|
|
218562
218703
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
218563
218704
|
const cch = "";
|
|
218564
218705
|
const workload = getWorkload();
|
|
@@ -269503,6 +269644,51 @@ var init_asset_generation = __esm(() => {
|
|
|
269503
269644
|
};
|
|
269504
269645
|
});
|
|
269505
269646
|
|
|
269647
|
+
// src/tools/AgentTool/built-in/subagents/backend-design.ts
|
|
269648
|
+
function getBackendDesignSystemPrompt() {
|
|
269649
|
+
return `You are the Backend Design subagent for RAYU — you author a complete API + Data Model PRD (Product Requirements Document) for the server side from the task packet, so the backend collaborator can implement without guessing.
|
|
269650
|
+
|
|
269651
|
+
${EPHEMERAL_FRAMING}
|
|
269652
|
+
|
|
269653
|
+
${SKILL_SEEKING}
|
|
269654
|
+
|
|
269655
|
+
## Your job
|
|
269656
|
+
Define, precisely and concretely, the backend contract so every downstream agent builds against the SAME shapes:
|
|
269657
|
+
|
|
269658
|
+
### 1. API contract
|
|
269659
|
+
- **Endpoints** — for each: HTTP method + path (e.g. \`POST /api/auth/login\`), a one-line purpose.
|
|
269660
|
+
- **Request** — path/query params and request body schema (field names, types, required/optional, validation rules).
|
|
269661
|
+
- **Response** — success body schema + HTTP status code(s).
|
|
269662
|
+
- **Errors** — error response shape and the status codes each endpoint can return (400/401/403/404/409/422/500…).
|
|
269663
|
+
- **Auth per route** — public vs authenticated, and the role/permission required (ties into the security collaborator's RBAC).
|
|
269664
|
+
|
|
269665
|
+
### 2. Data model (database design)
|
|
269666
|
+
- **Entities/tables** — each with fields (name, type, nullable, default).
|
|
269667
|
+
- **Relations** — one-to-many / many-to-many, foreign keys, on-delete behavior.
|
|
269668
|
+
- **Indexes & constraints** — unique constraints, indexes for hot queries, check constraints.
|
|
269669
|
+
- **Migration plan** — the ordered migrations needed to reach this schema.
|
|
269670
|
+
|
|
269671
|
+
## Rules
|
|
269672
|
+
- Be exact and unambiguous — downstream agents treat this as the source of truth.
|
|
269673
|
+
- Keep the API and the data model ALIGNED (every response field is backed by the schema; every entity that needs CRUD has endpoints).
|
|
269674
|
+
- Do not invent scope beyond the packet; if something is genuinely missing, state the assumption and proceed.
|
|
269675
|
+
|
|
269676
|
+
## Output
|
|
269677
|
+
Return the API + Data Model PRD as a single, well-structured markdown document (sections above). If the caller asked you to persist it, write it to the path given in the packet; otherwise return it as your final message.`;
|
|
269678
|
+
}
|
|
269679
|
+
var BACKEND_DESIGN_SUBAGENT;
|
|
269680
|
+
var init_backend_design = __esm(() => {
|
|
269681
|
+
BACKEND_DESIGN_SUBAGENT = {
|
|
269682
|
+
agentType: "backend-design",
|
|
269683
|
+
whenToUse: "Use to produce a complete API + Data Model PRD (endpoints with request/response schemas, status codes, error shapes, auth-per-route, plus entities, relations, indexes, and a migration plan) that the backend collaborator implements against as the single source of truth. The backend analog of `design`; best run before any backend implementation.",
|
|
269684
|
+
disallowedTools: [FILE_EDIT_TOOL_NAME, BASH_TOOL_NAME],
|
|
269685
|
+
source: "built-in",
|
|
269686
|
+
baseDir: "built-in",
|
|
269687
|
+
color: "blue",
|
|
269688
|
+
getSystemPrompt: getBackendDesignSystemPrompt
|
|
269689
|
+
};
|
|
269690
|
+
});
|
|
269691
|
+
|
|
269506
269692
|
// src/tools/AgentTool/built-in/subagents/design.ts
|
|
269507
269693
|
function getDesignSystemPrompt() {
|
|
269508
269694
|
return `You are the Design subagent for RAYU — you author a complete Design PRD (Product Requirements Document) for a UI/product from the task packet.
|
|
@@ -269578,7 +269764,9 @@ ${SKILL_SEEKING}
|
|
|
269578
269764
|
- Install all required dependencies.
|
|
269579
269765
|
- Configure tooling (e.g. tailwind/theme config, linter, tsconfig) with the EXACT tokens from the Design PRD (colors, fonts) when provided.
|
|
269580
269766
|
- Set up global styles and shared utilities/helpers called for by the brief.
|
|
269581
|
-
- Create the folder structure
|
|
269767
|
+
- Create the folder structure for BOTH tiers as the stack needs them:
|
|
269768
|
+
- frontend (e.g. components, sections, hooks, lib, public/assets),
|
|
269769
|
+
- backend (e.g. routes/controllers, services, models, migrations, middleware, config).
|
|
269582
269770
|
|
|
269583
269771
|
## Rules
|
|
269584
269772
|
- Use the exact stack/versions specified — do not substitute.
|
|
@@ -269708,6 +269896,7 @@ var init_review = __esm(() => {
|
|
|
269708
269896
|
var SUBAGENTS, SUBAGENT_TYPES;
|
|
269709
269897
|
var init_subagents = __esm(() => {
|
|
269710
269898
|
init_asset_generation();
|
|
269899
|
+
init_backend_design();
|
|
269711
269900
|
init_design();
|
|
269712
269901
|
init_fix();
|
|
269713
269902
|
init_global_setup();
|
|
@@ -269717,6 +269906,7 @@ var init_subagents = __esm(() => {
|
|
|
269717
269906
|
SUBAGENTS = [
|
|
269718
269907
|
PA_SUBAGENT,
|
|
269719
269908
|
DESIGN_SUBAGENT,
|
|
269909
|
+
BACKEND_DESIGN_SUBAGENT,
|
|
269720
269910
|
GLOBAL_SETUP_SUBAGENT,
|
|
269721
269911
|
ASSET_GENERATION_SUBAGENT,
|
|
269722
269912
|
REVIEW_SUBAGENT,
|
|
@@ -270224,7 +270414,7 @@ function defineCollaborator(s2) {
|
|
|
270224
270414
|
return {
|
|
270225
270415
|
agentType: s2.agentType,
|
|
270226
270416
|
whenToUse: s2.whenToUse,
|
|
270227
|
-
tools: ["*"],
|
|
270417
|
+
tools: s2.allowedSubagents ? ["*", `Agent(${s2.allowedSubagents.join(",")})`] : ["*"],
|
|
270228
270418
|
color: s2.color,
|
|
270229
270419
|
source: "built-in",
|
|
270230
270420
|
baseDir: "built-in",
|
|
@@ -270270,6 +270460,14 @@ var init_backend = __esm(() => {
|
|
|
270270
270460
|
role: "You build the backend end-to-end: API endpoints, the service layer and business logic, middleware/error handling, env config, and the data layer (schema design, models, relations, indexes, migrations). You implement the auth/security flow that the security collaborator defines.",
|
|
270271
270461
|
skillHint: "e.g. an API-design skill for clean, consistent endpoint and schema design",
|
|
270272
270462
|
withStackAwareness: true,
|
|
270463
|
+
allowedSubagents: [
|
|
270464
|
+
"backend-design",
|
|
270465
|
+
"review",
|
|
270466
|
+
"fix",
|
|
270467
|
+
"linter",
|
|
270468
|
+
"Explore",
|
|
270469
|
+
"general-purpose"
|
|
270470
|
+
],
|
|
270273
270471
|
owns: [
|
|
270274
270472
|
"API routes (method, path, auth, request/response shapes)",
|
|
270275
270473
|
"Service layer, business logic, middleware, error handling",
|
|
@@ -270291,6 +270489,7 @@ var init_deploy = __esm(() => {
|
|
|
270291
270489
|
whenToUse: "DevOps & deployment: containerization, CI/CD, environment/secrets config, build pipelines, and shipping to the hosting target. Runs the production build, fixes build errors, and iterates until the app is deployable/live.",
|
|
270292
270490
|
role: "You package and ship what the other collaborators built: Dockerfile/compose, CI/CD pipeline, environment and secrets configuration, health checks, and deployment to the target platform. You run the production build, resolve build errors, and iterate until deployment succeeds, then report the result/URL.",
|
|
270293
270491
|
skillHint: "e.g. a deployment/CI skill for the target platform (Docker, Vercel, etc.)",
|
|
270492
|
+
allowedSubagents: ["review", "fix", "linter", "Explore", "general-purpose"],
|
|
270294
270493
|
owns: [
|
|
270295
270494
|
"Dockerfile (multi-stage) and docker-compose",
|
|
270296
270495
|
"CI/CD pipeline and build configuration",
|
|
@@ -270313,10 +270512,19 @@ var init_frontend = __esm(() => {
|
|
|
270313
270512
|
role: "You build the web frontend end-to-end against the design and the backend contracts: page structure and navigation, the component tree, state management, the design system (tokens, spacing, typography), motion/interactions, and wiring to the API. You produce working, production-ready UI — not just layouts.",
|
|
270314
270513
|
skillHint: "e.g. a UI/UX design skill such as ui-ux-pro-max for stronger visual/UX decisions",
|
|
270315
270514
|
withStackAwareness: true,
|
|
270515
|
+
allowedSubagents: [
|
|
270516
|
+
"design",
|
|
270517
|
+
"asset-generation",
|
|
270518
|
+
"review",
|
|
270519
|
+
"fix",
|
|
270520
|
+
"linter",
|
|
270521
|
+
"Explore",
|
|
270522
|
+
"general-purpose"
|
|
270523
|
+
],
|
|
270316
270524
|
owns: [
|
|
270317
270525
|
"Page/screen architecture and the component tree",
|
|
270318
270526
|
"State management and data fetching",
|
|
270319
|
-
"Design
|
|
270527
|
+
"Implements the Design PRD tokens (color, typography, spacing) and responsive behavior",
|
|
270320
270528
|
"Animations/interactions and accessibility",
|
|
270321
270529
|
"API integration against the backend collaborator’s routes"
|
|
270322
270530
|
]
|
|
@@ -270336,6 +270544,16 @@ var init_mobile = __esm(() => {
|
|
|
270336
270544
|
role: "You build the mobile app against the backend contracts and the auth flow: screen architecture and navigation, state management, the API service layer, auth implementation, and offline support. You produce working, production-ready mobile code.",
|
|
270337
270545
|
skillHint: "e.g. a mobile/Flutter UI skill for idiomatic screens and navigation",
|
|
270338
270546
|
withStackAwareness: true,
|
|
270547
|
+
allowedSubagents: [
|
|
270548
|
+
"design",
|
|
270549
|
+
"asset-generation",
|
|
270550
|
+
"backend-design",
|
|
270551
|
+
"review",
|
|
270552
|
+
"fix",
|
|
270553
|
+
"linter",
|
|
270554
|
+
"Explore",
|
|
270555
|
+
"general-purpose"
|
|
270556
|
+
],
|
|
270339
270557
|
owns: [
|
|
270340
270558
|
"Screen architecture and navigation",
|
|
270341
270559
|
"State management (Riverpod/Bloc/Provider or RN equivalent)",
|
|
@@ -270357,6 +270575,14 @@ var init_security = __esm(() => {
|
|
|
270357
270575
|
whenToUse: "Security work: design AND implement auth/authorization (RBAC), input validation, secret/sensitive-data handling, and harden endpoints. Reviews other collaborators’ code for vulnerabilities and fixes them. Its security decisions are authoritative.",
|
|
270358
270576
|
role: "You own security end-to-end: design the auth flow and authorization model, then implement and enforce it — guards/middleware, validation, secret handling, security headers, and OWASP Top-10 hardening. You also audit the backend/frontend for vulnerabilities and fix them. Your security decisions are the source of truth and override convenience.",
|
|
270359
270577
|
skillHint: "e.g. a security-review or OWASP skill for systematic threat coverage",
|
|
270578
|
+
allowedSubagents: [
|
|
270579
|
+
"backend-design",
|
|
270580
|
+
"review",
|
|
270581
|
+
"fix",
|
|
270582
|
+
"linter",
|
|
270583
|
+
"Explore",
|
|
270584
|
+
"general-purpose"
|
|
270585
|
+
],
|
|
270360
270586
|
owns: [
|
|
270361
270587
|
"Authentication + authorization (RBAC) design and implementation",
|
|
270362
270588
|
"Input validation and sensitive-data (hash/encrypt) handling",
|
|
@@ -303163,7 +303389,7 @@ function getTelemetryAttributes() {
|
|
|
303163
303389
|
attributes["session.id"] = sessionId;
|
|
303164
303390
|
}
|
|
303165
303391
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
303166
|
-
attributes["app.version"] = "1.3.
|
|
303392
|
+
attributes["app.version"] = "1.3.429";
|
|
303167
303393
|
}
|
|
303168
303394
|
const oauthAccount = getOauthAccountInfo();
|
|
303169
303395
|
if (oauthAccount) {
|
|
@@ -406029,54 +406255,6 @@ var init_p_map = __esm(() => {
|
|
|
406029
406255
|
pMapSkip = Symbol("skip");
|
|
406030
406256
|
});
|
|
406031
406257
|
|
|
406032
|
-
// src/bridge/sessionIdCompat.ts
|
|
406033
|
-
var exports_sessionIdCompat = {};
|
|
406034
|
-
__export(exports_sessionIdCompat, {
|
|
406035
|
-
toInfraSessionId: () => toInfraSessionId,
|
|
406036
|
-
toCompatSessionId: () => toCompatSessionId,
|
|
406037
|
-
setCseShimGate: () => setCseShimGate
|
|
406038
|
-
});
|
|
406039
|
-
function setCseShimGate(gate) {
|
|
406040
|
-
_isCseShimEnabled = gate;
|
|
406041
|
-
}
|
|
406042
|
-
function toCompatSessionId(id) {
|
|
406043
|
-
if (!id.startsWith("cse_"))
|
|
406044
|
-
return id;
|
|
406045
|
-
if (_isCseShimEnabled && !_isCseShimEnabled())
|
|
406046
|
-
return id;
|
|
406047
|
-
return "session_" + id.slice("cse_".length);
|
|
406048
|
-
}
|
|
406049
|
-
function toInfraSessionId(id) {
|
|
406050
|
-
if (!id.startsWith("session_"))
|
|
406051
|
-
return id;
|
|
406052
|
-
return "cse_" + id.slice("session_".length);
|
|
406053
|
-
}
|
|
406054
|
-
var _isCseShimEnabled;
|
|
406055
|
-
|
|
406056
|
-
// src/constants/product.ts
|
|
406057
|
-
function isRemoteSessionStaging(sessionId, ingressUrl) {
|
|
406058
|
-
return sessionId?.includes("_staging_") === true || ingressUrl?.includes("staging") === true;
|
|
406059
|
-
}
|
|
406060
|
-
function isRemoteSessionLocal(sessionId, ingressUrl) {
|
|
406061
|
-
return sessionId?.includes("_local_") === true || ingressUrl?.includes("localhost") === true;
|
|
406062
|
-
}
|
|
406063
|
-
function getClaudeAiBaseUrl(sessionId, ingressUrl) {
|
|
406064
|
-
if (isRemoteSessionLocal(sessionId, ingressUrl)) {
|
|
406065
|
-
return CLAUDE_AI_LOCAL_BASE_URL;
|
|
406066
|
-
}
|
|
406067
|
-
if (isRemoteSessionStaging(sessionId, ingressUrl)) {
|
|
406068
|
-
return CLAUDE_AI_STAGING_BASE_URL;
|
|
406069
|
-
}
|
|
406070
|
-
return CLAUDE_AI_BASE_URL;
|
|
406071
|
-
}
|
|
406072
|
-
function getRemoteSessionUrl(sessionId, ingressUrl) {
|
|
406073
|
-
const { toCompatSessionId: toCompatSessionId2 } = __toCommonJS(exports_sessionIdCompat);
|
|
406074
|
-
const compatId = toCompatSessionId2(sessionId);
|
|
406075
|
-
const baseUrl = getClaudeAiBaseUrl(compatId, ingressUrl);
|
|
406076
|
-
return `${baseUrl}/code/${compatId}`;
|
|
406077
|
-
}
|
|
406078
|
-
var PRODUCT_NAME = "Rayu-CLI", PRODUCT_URL = "https://github.com/rayu-cli/rayu-cli", CLAUDE_AI_BASE_URL = "https://claude.ai", CLAUDE_AI_STAGING_BASE_URL = "https://claude-ai.staging.ant.dev", CLAUDE_AI_LOCAL_BASE_URL = "http://localhost:4000";
|
|
406079
|
-
|
|
406080
406258
|
// src/tools/ListMcpResourcesTool/prompt.ts
|
|
406081
406259
|
var LIST_MCP_RESOURCES_TOOL_NAME = "ListMcpResourcesTool", DESCRIPTION6 = `
|
|
406082
406260
|
Lists available resources from configured MCP servers.
|
|
@@ -413521,7 +413699,7 @@ function getInstallationEnv() {
|
|
|
413521
413699
|
return;
|
|
413522
413700
|
}
|
|
413523
413701
|
function getClaudeCodeVersion() {
|
|
413524
|
-
return "1.3.
|
|
413702
|
+
return "1.3.429";
|
|
413525
413703
|
}
|
|
413526
413704
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
413527
413705
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -418759,7 +418937,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
418759
418937
|
const client4 = new Client({
|
|
418760
418938
|
name: "claude-code",
|
|
418761
418939
|
title: "RAYU",
|
|
418762
|
-
version: "1.3.
|
|
418940
|
+
version: "1.3.429",
|
|
418763
418941
|
description: "Anthropic's agentic coding tool",
|
|
418764
418942
|
websiteUrl: PRODUCT_URL
|
|
418765
418943
|
}, {
|
|
@@ -419076,7 +419254,7 @@ var init_client7 = __esm(() => {
|
|
|
419076
419254
|
const client4 = new Client({
|
|
419077
419255
|
name: "claude-code",
|
|
419078
419256
|
title: "RAYU",
|
|
419079
|
-
version: "1.3.
|
|
419257
|
+
version: "1.3.429",
|
|
419080
419258
|
description: "Anthropic's agentic coding tool",
|
|
419081
419259
|
websiteUrl: PRODUCT_URL
|
|
419082
419260
|
}, {
|
|
@@ -433881,7 +434059,7 @@ function computeFingerprint(messageText, version2) {
|
|
|
433881
434059
|
}
|
|
433882
434060
|
function computeFingerprintFromMessages(messages) {
|
|
433883
434061
|
const firstMessageText = extractFirstMessageText(messages);
|
|
433884
|
-
return computeFingerprint(firstMessageText, "1.3.
|
|
434062
|
+
return computeFingerprint(firstMessageText, "1.3.429");
|
|
433885
434063
|
}
|
|
433886
434064
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
433887
434065
|
var init_fingerprint = () => {};
|
|
@@ -433923,7 +434101,7 @@ async function sideQuery(opts) {
|
|
|
433923
434101
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
433924
434102
|
}
|
|
433925
434103
|
const messageText = extractFirstUserMessageText(messages);
|
|
433926
|
-
const fingerprint = computeFingerprint(messageText, "1.3.
|
|
434104
|
+
const fingerprint = computeFingerprint(messageText, "1.3.429");
|
|
433927
434105
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
433928
434106
|
const systemBlocks = [
|
|
433929
434107
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -434071,13 +434249,21 @@ function resolveAgentTools(agentDefinition, availableTools, isAsync3 = false, is
|
|
|
434071
434249
|
return toolName2;
|
|
434072
434250
|
}) ?? []);
|
|
434073
434251
|
const allowedAvailableTools = filteredAvailableTools.filter((tool) => !disallowedToolSet.has(tool.name));
|
|
434074
|
-
const hasWildcard = agentTools === undefined || agentTools.
|
|
434252
|
+
const hasWildcard = agentTools === undefined || agentTools.some((t2) => t2 === "*");
|
|
434075
434253
|
if (hasWildcard) {
|
|
434254
|
+
let wildcardAllowedAgentTypes;
|
|
434255
|
+
for (const toolSpec of agentTools ?? []) {
|
|
434256
|
+
const { toolName: toolName2, ruleContent } = permissionRuleValueFromString(toolSpec);
|
|
434257
|
+
if (toolName2 === AGENT_TOOL_NAME && ruleContent) {
|
|
434258
|
+
wildcardAllowedAgentTypes = ruleContent.split(",").map((s2) => s2.trim());
|
|
434259
|
+
}
|
|
434260
|
+
}
|
|
434076
434261
|
return {
|
|
434077
434262
|
hasWildcard: true,
|
|
434078
434263
|
validTools: [],
|
|
434079
434264
|
invalidTools: [],
|
|
434080
|
-
resolvedTools: allowedAvailableTools
|
|
434265
|
+
resolvedTools: allowedAvailableTools,
|
|
434266
|
+
allowedAgentTypes: wildcardAllowedAgentTypes
|
|
434081
434267
|
};
|
|
434082
434268
|
}
|
|
434083
434269
|
const availableToolMap = new Map;
|
|
@@ -490863,6 +491049,7 @@ var init_ExitPlanModeV2Tool = __esm(() => {
|
|
|
490863
491049
|
}
|
|
490864
491050
|
return {
|
|
490865
491051
|
...prev,
|
|
491052
|
+
swarmMode: true,
|
|
490866
491053
|
toolPermissionContext: {
|
|
490867
491054
|
...baseContext,
|
|
490868
491055
|
mode: restoreMode,
|
|
@@ -491033,7 +491220,7 @@ function AskUserQuestionResultMessage(t0) {
|
|
|
491033
491220
|
]
|
|
491034
491221
|
}, undefined, true, undefined, this),
|
|
491035
491222
|
/* @__PURE__ */ jsx_dev_runtime139.jsxDEV(ThemedText, {
|
|
491036
|
-
children: "User answered
|
|
491223
|
+
children: "User answered Rayu's questions:"
|
|
491037
491224
|
}, undefined, false, undefined, this)
|
|
491038
491225
|
]
|
|
491039
491226
|
}, undefined, true, undefined, this);
|
|
@@ -502792,6 +502979,7 @@ function getDefaultAppState() {
|
|
|
502792
502979
|
snapshotSequence: 0
|
|
502793
502980
|
},
|
|
502794
502981
|
pendingFileChanges: [],
|
|
502982
|
+
swarmMode: false,
|
|
502795
502983
|
attribution: createEmptyAttributionState(),
|
|
502796
502984
|
mcp: {
|
|
502797
502985
|
clients: [],
|
|
@@ -509215,6 +509403,19 @@ You have exited plan mode. You can now make edits, run tools, and take actions.$
|
|
|
509215
509403
|
createUserMessage({ content, isMeta: true })
|
|
509216
509404
|
]);
|
|
509217
509405
|
}
|
|
509406
|
+
case "swarm_mode": {
|
|
509407
|
+
const content = `## Collaborator-swarm mode is ON
|
|
509408
|
+
|
|
509409
|
+
You are the ORCHESTRATOR — coordinate, do not implement yourself. Run the 3-phase build flow:
|
|
509410
|
+
1. SCOPE & RESEARCH — clarify the request's detail and scope; ask the user for their preferred tech stack (offer recommendations with rationale). For open implementation choices (e.g. payment: Stripe / bank / ABA), dispatch the PA subagent to research the real options and present them for the user to choose.
|
|
509411
|
+
2. ALIGNED PLAN — have PA produce ONE coherent plan, explicitly aligned across backend AND frontend (shared API contract, data model, auth); get the user's confirmation.
|
|
509412
|
+
3. DELEGATE BY SPECIALTY — decompose into backend / frontend / mobile subtasks and delegate to the matching collaborators (run independent work in parallel). Each collaborator may use only its allowed subagents.
|
|
509413
|
+
|
|
509414
|
+
The user can return to normal mode with /normal.`;
|
|
509415
|
+
return wrapMessagesInSystemReminder([
|
|
509416
|
+
createUserMessage({ content, isMeta: true })
|
|
509417
|
+
]);
|
|
509418
|
+
}
|
|
509218
509419
|
case "auto_mode": {
|
|
509219
509420
|
return getAutoModeInstructions(attachment);
|
|
509220
509421
|
}
|
|
@@ -512429,6 +512630,7 @@ async function getAttachments(input, toolUseContext, ideSelection, queuedCommand
|
|
|
512429
512630
|
maybe("skill_listing", () => getSkillListingAttachments(context)),
|
|
512430
512631
|
maybe("plan_mode", () => getPlanModeAttachments(messages, toolUseContext)),
|
|
512431
512632
|
maybe("plan_mode_exit", () => getPlanModeExitAttachment(toolUseContext)),
|
|
512633
|
+
maybe("swarm_mode", () => getSwarmModeAttachment(messages, toolUseContext)),
|
|
512432
512634
|
...[],
|
|
512433
512635
|
maybe("todo_reminders", () => isTodoV2Enabled() ? getTaskReminderAttachments(messages, toolUseContext) : getTodoReminderAttachments(messages, toolUseContext)),
|
|
512434
512636
|
...isAgentSwarmsEnabled() ? [
|
|
@@ -512614,6 +512816,22 @@ async function getPlanModeAttachments(messages, toolUseContext) {
|
|
|
512614
512816
|
});
|
|
512615
512817
|
return attachments;
|
|
512616
512818
|
}
|
|
512819
|
+
async function getSwarmModeAttachment(messages, toolUseContext) {
|
|
512820
|
+
if (toolUseContext.agentId) {
|
|
512821
|
+
return [];
|
|
512822
|
+
}
|
|
512823
|
+
if (!toolUseContext.getAppState().swarmMode) {
|
|
512824
|
+
return [];
|
|
512825
|
+
}
|
|
512826
|
+
if (messages && messages.length > 0) {
|
|
512827
|
+
const last2 = messages[messages.length - 1];
|
|
512828
|
+
const isHumanTurn2 = last2?.type === "user" && !last2.isMeta && !hasToolResultContent(last2.message.content);
|
|
512829
|
+
if (!isHumanTurn2) {
|
|
512830
|
+
return [];
|
|
512831
|
+
}
|
|
512832
|
+
}
|
|
512833
|
+
return [{ type: "swarm_mode" }];
|
|
512834
|
+
}
|
|
512617
512835
|
async function getPlanModeExitAttachment(toolUseContext) {
|
|
512618
512836
|
if (!needsPlanModeExitAttachment()) {
|
|
512619
512837
|
return [];
|
|
@@ -528861,7 +529079,7 @@ function Feedback({
|
|
|
528861
529079
|
platform: env4.platform,
|
|
528862
529080
|
gitRepo: envInfo.isGit,
|
|
528863
529081
|
terminal: env4.terminal,
|
|
528864
|
-
version: "1.3.
|
|
529082
|
+
version: "1.3.429",
|
|
528865
529083
|
transcript: normalizeMessagesForAPI(messages),
|
|
528866
529084
|
errors: sanitizedErrors,
|
|
528867
529085
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -529053,7 +529271,7 @@ function Feedback({
|
|
|
529053
529271
|
", ",
|
|
529054
529272
|
env4.terminal,
|
|
529055
529273
|
", v",
|
|
529056
|
-
"1.3.
|
|
529274
|
+
"1.3.429"
|
|
529057
529275
|
]
|
|
529058
529276
|
}, undefined, true, undefined, this)
|
|
529059
529277
|
]
|
|
@@ -529159,7 +529377,7 @@ ${sanitizedDescription}
|
|
|
529159
529377
|
` + `**Environment Info**
|
|
529160
529378
|
` + `- Platform: ${env4.platform}
|
|
529161
529379
|
` + `- Terminal: ${env4.terminal}
|
|
529162
|
-
` + `- Version: ${"1.3.
|
|
529380
|
+
` + `- Version: ${"1.3.429"}
|
|
529163
529381
|
` + `- Feedback ID: ${feedbackId}
|
|
529164
529382
|
` + `
|
|
529165
529383
|
**Errors**
|
|
@@ -530447,6 +530665,7 @@ async function clearConversation({
|
|
|
530447
530665
|
snapshotSequence: 0
|
|
530448
530666
|
},
|
|
530449
530667
|
pendingFileChanges: [],
|
|
530668
|
+
swarmMode: false,
|
|
530450
530669
|
mcp: {
|
|
530451
530670
|
clients: [],
|
|
530452
530671
|
tools: [],
|
|
@@ -531998,9 +532217,9 @@ async function assertMinVersion() {
|
|
|
531998
532217
|
if (false) {}
|
|
531999
532218
|
try {
|
|
532000
532219
|
const versionConfig = await getDynamicConfig_BLOCKS_ON_INIT("tengu_version_config", { minVersion: "0.0.0" });
|
|
532001
|
-
if (versionConfig.minVersion && lt("1.3.
|
|
532220
|
+
if (versionConfig.minVersion && lt("1.3.429", versionConfig.minVersion)) {
|
|
532002
532221
|
console.error(`
|
|
532003
|
-
It looks like your version of RAYU (${"1.3.
|
|
532222
|
+
It looks like your version of RAYU (${"1.3.429"}) needs an update.
|
|
532004
532223
|
A newer version (${versionConfig.minVersion} or higher) is required to continue.
|
|
532005
532224
|
|
|
532006
532225
|
To update, please run:
|
|
@@ -532226,7 +532445,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
532226
532445
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
532227
532446
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
532228
532447
|
pid: process.pid,
|
|
532229
|
-
currentVersion: "1.3.
|
|
532448
|
+
currentVersion: "1.3.429"
|
|
532230
532449
|
});
|
|
532231
532450
|
return "in_progress";
|
|
532232
532451
|
}
|
|
@@ -532235,7 +532454,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
532235
532454
|
if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
|
|
532236
532455
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
532237
532456
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
532238
|
-
currentVersion: "1.3.
|
|
532457
|
+
currentVersion: "1.3.429"
|
|
532239
532458
|
});
|
|
532240
532459
|
console.error(`
|
|
532241
532460
|
Error: Windows NPM detected in WSL
|
|
@@ -532771,7 +532990,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
532771
532990
|
}
|
|
532772
532991
|
async function getDoctorDiagnostic() {
|
|
532773
532992
|
const installationType = await getCurrentInstallationType();
|
|
532774
|
-
const version2 = typeof MACRO !== "undefined" ? "1.3.
|
|
532993
|
+
const version2 = typeof MACRO !== "undefined" ? "1.3.429" : "unknown";
|
|
532775
532994
|
const installationPath = await getInstallationPath();
|
|
532776
532995
|
const invokedBinary = getInvokedBinary();
|
|
532777
532996
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -533566,8 +533785,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
533566
533785
|
const maxVersion = await getMaxVersion();
|
|
533567
533786
|
if (maxVersion && gt(version2, maxVersion)) {
|
|
533568
533787
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version2} to ${maxVersion}`);
|
|
533569
|
-
if (gte("1.3.
|
|
533570
|
-
logForDebugging(`Native installer: current version ${"1.3.
|
|
533788
|
+
if (gte("1.3.429", maxVersion)) {
|
|
533789
|
+
logForDebugging(`Native installer: current version ${"1.3.429"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
533571
533790
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
533572
533791
|
latency_ms: Date.now() - startTime,
|
|
533573
533792
|
max_version: maxVersion,
|
|
@@ -533578,7 +533797,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
533578
533797
|
version2 = maxVersion;
|
|
533579
533798
|
}
|
|
533580
533799
|
}
|
|
533581
|
-
if (!forceReinstall && version2 === "1.3.
|
|
533800
|
+
if (!forceReinstall && version2 === "1.3.429" && await versionIsAvailable(version2) && await isPossibleClaudeBinary(executablePath)) {
|
|
533582
533801
|
logForDebugging(`Found ${version2} at ${executablePath}, skipping install`);
|
|
533583
533802
|
logEvent("tengu_native_update_complete", {
|
|
533584
533803
|
latency_ms: Date.now() - startTime,
|
|
@@ -534774,7 +534993,7 @@ function buildPrimarySection() {
|
|
|
534774
534993
|
}, undefined, false, undefined, this);
|
|
534775
534994
|
return [{
|
|
534776
534995
|
label: "Version",
|
|
534777
|
-
value: "1.3.
|
|
534996
|
+
value: "1.3.429"
|
|
534778
534997
|
}, {
|
|
534779
534998
|
label: "Session name",
|
|
534780
534999
|
value: nameValue
|
|
@@ -538465,7 +538684,7 @@ function Config({
|
|
|
538465
538684
|
}
|
|
538466
538685
|
}, undefined, false, undefined, this)
|
|
538467
538686
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime170.jsxDEV(ChannelDowngradeDialog, {
|
|
538468
|
-
currentVersion: "1.3.
|
|
538687
|
+
currentVersion: "1.3.429",
|
|
538469
538688
|
onChoice: (choice) => {
|
|
538470
538689
|
setShowSubmenu(null);
|
|
538471
538690
|
setTabsHidden(false);
|
|
@@ -538477,7 +538696,7 @@ function Config({
|
|
|
538477
538696
|
autoUpdatesChannel: "stable"
|
|
538478
538697
|
};
|
|
538479
538698
|
if (choice === "stay") {
|
|
538480
|
-
newSettings.minimumVersion = "1.3.
|
|
538699
|
+
newSettings.minimumVersion = "1.3.429";
|
|
538481
538700
|
}
|
|
538482
538701
|
updateSettingsForSource("userSettings", newSettings);
|
|
538483
538702
|
setSettingsData((prev_27) => ({
|
|
@@ -546539,7 +546758,7 @@ function HelpV2(t0) {
|
|
|
546539
546758
|
let t6;
|
|
546540
546759
|
if ($3[31] !== tabs) {
|
|
546541
546760
|
t6 = /* @__PURE__ */ jsx_dev_runtime197.jsxDEV(Tabs, {
|
|
546542
|
-
title: `Rayu-CLI v${"1.3.
|
|
546761
|
+
title: `Rayu-CLI v${"1.3.429"}`,
|
|
546543
546762
|
color: "professionalBlue",
|
|
546544
546763
|
defaultTab: "general",
|
|
546545
546764
|
children: tabs
|
|
@@ -547903,18 +548122,27 @@ After writing the skill file(s), inform the user:
|
|
|
547903
548122
|
init_verifiers_default = command4;
|
|
547904
548123
|
});
|
|
547905
548124
|
|
|
548125
|
+
// src/utils/swarmMode.ts
|
|
548126
|
+
function getSwarmMode(state) {
|
|
548127
|
+
return state.swarmMode === true;
|
|
548128
|
+
}
|
|
548129
|
+
function setSwarmModeUpdater(value) {
|
|
548130
|
+
return (prev) => prev.swarmMode === value ? prev : { ...prev, swarmMode: value };
|
|
548131
|
+
}
|
|
548132
|
+
|
|
547906
548133
|
// src/commands/collaborator-swarm/index.ts
|
|
547907
548134
|
var command5, collaborator_swarm_default;
|
|
547908
548135
|
var init_collaborator_swarm = __esm(() => {
|
|
547909
548136
|
command5 = {
|
|
547910
548137
|
type: "prompt",
|
|
547911
548138
|
name: "collaborator_swarm",
|
|
547912
|
-
description: "
|
|
548139
|
+
description: "Enter collaborator_swarm mode: orchestrate a complex build via the 3-phase flow (scope & research → aligned plan → delegate to specialist collaborators). /normal exits.",
|
|
547913
548140
|
argumentHint: "[task description]",
|
|
547914
548141
|
contentLength: 0,
|
|
547915
548142
|
progressMessage: "coordinating the collaborator swarm",
|
|
547916
548143
|
source: "builtin",
|
|
547917
|
-
async getPromptForCommand(args) {
|
|
548144
|
+
async getPromptForCommand(args, context2) {
|
|
548145
|
+
context2?.setAppState?.(setSwarmModeUpdater(true));
|
|
547918
548146
|
const task = (args ?? "").trim();
|
|
547919
548147
|
const taskLine = task ? `The task to coordinate:
|
|
547920
548148
|
|
|
@@ -547935,9 +548163,19 @@ HARD RULE: if a Collaborator or Subagent stalls, errors, or doesn't respond, you
|
|
|
547935
548163
|
Keep going until the task is fully resolved; state assumptions and continue — don't stop for approval unless genuinely blocked. (If the task is actually trivial, say so and suggest the user just ask normally instead of the swarm — but if you proceed here, you proceed as orchestrator: delegating and verifying, not coding.)
|
|
547936
548164
|
|
|
547937
548165
|
## The three tiers
|
|
547938
|
-
- **You (Orchestrator)** —
|
|
547939
|
-
- **Collaborators (Tier 2)** — semi-persistent domain implementers you delegate to: \`frontend\`, \`backend\` (incl. database), \`mobile\`, \`security\`, \`deploy\`. Spawn each as a NAMED BACKGROUND agent (run_in_background:true, stable lowercase name) so you can resume it with SendMessage instead of respawning. They have full tools and may
|
|
547940
|
-
- **Subagents (Tier 3)** — ephemeral one-shot helpers
|
|
548166
|
+
- **You (Orchestrator)** — scope, plan, own SharedContext, coordinate, integrate. You delegate all implementation; you call only the orchestrator-level subagents directly.
|
|
548167
|
+
- **Collaborators (Tier 2)** — semi-persistent domain implementers you delegate to: \`frontend\`, \`backend\` (incl. database), \`mobile\`, \`security\`, \`deploy\`. Spawn each as a NAMED BACKGROUND agent (run_in_background:true, stable lowercase name) so you can resume it with SendMessage instead of respawning. They have full tools and may dispatch ONLY their allowed subagents (see the matrix).
|
|
548168
|
+
- **Subagents (Tier 3)** — ephemeral one-shot helpers: \`PA\` (deep plan/research — orchestrator only), \`design\` (UI/UX + component PRD), \`backend-design\` (API + Data Model PRD), \`global-setup\` (scaffold — orchestrator only), \`asset-generation\` (images), \`review\` (audit → Fix List), \`fix\` (apply Fix List), \`linter\`, plus \`Explore\` and \`general-purpose\` (research).
|
|
548169
|
+
|
|
548170
|
+
## Subagent specialization matrix (who may call what)
|
|
548171
|
+
Domain-locked so each agent uses only what fits its specialty:
|
|
548172
|
+
- **You (Orchestrator):** PA, global-setup, design, backend-design, asset-generation, review, fix, linter, Explore, general-purpose.
|
|
548173
|
+
- **frontend:** design, asset-generation, review, fix, linter, Explore, general-purpose. (NOT backend-design.)
|
|
548174
|
+
- **backend:** backend-design, review, fix, linter, Explore, general-purpose. (NOT design or asset-generation.)
|
|
548175
|
+
- **mobile:** design, asset-generation, backend-design, review, fix, linter, Explore, general-purpose.
|
|
548176
|
+
- **security:** backend-design, review, fix, linter, Explore, general-purpose.
|
|
548177
|
+
- **deploy:** review, fix, linter, Explore, general-purpose.
|
|
548178
|
+
\`PA\` and \`global-setup\` are ORCHESTRATOR-ONLY — collaborators implement; they never re-plan or re-scaffold. (These limits are also enforced in code.)
|
|
547941
548179
|
|
|
547942
548180
|
## DEFAULT TO PARALLEL (the single most important rule)
|
|
547943
548181
|
Parallel execution is ~3–5x faster than sequential. Unless one call genuinely needs another's output, dispatch independent agents/tools TOGETHER in ONE assistant message (multiple Agent calls), not one-per-message. Plan all the calls you'll need upfront, then fire them together. Cap each batch at ~3–5 calls to avoid timeouts. Sequential is the exception, allowed ONLY on a true dependency. One-per-message dispatch is the #1 cause of slow swarm runs — avoid it.
|
|
@@ -547946,33 +548184,43 @@ Parallel execution is ~3–5x faster than sequential. Unless one call genuinely
|
|
|
547946
548184
|
- Run ALL **Subagents in the FOREGROUND** — do NOT set \`run_in_background\` on a subagent. Their work and \`thinking…\` then stream INLINE so the user can watch them. This applies whether YOU (the orchestrator) dispatch the subagent OR a collaborator does (a collaborator's subagents appear inside that collaborator's view).
|
|
547947
548185
|
- Spawn **Collaborators in the BACKGROUND** (\`run_in_background:true\`, stable lowercase name). Background is the ONLY mode that is resumable via \`SendMessage\`, so semi-persistent collaborators MUST be background. The user watches a collaborator's detailed work by entering its view (↓ then Enter); the task panel shows each collaborator's high-level status (including \`thinking…\`).
|
|
547948
548186
|
|
|
547949
|
-
##
|
|
547950
|
-
|
|
547951
|
-
|
|
547952
|
-
|
|
547953
|
-
|
|
547954
|
-
|
|
547955
|
-
|
|
547956
|
-
|
|
548187
|
+
## The 3-phase build flow
|
|
548188
|
+
### Phase 1 — Scope & Research (you + PA, in the foreground)
|
|
548189
|
+
- Clarify the request: ask the user for the missing DETAIL and SCOPE, and ask their PREFERRED TECH STACK — offer 2–3 concrete recommendations with a one-line rationale each (don't make them guess).
|
|
548190
|
+
- For any OPEN implementation choice (e.g. a payment provider — Stripe vs a bank gateway vs ABA), dispatch the \`PA\` subagent to RESEARCH the real, available options for THIS project and return a short comparison; present those options to the user and let them choose. Loop until you have everything you need.
|
|
548191
|
+
|
|
548192
|
+
### Phase 2 — One aligned plan (PA → you → user)
|
|
548193
|
+
- Hand the gathered context to \`PA\` for a deep, reasoned plan. PA must produce ONE coherent plan that is explicitly ALIGNED across backend AND frontend (shared API contract, data model, auth flow) — never two disjoint plans.
|
|
548194
|
+
- Relay PA's plan to the user for FINAL confirmation. (In plan mode, that's the ExitPlanMode approval — confirming auto-enters swarm execution.)
|
|
548195
|
+
|
|
548196
|
+
### Phase 3 — Build (decompose by specialty; run as a dependency graph, not fixed waves)
|
|
548197
|
+
1. **Setup gate (one short step):** for a new project, run \`global-setup\` to scaffold the FE+BE folder structure + tooling.
|
|
548198
|
+
2. **Design block — 3-way PARALLEL (one message):** dispatch together \`global-setup\` (if not already done) ∥ \`design\` (UI/UX + component PRD) ∥ \`backend-design\` (API + Data Model PRD). They're independent — each derives from the plan, not from each other.
|
|
548199
|
+
\`\`\`
|
|
548200
|
+
Agent(subagent_type:"design", prompt:"<UI/UX + component PRD from the plan>")
|
|
548201
|
+
Agent(subagent_type:"backend-design", prompt:"<API contract + data model from the plan>")
|
|
548202
|
+
\`\`\`
|
|
548203
|
+
3. **Implement — parallel where independent:** dispatch \`backend\` (builds API+DB from the backend-design PRD) ∥ \`security\` (auth/RBAC) together; then \`frontend\` ∥ \`mobile\` (integrate against the backend contract + the Design PRD) together. Each collaborator uses ONLY its allowed subagents.
|
|
547957
548204
|
\`\`\`
|
|
547958
548205
|
Agent(subagent_type:"backend", run_in_background:true, name:"backend", prompt:"<task + contracts>")
|
|
547959
548206
|
Agent(subagent_type:"security", run_in_background:true, name:"security", prompt:"<task + contracts>")
|
|
547960
548207
|
\`\`\`
|
|
547961
|
-
|
|
547962
|
-
|
|
547963
|
-
|
|
547964
|
-
|
|
548208
|
+
4. **Coordinate via SharedContext, not by re-typing.** Each collaborator reads the shared brief (\`.rayu/swarm/shared.json\`: goal/stack/flow/constraints/needs) + its dependency sections and writes its own \`.rayu/swarm/<domain>.md\`. Keep the brief tight (< ~500 tokens) and set "needs" to ONLY the domains this task requires. Always use \`.rayu/swarm/\` — NEVER a \`.claude/\` directory.
|
|
548209
|
+
5. **Resume, don't respawn.** For a follow-up in a domain that already ran, SendMessage to that collaborator's name; spawn fresh only for a new domain.
|
|
548210
|
+
6. **Audit & fix (verification gate):** after a build wave, run \`review\` (→ Fix List), then \`fix\` (or the owning collaborator) to apply it; re-review until clean. Don't report done until build/tests pass and the review→fix loop is clean.
|
|
548211
|
+
7. **Ship:** the \`deploy\` collaborator runs the production build and deploys.
|
|
547965
548212
|
|
|
547966
548213
|
## Rules
|
|
547967
|
-
- Do NOT use TaskCreate / task-list tools to coordinate the swarm — track
|
|
548214
|
+
- Do NOT use TaskCreate / task-list tools to coordinate the swarm — track progress inline in your messages; the collaborator/subagent dispatches ARE the units of work.
|
|
547968
548215
|
- Security and the chosen architecture are authoritative — collaborators build within them.
|
|
547969
|
-
-
|
|
548216
|
+
- Respect the subagent matrix: never route a job to a collaborator outside its specialty (e.g. don't ask \`backend\` for UI/images, or \`frontend\` for the data model).
|
|
548217
|
+
- Maximize parallelism for independent work; go sequential only on a true dependency.
|
|
547970
548218
|
- Be autonomous: keep going until done; only pause if truly blocked. Report concisely and high-signal — don't narrate every step.
|
|
547971
548219
|
|
|
547972
548220
|
## Finish
|
|
547973
548221
|
Integrate the collaborators' outputs into one coherent result, crediting which collaborator produced what, and report concisely to the user — only after the verification gate (build/tests pass, review→fix clean).
|
|
547974
548222
|
|
|
547975
|
-
|
|
548223
|
+
This session is now in collaborator_swarm mode (it stays on for the whole session; the user exits with /normal). Begin with PHASE 1: state your understanding, ask the user for the missing scope + preferred tech stack (with recommendations), and dispatch \`PA\` for any implementation-option research the request needs.`
|
|
547976
548224
|
}
|
|
547977
548225
|
];
|
|
547978
548226
|
}
|
|
@@ -547980,6 +548228,34 @@ Begin by stating your analysis/plan step (read the project and discuss with the
|
|
|
547980
548228
|
collaborator_swarm_default = command5;
|
|
547981
548229
|
});
|
|
547982
548230
|
|
|
548231
|
+
// src/commands/normal/normal.ts
|
|
548232
|
+
var exports_normal = {};
|
|
548233
|
+
__export(exports_normal, {
|
|
548234
|
+
call: () => call17
|
|
548235
|
+
});
|
|
548236
|
+
var call17 = async (_args, context2) => {
|
|
548237
|
+
const wasOn = getSwarmMode(context2.getAppState());
|
|
548238
|
+
context2.setAppState(setSwarmModeUpdater(false));
|
|
548239
|
+
return {
|
|
548240
|
+
type: "text",
|
|
548241
|
+
value: wasOn ? "Exited collaborator_swarm mode — back to normal mode." : "Already in normal mode."
|
|
548242
|
+
};
|
|
548243
|
+
};
|
|
548244
|
+
var init_normal = () => {};
|
|
548245
|
+
|
|
548246
|
+
// src/commands/normal/index.ts
|
|
548247
|
+
var normal, normal_default;
|
|
548248
|
+
var init_normal2 = __esm(() => {
|
|
548249
|
+
normal = {
|
|
548250
|
+
type: "local",
|
|
548251
|
+
name: "normal",
|
|
548252
|
+
description: "Exit collaborator_swarm mode (return to normal mode)",
|
|
548253
|
+
supportsNonInteractive: false,
|
|
548254
|
+
load: () => Promise.resolve().then(() => (init_normal(), exports_normal))
|
|
548255
|
+
};
|
|
548256
|
+
normal_default = normal;
|
|
548257
|
+
});
|
|
548258
|
+
|
|
547983
548259
|
// src/keybindings/template.ts
|
|
547984
548260
|
function filterReservedShortcuts(blocks) {
|
|
547985
548261
|
const reservedKeys = new Set(NON_REBINDABLE.map((r2) => normalizeKeyForComparison(r2.key)));
|
|
@@ -548011,11 +548287,11 @@ var init_template2 = __esm(() => {
|
|
|
548011
548287
|
// src/commands/keybindings/keybindings.ts
|
|
548012
548288
|
var exports_keybindings = {};
|
|
548013
548289
|
__export(exports_keybindings, {
|
|
548014
|
-
call: () =>
|
|
548290
|
+
call: () => call18
|
|
548015
548291
|
});
|
|
548016
548292
|
import { mkdir as mkdir34, writeFile as writeFile37 } from "fs/promises";
|
|
548017
548293
|
import { dirname as dirname58 } from "path";
|
|
548018
|
-
async function
|
|
548294
|
+
async function call18() {
|
|
548019
548295
|
if (!isKeybindingCustomizationEnabled()) {
|
|
548020
548296
|
return {
|
|
548021
548297
|
type: "text",
|
|
@@ -548074,9 +548350,9 @@ var init_keybindings2 = __esm(() => {
|
|
|
548074
548350
|
// src/commands/keep/keep.ts
|
|
548075
548351
|
var exports_keep = {};
|
|
548076
548352
|
__export(exports_keep, {
|
|
548077
|
-
call: () =>
|
|
548353
|
+
call: () => call19
|
|
548078
548354
|
});
|
|
548079
|
-
var
|
|
548355
|
+
var call19 = async (args, context2) => {
|
|
548080
548356
|
return {
|
|
548081
548357
|
type: "text",
|
|
548082
548358
|
value: keepPendingFileChanges(context2, args)
|
|
@@ -562122,7 +562398,7 @@ var init_PluginSettings = __esm(() => {
|
|
|
562122
562398
|
// src/commands/mcp/mcp.tsx
|
|
562123
562399
|
var exports_mcp = {};
|
|
562124
562400
|
__export(exports_mcp, {
|
|
562125
|
-
call: () =>
|
|
562401
|
+
call: () => call20
|
|
562126
562402
|
});
|
|
562127
562403
|
function MCPToggle(t0) {
|
|
562128
562404
|
const $3 = import_compiler_runtime170.c(7);
|
|
@@ -562175,7 +562451,7 @@ function _temp239(c4) {
|
|
|
562175
562451
|
function _temp98(s2) {
|
|
562176
562452
|
return s2.mcp.clients;
|
|
562177
562453
|
}
|
|
562178
|
-
async function
|
|
562454
|
+
async function call20(onDone, _context, args) {
|
|
562179
562455
|
if (args) {
|
|
562180
562456
|
const parts = args.trim().split(/\s+/);
|
|
562181
562457
|
if (parts[0] === "no-redirect") {
|
|
@@ -564822,7 +565098,7 @@ var API_BASE2 = "https://api.telegram.org", MAX_MESSAGE_CHARS = 4096;
|
|
|
564822
565098
|
// src/commands/telegram-bot/telegram-bot.tsx
|
|
564823
565099
|
var exports_telegram_bot = {};
|
|
564824
565100
|
__export(exports_telegram_bot, {
|
|
564825
|
-
call: () =>
|
|
565101
|
+
call: () => call21
|
|
564826
565102
|
});
|
|
564827
565103
|
import { randomUUID as randomUUID31 } from "crypto";
|
|
564828
565104
|
function TokenInputStep({ onTokenSaved }) {
|
|
@@ -565009,7 +565285,7 @@ function TelegramBotConnect({ onDone }) {
|
|
|
565009
565285
|
onDone
|
|
565010
565286
|
}, undefined, false, undefined, this);
|
|
565011
565287
|
}
|
|
565012
|
-
async function
|
|
565288
|
+
async function call21(onDone) {
|
|
565013
565289
|
return /* @__PURE__ */ jsx_dev_runtime224.jsxDEV(TelegramBotConnect, {
|
|
565014
565290
|
onDone
|
|
565015
565291
|
}, undefined, false, undefined, this);
|
|
@@ -565041,9 +565317,9 @@ var init_telegram_bot2 = __esm(() => {
|
|
|
565041
565317
|
// src/commands/telegram-bot/disconnect.ts
|
|
565042
565318
|
var exports_disconnect = {};
|
|
565043
565319
|
__export(exports_disconnect, {
|
|
565044
|
-
call: () =>
|
|
565320
|
+
call: () => call22
|
|
565045
565321
|
});
|
|
565046
|
-
async function
|
|
565322
|
+
async function call22() {
|
|
565047
565323
|
const config5 = readTelegramConfig();
|
|
565048
565324
|
if (!config5.linkedChatId) {
|
|
565049
565325
|
return { type: "text", value: "Telegram bot is not currently linked." };
|
|
@@ -565628,9 +565904,9 @@ var init_createSession = __esm(() => {
|
|
|
565628
565904
|
// src/commands/rename/rename.ts
|
|
565629
565905
|
var exports_rename = {};
|
|
565630
565906
|
__export(exports_rename, {
|
|
565631
|
-
call: () =>
|
|
565907
|
+
call: () => call23
|
|
565632
565908
|
});
|
|
565633
|
-
async function
|
|
565909
|
+
async function call23(onDone, context2, args) {
|
|
565634
565910
|
if (isTeammate()) {
|
|
565635
565911
|
onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
|
|
565636
565912
|
return null;
|
|
@@ -565866,9 +566142,9 @@ var init_ReviewDetailDialog = __esm(() => {
|
|
|
565866
566142
|
// src/commands/review-detial/review-detial.tsx
|
|
565867
566143
|
var exports_review_detial = {};
|
|
565868
566144
|
__export(exports_review_detial, {
|
|
565869
|
-
call: () =>
|
|
566145
|
+
call: () => call24
|
|
565870
566146
|
});
|
|
565871
|
-
var jsx_dev_runtime226,
|
|
566147
|
+
var jsx_dev_runtime226, call24 = async (onDone, context2, args) => {
|
|
565872
566148
|
const result = resolvePendingFileChangeReview(context2, args ?? "");
|
|
565873
566149
|
if (result.type === "message") {
|
|
565874
566150
|
onDone(result.message, { display: "system" });
|
|
@@ -566514,7 +566790,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
566514
566790
|
}
|
|
566515
566791
|
return [];
|
|
566516
566792
|
}
|
|
566517
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.3.
|
|
566793
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.3.429") {
|
|
566518
566794
|
if (false) {}
|
|
566519
566795
|
const cachedChangelog = await getStoredChangelog();
|
|
566520
566796
|
if (lastSeenVersion !== currentVersion || !cachedChangelog) {
|
|
@@ -566527,7 +566803,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.3.427")
|
|
|
566527
566803
|
releaseNotes
|
|
566528
566804
|
};
|
|
566529
566805
|
}
|
|
566530
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.3.
|
|
566806
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.3.429") {
|
|
566531
566807
|
if (false) {}
|
|
566532
566808
|
const releaseNotes = getRecentReleaseNotes(currentVersion, lastSeenVersion);
|
|
566533
566809
|
return {
|
|
@@ -566655,11 +566931,11 @@ function getRecentActivitySync() {
|
|
|
566655
566931
|
return cachedActivity;
|
|
566656
566932
|
}
|
|
566657
566933
|
function getLogoDisplayData() {
|
|
566658
|
-
const version2 = process.env.DEMO_VERSION ?? "1.3.
|
|
566934
|
+
const version2 = process.env.DEMO_VERSION ?? "1.3.429";
|
|
566659
566935
|
const serverUrl = getDirectConnectServerUrl();
|
|
566660
566936
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
566661
566937
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
566662
|
-
const billingType = isClaudeAISubscriber() ? getSubscriptionName() : "API Usage Billing";
|
|
566938
|
+
const billingType = isClaudeAISubscriber() ? getSubscriptionName() : getActiveProviderDisplayName() ?? "API Usage Billing";
|
|
566663
566939
|
const agentName = getInitialSettings().agent;
|
|
566664
566940
|
return {
|
|
566665
566941
|
version: version2,
|
|
@@ -566716,6 +566992,7 @@ var init_logoV2Utils = __esm(() => {
|
|
|
566716
566992
|
init_file2();
|
|
566717
566993
|
init_format();
|
|
566718
566994
|
init_releaseNotes();
|
|
566995
|
+
init_rayuProviders();
|
|
566719
566996
|
init_sessionStorage();
|
|
566720
566997
|
init_settings2();
|
|
566721
566998
|
cachedActivity = [];
|
|
@@ -566737,12 +567014,12 @@ var init_Clawd = __esm(() => {
|
|
|
566737
567014
|
init_ink2();
|
|
566738
567015
|
jsx_dev_runtime228 = __toESM(require_jsx_dev_runtime(), 1);
|
|
566739
567016
|
RAYU_BANNER = [
|
|
566740
|
-
["██████╗ █████╗ ██╗ ██╗██╗ ██╗", "#
|
|
566741
|
-
["██╔══██╗██╔══██╗╚██╗ ██╔╝██║ ██║", "#
|
|
567017
|
+
["██████╗ █████╗ ██╗ ██╗██╗ ██╗", "#ff7cda"],
|
|
567018
|
+
["██╔══██╗██╔══██╗╚██╗ ██╔╝██║ ██║", "#a35bf5"],
|
|
566742
567019
|
["██████╔╝███████║ ╚████╔╝ ██║ ██║", "#3DE877"],
|
|
566743
|
-
["██╔══██╗██╔══██║ ╚██╔╝ ██║ ██║", "#
|
|
566744
|
-
["██║ ██║██║ ██║ ██║ ╚██████╔╝", "#
|
|
566745
|
-
["╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ", "#
|
|
567020
|
+
["██╔══██╗██╔══██║ ╚██╔╝ ██║ ██║", "#2822d0"],
|
|
567021
|
+
["██║ ██║██║ ██║ ██║ ╚██████╔╝", "#84b815"],
|
|
567022
|
+
["╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ", "#9b0e84"]
|
|
566746
567023
|
];
|
|
566747
567024
|
});
|
|
566748
567025
|
|
|
@@ -567947,7 +568224,7 @@ function LogoV2() {
|
|
|
567947
568224
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
567948
568225
|
t2 = () => {
|
|
567949
568226
|
const currentConfig = getGlobalConfig();
|
|
567950
|
-
if (currentConfig.lastReleaseNotesSeen === "1.3.
|
|
568227
|
+
if (currentConfig.lastReleaseNotesSeen === "1.3.429") {
|
|
567951
568228
|
return;
|
|
567952
568229
|
}
|
|
567953
568230
|
saveGlobalConfig(_temp327);
|
|
@@ -568425,7 +568702,7 @@ function LogoV2() {
|
|
|
568425
568702
|
t24 = $3[61];
|
|
568426
568703
|
}
|
|
568427
568704
|
const _latestNpm = getCachedLatestNpmVersionSync();
|
|
568428
|
-
const _updateFeeds = _latestNpm && gt(_latestNpm, "1.3.
|
|
568705
|
+
const _updateFeeds = _latestNpm && gt(_latestNpm, "1.3.429") ? [createUpdateAvailableFeed("1.3.429", _latestNpm)] : [];
|
|
568429
568706
|
const t25 = layoutMode === "horizontal" && /* @__PURE__ */ jsx_dev_runtime239.jsxDEV(FeedColumn, {
|
|
568430
568707
|
feeds: showOnboarding ? [createProjectOnboardingFeed(getSteps()), createRecentActivityFeed(activities)] : showGuestPassesUpsell ? [createRecentActivityFeed(activities), createGuestPassesFeed()] : showOverageCreditUpsell ? [createRecentActivityFeed(activities), createOverageCreditFeed()] : [createRecentActivityFeed(activities), ..._updateFeeds, createWhatsNewFeed(changelog)],
|
|
568431
568708
|
maxWidth: rightWidth
|
|
@@ -568625,12 +568902,12 @@ function LogoV2() {
|
|
|
568625
568902
|
return t41;
|
|
568626
568903
|
}
|
|
568627
568904
|
function _temp327(current) {
|
|
568628
|
-
if (current.lastReleaseNotesSeen === "1.3.
|
|
568905
|
+
if (current.lastReleaseNotesSeen === "1.3.429") {
|
|
568629
568906
|
return current;
|
|
568630
568907
|
}
|
|
568631
568908
|
return {
|
|
568632
568909
|
...current,
|
|
568633
|
-
lastReleaseNotesSeen: "1.3.
|
|
568910
|
+
lastReleaseNotesSeen: "1.3.429"
|
|
568634
568911
|
};
|
|
568635
568912
|
}
|
|
568636
568913
|
function _temp241(s_0) {
|
|
@@ -569169,6 +569446,7 @@ var init_nullRenderingAttachments = __esm(() => {
|
|
|
569169
569446
|
"plan_mode",
|
|
569170
569447
|
"plan_mode_exit",
|
|
569171
569448
|
"plan_mode_reentry",
|
|
569449
|
+
"swarm_mode",
|
|
569172
569450
|
"structured_output",
|
|
569173
569451
|
"team_context",
|
|
569174
569452
|
"todo_reminder",
|
|
@@ -574392,7 +574670,7 @@ var init_crossProjectResume = __esm(() => {
|
|
|
574392
574670
|
var exports_resume = {};
|
|
574393
574671
|
__export(exports_resume, {
|
|
574394
574672
|
filterResumableSessions: () => filterResumableSessions,
|
|
574395
|
-
call: () =>
|
|
574673
|
+
call: () => call25
|
|
574396
574674
|
});
|
|
574397
574675
|
function resumeHelpMessage(result) {
|
|
574398
574676
|
switch (result.resultType) {
|
|
@@ -574577,7 +574855,7 @@ function ResumeCommand({
|
|
|
574577
574855
|
function filterResumableSessions(logs, currentSessionId) {
|
|
574578
574856
|
return logs.filter((l3) => !l3.isSidechain && getSessionIdFromLog(l3) !== currentSessionId);
|
|
574579
574857
|
}
|
|
574580
|
-
var import_compiler_runtime191, React80, jsx_dev_runtime253,
|
|
574858
|
+
var import_compiler_runtime191, React80, jsx_dev_runtime253, call25 = async (onDone, context2, args) => {
|
|
574581
574859
|
const onResume = async (sessionId, log3, entrypoint) => {
|
|
574582
574860
|
try {
|
|
574583
574861
|
await context2.resume?.(sessionId, log3, entrypoint);
|
|
@@ -575040,7 +575318,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
|
|
|
575040
575318
|
// src/commands/review/ultrareviewCommand.tsx
|
|
575041
575319
|
var exports_ultrareviewCommand = {};
|
|
575042
575320
|
__export(exports_ultrareviewCommand, {
|
|
575043
|
-
call: () =>
|
|
575321
|
+
call: () => call26
|
|
575044
575322
|
});
|
|
575045
575323
|
function contentBlocksToString(blocks) {
|
|
575046
575324
|
return blocks.map((b3) => b3.type === "text" ? b3.text : "").filter(Boolean).join(`
|
|
@@ -575060,7 +575338,7 @@ async function launchAndDone(args, context2, onDone, billingNote, signal) {
|
|
|
575060
575338
|
});
|
|
575061
575339
|
}
|
|
575062
575340
|
}
|
|
575063
|
-
var jsx_dev_runtime255,
|
|
575341
|
+
var jsx_dev_runtime255, call26 = async (onDone, context2, args) => {
|
|
575064
575342
|
const gate = await checkOverageGate();
|
|
575065
575343
|
if (gate.kind === "not-enabled") {
|
|
575066
575344
|
onDone("Free ultrareviews used. Enable Extra Usage at https://claude.ai/settings/billing to continue.", {
|
|
@@ -575358,7 +575636,7 @@ var init_image_video = __esm(() => {
|
|
|
575358
575636
|
// src/commands/session/session.tsx
|
|
575359
575637
|
var exports_session = {};
|
|
575360
575638
|
__export(exports_session, {
|
|
575361
|
-
call: () =>
|
|
575639
|
+
call: () => call27
|
|
575362
575640
|
});
|
|
575363
575641
|
function SessionInfo(t0) {
|
|
575364
575642
|
const $3 = import_compiler_runtime193.c(19);
|
|
@@ -575531,7 +575809,7 @@ function _temp247(e2) {
|
|
|
575531
575809
|
function _temp118(s2) {
|
|
575532
575810
|
return s2.remoteSessionUrl;
|
|
575533
575811
|
}
|
|
575534
|
-
var import_compiler_runtime193, import_react154, jsx_dev_runtime256,
|
|
575812
|
+
var import_compiler_runtime193, import_react154, jsx_dev_runtime256, call27 = async (onDone) => {
|
|
575535
575813
|
return /* @__PURE__ */ jsx_dev_runtime256.jsxDEV(SessionInfo, {
|
|
575536
575814
|
onDone
|
|
575537
575815
|
}, undefined, false, undefined, this);
|
|
@@ -575883,9 +576161,9 @@ var init_SkillsMenu = __esm(() => {
|
|
|
575883
576161
|
// src/commands/skills/skills.tsx
|
|
575884
576162
|
var exports_skills2 = {};
|
|
575885
576163
|
__export(exports_skills2, {
|
|
575886
|
-
call: () =>
|
|
576164
|
+
call: () => call28
|
|
575887
576165
|
});
|
|
575888
|
-
async function
|
|
576166
|
+
async function call28(onDone, context2) {
|
|
575889
576167
|
return /* @__PURE__ */ jsx_dev_runtime258.jsxDEV(SkillsMenu, {
|
|
575890
576168
|
onExit: onDone,
|
|
575891
576169
|
commands: context2.options.commands
|
|
@@ -575912,9 +576190,9 @@ var init_skills5 = __esm(() => {
|
|
|
575912
576190
|
// src/commands/status/status.tsx
|
|
575913
576191
|
var exports_status = {};
|
|
575914
576192
|
__export(exports_status, {
|
|
575915
|
-
call: () =>
|
|
576193
|
+
call: () => call29
|
|
575916
576194
|
});
|
|
575917
|
-
async function
|
|
576195
|
+
async function call29(onDone, context2) {
|
|
575918
576196
|
return /* @__PURE__ */ jsx_dev_runtime259.jsxDEV(Settings, {
|
|
575919
576197
|
onClose: onDone,
|
|
575920
576198
|
context: context2,
|
|
@@ -576525,7 +576803,7 @@ ${reasons}`,
|
|
|
576525
576803
|
} : prev);
|
|
576526
576804
|
}
|
|
576527
576805
|
}
|
|
576528
|
-
var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS,
|
|
576806
|
+
var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://code.claude.com/docs/en/claude-code-on-the-web", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call30 = async (onDone, context2, args) => {
|
|
576529
576807
|
const blurb = args.trim();
|
|
576530
576808
|
if (!blurb) {
|
|
576531
576809
|
const msg = await launchUltraplan2({
|
|
@@ -576588,7 +576866,7 @@ var init_ultraplan = __esm(() => {
|
|
|
576588
576866
|
argumentHint: "<prompt>",
|
|
576589
576867
|
isEnabled: () => false,
|
|
576590
576868
|
load: () => Promise.resolve({
|
|
576591
|
-
call:
|
|
576869
|
+
call: call30
|
|
576592
576870
|
})
|
|
576593
576871
|
};
|
|
576594
576872
|
});
|
|
@@ -581359,9 +581637,9 @@ var init_BackgroundTasksDialog = __esm(() => {
|
|
|
581359
581637
|
// src/commands/tasks/tasks.tsx
|
|
581360
581638
|
var exports_tasks = {};
|
|
581361
581639
|
__export(exports_tasks, {
|
|
581362
|
-
call: () =>
|
|
581640
|
+
call: () => call31
|
|
581363
581641
|
});
|
|
581364
|
-
async function
|
|
581642
|
+
async function call31(onDone, context2) {
|
|
581365
581643
|
return /* @__PURE__ */ jsx_dev_runtime270.jsxDEV(BackgroundTasksDialog, {
|
|
581366
581644
|
toolUseContext: context2,
|
|
581367
581645
|
onDone
|
|
@@ -581640,9 +581918,9 @@ var init_terminalSetup2 = __esm(() => {
|
|
|
581640
581918
|
// src/commands/undo/undo.ts
|
|
581641
581919
|
var exports_undo = {};
|
|
581642
581920
|
__export(exports_undo, {
|
|
581643
|
-
call: () =>
|
|
581921
|
+
call: () => call32
|
|
581644
581922
|
});
|
|
581645
|
-
var
|
|
581923
|
+
var call32 = async (args, context2) => {
|
|
581646
581924
|
const isAll = args.trim().toLowerCase() === "all";
|
|
581647
581925
|
return {
|
|
581648
581926
|
type: "text",
|
|
@@ -581670,7 +581948,7 @@ var init_undo3 = __esm(() => {
|
|
|
581670
581948
|
// src/commands/theme/theme.tsx
|
|
581671
581949
|
var exports_theme = {};
|
|
581672
581950
|
__export(exports_theme, {
|
|
581673
|
-
call: () =>
|
|
581951
|
+
call: () => call33
|
|
581674
581952
|
});
|
|
581675
581953
|
function ThemePickerCommand(t0) {
|
|
581676
581954
|
const $3 = import_compiler_runtime204.c(8);
|
|
@@ -581720,7 +581998,7 @@ function ThemePickerCommand(t0) {
|
|
|
581720
581998
|
}
|
|
581721
581999
|
return t3;
|
|
581722
582000
|
}
|
|
581723
|
-
var import_compiler_runtime204, jsx_dev_runtime271,
|
|
582001
|
+
var import_compiler_runtime204, jsx_dev_runtime271, call33 = async (onDone, _context) => {
|
|
581724
582002
|
return /* @__PURE__ */ jsx_dev_runtime271.jsxDEV(ThemePickerCommand, {
|
|
581725
582003
|
onDone
|
|
581726
582004
|
}, undefined, false, undefined, this);
|
|
@@ -581748,9 +582026,9 @@ var init_theme4 = __esm(() => {
|
|
|
581748
582026
|
// src/commands/vim/vim.ts
|
|
581749
582027
|
var exports_vim = {};
|
|
581750
582028
|
__export(exports_vim, {
|
|
581751
|
-
call: () =>
|
|
582029
|
+
call: () => call34
|
|
581752
582030
|
});
|
|
581753
|
-
var
|
|
582031
|
+
var call34 = async () => {
|
|
581754
582032
|
const config5 = getGlobalConfig();
|
|
581755
582033
|
let currentMode = config5.editorMode || "normal";
|
|
581756
582034
|
if (currentMode === "emacs") {
|
|
@@ -581792,7 +582070,7 @@ var init_vim2 = __esm(() => {
|
|
|
581792
582070
|
var exports_thinkback = {};
|
|
581793
582071
|
__export(exports_thinkback, {
|
|
581794
582072
|
playAnimation: () => playAnimation,
|
|
581795
|
-
call: () =>
|
|
582073
|
+
call: () => call35
|
|
581796
582074
|
});
|
|
581797
582075
|
import { readFile as readFile47 } from "fs/promises";
|
|
581798
582076
|
import { join as join136 } from "path";
|
|
@@ -582329,7 +582607,7 @@ function ThinkbackFlow(t0) {
|
|
|
582329
582607
|
}
|
|
582330
582608
|
return t8;
|
|
582331
582609
|
}
|
|
582332
|
-
async function
|
|
582610
|
+
async function call35(onDone) {
|
|
582333
582611
|
return /* @__PURE__ */ jsx_dev_runtime272.jsxDEV(ThinkbackFlow, {
|
|
582334
582612
|
onDone
|
|
582335
582613
|
}, undefined, false, undefined, this);
|
|
@@ -582377,14 +582655,14 @@ var init_thinkback2 = __esm(() => {
|
|
|
582377
582655
|
// src/commands/thinkback-play/thinkback-play.ts
|
|
582378
582656
|
var exports_thinkback_play = {};
|
|
582379
582657
|
__export(exports_thinkback_play, {
|
|
582380
|
-
call: () =>
|
|
582658
|
+
call: () => call36
|
|
582381
582659
|
});
|
|
582382
582660
|
import { join as join137 } from "path";
|
|
582383
582661
|
function getPluginId2() {
|
|
582384
582662
|
const marketplaceName = OFFICIAL_MARKETPLACE_NAME;
|
|
582385
582663
|
return `thinkback@${marketplaceName}`;
|
|
582386
582664
|
}
|
|
582387
|
-
async function
|
|
582665
|
+
async function call36() {
|
|
582388
582666
|
const v2Data = loadInstalledPluginsV2();
|
|
582389
582667
|
const pluginId = getPluginId2();
|
|
582390
582668
|
const installations = v2Data.plugins[pluginId];
|
|
@@ -584880,9 +585158,9 @@ var init_PermissionRuleList = __esm(() => {
|
|
|
584880
585158
|
// src/commands/permissions/permissions.tsx
|
|
584881
585159
|
var exports_permissions2 = {};
|
|
584882
585160
|
__export(exports_permissions2, {
|
|
584883
|
-
call: () =>
|
|
585161
|
+
call: () => call37
|
|
584884
585162
|
});
|
|
584885
|
-
var jsx_dev_runtime280,
|
|
585163
|
+
var jsx_dev_runtime280, call37 = async (onDone, context2) => {
|
|
584886
585164
|
return /* @__PURE__ */ jsx_dev_runtime280.jsxDEV(PermissionRuleList, {
|
|
584887
585165
|
onExit: onDone,
|
|
584888
585166
|
onRetryDenials: (commands) => {
|
|
@@ -584912,7 +585190,7 @@ var init_permissions5 = __esm(() => {
|
|
|
584912
585190
|
// src/commands/plan/plan.tsx
|
|
584913
585191
|
var exports_plan = {};
|
|
584914
585192
|
__export(exports_plan, {
|
|
584915
|
-
call: () =>
|
|
585193
|
+
call: () => call38
|
|
584916
585194
|
});
|
|
584917
585195
|
function PlanDisplay(t0) {
|
|
584918
585196
|
const $3 = import_compiler_runtime213.c(11);
|
|
@@ -585000,7 +585278,7 @@ function PlanDisplay(t0) {
|
|
|
585000
585278
|
}
|
|
585001
585279
|
return t5;
|
|
585002
585280
|
}
|
|
585003
|
-
async function
|
|
585281
|
+
async function call38(onDone, context2, args) {
|
|
585004
585282
|
const {
|
|
585005
585283
|
getAppState,
|
|
585006
585284
|
setAppState
|
|
@@ -586838,9 +587116,9 @@ var init_HooksConfigMenu = __esm(() => {
|
|
|
586838
587116
|
// src/commands/hooks/hooks.tsx
|
|
586839
587117
|
var exports_hooks = {};
|
|
586840
587118
|
__export(exports_hooks, {
|
|
586841
|
-
call: () =>
|
|
587119
|
+
call: () => call39
|
|
586842
587120
|
});
|
|
586843
|
-
var jsx_dev_runtime287,
|
|
587121
|
+
var jsx_dev_runtime287, call39 = async (onDone, context2) => {
|
|
586844
587122
|
logEvent("tengu_hooks_command", {});
|
|
586845
587123
|
const appState = context2.getAppState();
|
|
586846
587124
|
const permissionContext = appState.toolPermissionContext;
|
|
@@ -586873,10 +587151,10 @@ var init_hooks3 = __esm(() => {
|
|
|
586873
587151
|
// src/commands/files/files.ts
|
|
586874
587152
|
var exports_files4 = {};
|
|
586875
587153
|
__export(exports_files4, {
|
|
586876
|
-
call: () =>
|
|
587154
|
+
call: () => call40
|
|
586877
587155
|
});
|
|
586878
587156
|
import { relative as relative31 } from "path";
|
|
586879
|
-
async function
|
|
587157
|
+
async function call40(_args, context2) {
|
|
586880
587158
|
const files2 = context2.readFileState ? cacheKeys(context2.readFileState) : [];
|
|
586881
587159
|
if (files2.length === 0) {
|
|
586882
587160
|
return { type: "text", value: "No files in context" };
|
|
@@ -586909,7 +587187,7 @@ var init_files8 = __esm(() => {
|
|
|
586909
587187
|
var exports_branch = {};
|
|
586910
587188
|
__export(exports_branch, {
|
|
586911
587189
|
deriveFirstPrompt: () => deriveFirstPrompt,
|
|
586912
|
-
call: () =>
|
|
587190
|
+
call: () => call41
|
|
586913
587191
|
});
|
|
586914
587192
|
import { randomUUID as randomUUID33 } from "crypto";
|
|
586915
587193
|
import { mkdir as mkdir36, readFile as readFile48, writeFile as writeFile41 } from "fs/promises";
|
|
@@ -587015,7 +587293,7 @@ async function getUniqueForkName(baseName) {
|
|
|
587015
587293
|
}
|
|
587016
587294
|
return `${baseName} (Branch ${nextNumber})`;
|
|
587017
587295
|
}
|
|
587018
|
-
async function
|
|
587296
|
+
async function call41(onDone, context2, args) {
|
|
587019
587297
|
const customTitle = args?.trim() || undefined;
|
|
587020
587298
|
const originalSessionId = getSessionId();
|
|
587021
587299
|
try {
|
|
@@ -593054,9 +593332,9 @@ var init_AgentsMenu = __esm(() => {
|
|
|
593054
593332
|
// src/commands/agents/agents.tsx
|
|
593055
593333
|
var exports_agents2 = {};
|
|
593056
593334
|
__export(exports_agents2, {
|
|
593057
|
-
call: () =>
|
|
593335
|
+
call: () => call42
|
|
593058
593336
|
});
|
|
593059
|
-
async function
|
|
593337
|
+
async function call42(onDone, context2) {
|
|
593060
593338
|
const appState = context2.getAppState();
|
|
593061
593339
|
const permissionContext = appState.toolPermissionContext;
|
|
593062
593340
|
const tools = getTools(permissionContext);
|
|
@@ -593087,9 +593365,9 @@ var init_agents3 = __esm(() => {
|
|
|
593087
593365
|
// src/commands/plugin/plugin.tsx
|
|
593088
593366
|
var exports_plugin = {};
|
|
593089
593367
|
__export(exports_plugin, {
|
|
593090
|
-
call: () =>
|
|
593368
|
+
call: () => call43
|
|
593091
593369
|
});
|
|
593092
|
-
async function
|
|
593370
|
+
async function call43(onDone, _context, args) {
|
|
593093
593371
|
return /* @__PURE__ */ jsx_dev_runtime313.jsxDEV(PluginSettings, {
|
|
593094
593372
|
onComplete: onDone,
|
|
593095
593373
|
args
|
|
@@ -593257,12 +593535,12 @@ var init_refresh = __esm(() => {
|
|
|
593257
593535
|
// src/commands/reload-plugins/reload-plugins.ts
|
|
593258
593536
|
var exports_reload_plugins = {};
|
|
593259
593537
|
__export(exports_reload_plugins, {
|
|
593260
|
-
call: () =>
|
|
593538
|
+
call: () => call44
|
|
593261
593539
|
});
|
|
593262
593540
|
function n2(count4, noun) {
|
|
593263
593541
|
return `${count4} ${plural(count4, noun)}`;
|
|
593264
593542
|
}
|
|
593265
|
-
var
|
|
593543
|
+
var call44 = async (_args, context2) => {
|
|
593266
593544
|
if (false) {}
|
|
593267
593545
|
const r2 = await refreshActivePlugins(context2.setAppState);
|
|
593268
593546
|
const parts = [
|
|
@@ -593305,9 +593583,9 @@ var init_reload_plugins2 = __esm(() => {
|
|
|
593305
593583
|
// src/commands/rewind/rewind.ts
|
|
593306
593584
|
var exports_rewind = {};
|
|
593307
593585
|
__export(exports_rewind, {
|
|
593308
|
-
call: () =>
|
|
593586
|
+
call: () => call45
|
|
593309
593587
|
});
|
|
593310
|
-
async function
|
|
593588
|
+
async function call45(_args, context2) {
|
|
593311
593589
|
if (context2.openMessageSelector) {
|
|
593312
593590
|
context2.openMessageSelector();
|
|
593313
593591
|
}
|
|
@@ -593422,7 +593700,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
593422
593700
|
smapsRollup,
|
|
593423
593701
|
platform: process.platform,
|
|
593424
593702
|
nodeVersion: process.version,
|
|
593425
|
-
ccVersion: "1.3.
|
|
593703
|
+
ccVersion: "1.3.429"
|
|
593426
593704
|
};
|
|
593427
593705
|
}
|
|
593428
593706
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -593493,9 +593771,9 @@ var init_heapDumpService = __esm(() => {
|
|
|
593493
593771
|
// src/commands/heapdump/heapdump.ts
|
|
593494
593772
|
var exports_heapdump = {};
|
|
593495
593773
|
__export(exports_heapdump, {
|
|
593496
|
-
call: () =>
|
|
593774
|
+
call: () => call46
|
|
593497
593775
|
});
|
|
593498
|
-
async function
|
|
593776
|
+
async function call46() {
|
|
593499
593777
|
const result = await performHeapDump();
|
|
593500
593778
|
if (!result.success) {
|
|
593501
593779
|
return {
|
|
@@ -593802,7 +594080,7 @@ var USAGE = `/bridge-kick <subcommand>
|
|
|
593802
594080
|
reconnect-session fail next POST /bridge/reconnect fails
|
|
593803
594081
|
heartbeat <status> next heartbeat throws BridgeFatalError(status)
|
|
593804
594082
|
reconnect call reconnectEnvironmentWithSession directly
|
|
593805
|
-
status print bridge state`,
|
|
594083
|
+
status print bridge state`, call47 = async (args) => {
|
|
593806
594084
|
const h3 = getBridgeDebugHandle();
|
|
593807
594085
|
if (!h3) {
|
|
593808
594086
|
return {
|
|
@@ -593935,16 +594213,16 @@ var init_bridge_kick = __esm(() => {
|
|
|
593935
594213
|
description: "Inject bridge failure states for manual recovery testing",
|
|
593936
594214
|
isEnabled: () => false,
|
|
593937
594215
|
supportsNonInteractive: false,
|
|
593938
|
-
load: () => Promise.resolve({ call:
|
|
594216
|
+
load: () => Promise.resolve({ call: call47 })
|
|
593939
594217
|
};
|
|
593940
594218
|
bridge_kick_default = bridgeKick;
|
|
593941
594219
|
});
|
|
593942
594220
|
|
|
593943
594221
|
// src/commands/version.ts
|
|
593944
|
-
var
|
|
594222
|
+
var call48 = async () => {
|
|
593945
594223
|
return {
|
|
593946
594224
|
type: "text",
|
|
593947
|
-
value: "1.3.
|
|
594225
|
+
value: "1.3.429"
|
|
593948
594226
|
};
|
|
593949
594227
|
}, version2, version_default;
|
|
593950
594228
|
var init_version = __esm(() => {
|
|
@@ -593954,7 +594232,7 @@ var init_version = __esm(() => {
|
|
|
593954
594232
|
description: "Print the version this session is running (not what autoupdate downloaded)",
|
|
593955
594233
|
isEnabled: () => false,
|
|
593956
594234
|
supportsNonInteractive: true,
|
|
593957
|
-
load: () => Promise.resolve({ call:
|
|
594235
|
+
load: () => Promise.resolve({ call: call48 })
|
|
593958
594236
|
};
|
|
593959
594237
|
version_default = version2;
|
|
593960
594238
|
});
|
|
@@ -595088,10 +595366,10 @@ var init_SandboxSettings = __esm(() => {
|
|
|
595088
595366
|
// src/commands/sandbox-toggle/sandbox-toggle.tsx
|
|
595089
595367
|
var exports_sandbox_toggle = {};
|
|
595090
595368
|
__export(exports_sandbox_toggle, {
|
|
595091
|
-
call: () =>
|
|
595369
|
+
call: () => call49
|
|
595092
595370
|
});
|
|
595093
595371
|
import { relative as relative32 } from "path";
|
|
595094
|
-
async function
|
|
595372
|
+
async function call49(onDone, _context, args) {
|
|
595095
595373
|
const settings = getSettings_DEPRECATED();
|
|
595096
595374
|
const themeName = settings.theme || "light";
|
|
595097
595375
|
const platform4 = getPlatform();
|
|
@@ -595198,9 +595476,9 @@ var init_sandbox_toggle2 = __esm(() => {
|
|
|
595198
595476
|
// src/commands/contactMe/contactMe.ts
|
|
595199
595477
|
var exports_contactMe = {};
|
|
595200
595478
|
__export(exports_contactMe, {
|
|
595201
|
-
call: () =>
|
|
595479
|
+
call: () => call50
|
|
595202
595480
|
});
|
|
595203
|
-
async function
|
|
595481
|
+
async function call50() {
|
|
595204
595482
|
const linkedinOk = await openBrowser(LINKEDIN_URL);
|
|
595205
595483
|
const githubOk = await openBrowser(GITHUB_URL);
|
|
595206
595484
|
if (linkedinOk && githubOk) {
|
|
@@ -595237,7 +595515,7 @@ var init_contactMe2 = __esm(() => {
|
|
|
595237
595515
|
});
|
|
595238
595516
|
|
|
595239
595517
|
// src/commands/advisor.ts
|
|
595240
|
-
var
|
|
595518
|
+
var call51 = async (args, context2) => {
|
|
595241
595519
|
const arg = args.trim().toLowerCase();
|
|
595242
595520
|
const baseModel = parseUserSpecifiedModel(context2.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
|
|
595243
595521
|
if (!arg) {
|
|
@@ -595323,7 +595601,7 @@ var init_advisor2 = __esm(() => {
|
|
|
595323
595601
|
return !canUserConfigureAdvisor();
|
|
595324
595602
|
},
|
|
595325
595603
|
supportsNonInteractive: true,
|
|
595326
|
-
load: () => Promise.resolve({ call:
|
|
595604
|
+
load: () => Promise.resolve({ call: call51 })
|
|
595327
595605
|
};
|
|
595328
595606
|
advisor_default = advisor;
|
|
595329
595607
|
});
|
|
@@ -595731,12 +596009,12 @@ var init_ExitFlow = __esm(() => {
|
|
|
595731
596009
|
// src/commands/exit/exit.tsx
|
|
595732
596010
|
var exports_exit = {};
|
|
595733
596011
|
__export(exports_exit, {
|
|
595734
|
-
call: () =>
|
|
596012
|
+
call: () => call52
|
|
595735
596013
|
});
|
|
595736
596014
|
function getRandomGoodbyeMessage2() {
|
|
595737
596015
|
return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
|
|
595738
596016
|
}
|
|
595739
|
-
async function
|
|
596017
|
+
async function call52(onDone) {
|
|
595740
596018
|
if (false) {}
|
|
595741
596019
|
const showWorktree = getCurrentWorktreeSession() !== null;
|
|
595742
596020
|
if (showWorktree) {
|
|
@@ -596030,7 +596308,7 @@ var exports_export = {};
|
|
|
596030
596308
|
__export(exports_export, {
|
|
596031
596309
|
sanitizeFilename: () => sanitizeFilename,
|
|
596032
596310
|
extractFirstPrompt: () => extractFirstPrompt,
|
|
596033
|
-
call: () =>
|
|
596311
|
+
call: () => call53
|
|
596034
596312
|
});
|
|
596035
596313
|
import { join as join142 } from "path";
|
|
596036
596314
|
function formatTimestamp(date6) {
|
|
@@ -596071,7 +596349,7 @@ async function exportWithReactRenderer(context2) {
|
|
|
596071
596349
|
const tools = context2.options.tools || [];
|
|
596072
596350
|
return renderMessagesToPlainText(context2.messages, tools);
|
|
596073
596351
|
}
|
|
596074
|
-
async function
|
|
596352
|
+
async function call53(onDone, context2, args) {
|
|
596075
596353
|
const content = await exportWithReactRenderer(context2);
|
|
596076
596354
|
const filename = args.trim();
|
|
596077
596355
|
if (filename) {
|
|
@@ -596346,7 +596624,10 @@ function RayuProviderSetup({
|
|
|
596346
596624
|
setBaseURL(p.baseURL ?? "");
|
|
596347
596625
|
setModel(p.defaultModel ?? "");
|
|
596348
596626
|
setCursor(0);
|
|
596349
|
-
if (p.
|
|
596627
|
+
if (p.id === "ollama") {
|
|
596628
|
+
setFetchError(null);
|
|
596629
|
+
setPhase("ollamaDetect");
|
|
596630
|
+
} else if (p.kind === "genai")
|
|
596350
596631
|
setPhase("genaiLogin");
|
|
596351
596632
|
else if (p.kind === "vertex" || p.requiresOAuth)
|
|
596352
596633
|
setPhase("vertexAuth");
|
|
@@ -596569,7 +596850,51 @@ function RayuProviderSetup({
|
|
|
596569
596850
|
cancelled = true;
|
|
596570
596851
|
};
|
|
596571
596852
|
}, [phase, apiKey, region]);
|
|
596853
|
+
import_react180.default.useEffect(() => {
|
|
596854
|
+
if (phase !== "ollamaDetect")
|
|
596855
|
+
return;
|
|
596856
|
+
let cancelled = false;
|
|
596857
|
+
setFetchError(null);
|
|
596858
|
+
(async () => {
|
|
596859
|
+
const baseURL2 = ollamaBaseURL();
|
|
596860
|
+
const base2 = {
|
|
596861
|
+
id: "ollama",
|
|
596862
|
+
kind: "openai-compatible",
|
|
596863
|
+
baseURL: baseURL2,
|
|
596864
|
+
apiKey: process.env.OLLAMA_API_KEY || "ollama"
|
|
596865
|
+
};
|
|
596866
|
+
const models = await fetchProviderModels(base2).catch(() => []);
|
|
596867
|
+
if (cancelled)
|
|
596868
|
+
return;
|
|
596869
|
+
if (models.length === 0) {
|
|
596870
|
+
setFetchError(`Couldn't reach Ollama at ${baseURL2.replace(/\/v1$/, "")}. Make sure it's running ("ollama serve") and you've pulled a model ("ollama pull llama3.2"). Set OLLAMA_HOST to use a different address.`);
|
|
596871
|
+
setPhase("ollamaError");
|
|
596872
|
+
return;
|
|
596873
|
+
}
|
|
596874
|
+
const chat2 = models.filter(isLikelyChatModel);
|
|
596875
|
+
const list = chat2.length > 0 ? chat2 : models;
|
|
596876
|
+
const preferred = list.find((m3) => /coder|code/i.test(m3)) ?? list.find((m3) => /qwen|llama|gemma|mistral|deepseek|phi|gpt/i.test(m3)) ?? list[0];
|
|
596877
|
+
upsertProvider({ ...base2, fetchedModels: list, defaultModel: preferred }, true);
|
|
596878
|
+
if (cancelled)
|
|
596879
|
+
return;
|
|
596880
|
+
onDone();
|
|
596881
|
+
})();
|
|
596882
|
+
return () => {
|
|
596883
|
+
cancelled = true;
|
|
596884
|
+
};
|
|
596885
|
+
}, [phase]);
|
|
596572
596886
|
if (phase === "pick") {
|
|
596887
|
+
const localIds = new Set(["ollama", "local"]);
|
|
596888
|
+
const pickOptions = [
|
|
596889
|
+
...PRESETS.filter((p) => !localIds.has(p.id)).map((p) => ({
|
|
596890
|
+
label: p.label,
|
|
596891
|
+
value: p.id
|
|
596892
|
+
})),
|
|
596893
|
+
{
|
|
596894
|
+
label: "Localhost (Ollama / custom OpenAI-compatible endpoint)",
|
|
596895
|
+
value: "__localhost__"
|
|
596896
|
+
}
|
|
596897
|
+
];
|
|
596573
596898
|
return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedBox_default, {
|
|
596574
596899
|
flexDirection: "column",
|
|
596575
596900
|
gap: 1,
|
|
@@ -596588,8 +596913,12 @@ function RayuProviderSetup({
|
|
|
596588
596913
|
children: "Choose a model provider. You can change or add more later with /model."
|
|
596589
596914
|
}, undefined, false, undefined, this),
|
|
596590
596915
|
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(Select, {
|
|
596591
|
-
options:
|
|
596916
|
+
options: pickOptions,
|
|
596592
596917
|
onChange: (v2) => {
|
|
596918
|
+
if (v2 === "__localhost__") {
|
|
596919
|
+
setPhase("localChoice");
|
|
596920
|
+
return;
|
|
596921
|
+
}
|
|
596593
596922
|
const p = PRESETS.find((x4) => x4.id === v2);
|
|
596594
596923
|
if (p)
|
|
596595
596924
|
pick3(p);
|
|
@@ -596599,6 +596928,97 @@ function RayuProviderSetup({
|
|
|
596599
596928
|
]
|
|
596600
596929
|
}, undefined, true, undefined, this);
|
|
596601
596930
|
}
|
|
596931
|
+
if (phase === "localChoice") {
|
|
596932
|
+
return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedBox_default, {
|
|
596933
|
+
flexDirection: "column",
|
|
596934
|
+
gap: 1,
|
|
596935
|
+
paddingLeft: 1,
|
|
596936
|
+
children: [
|
|
596937
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedText, {
|
|
596938
|
+
bold: true,
|
|
596939
|
+
children: "Localhost provider"
|
|
596940
|
+
}, undefined, false, undefined, this),
|
|
596941
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedText, {
|
|
596942
|
+
dimColor: true,
|
|
596943
|
+
children: "Run models on your own machine. Ollama is auto-detected; or point Rayu at any local OpenAI-compatible server."
|
|
596944
|
+
}, undefined, false, undefined, this),
|
|
596945
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(Select, {
|
|
596946
|
+
options: [
|
|
596947
|
+
{
|
|
596948
|
+
label: "Ollama — auto-detect running models (localhost:11434)",
|
|
596949
|
+
value: "ollama"
|
|
596950
|
+
},
|
|
596951
|
+
{
|
|
596952
|
+
label: "Custom OpenAI-compatible endpoint (LM Studio, llama.cpp, vLLM, …)",
|
|
596953
|
+
value: "local"
|
|
596954
|
+
}
|
|
596955
|
+
],
|
|
596956
|
+
onChange: (v2) => {
|
|
596957
|
+
const p = PRESETS.find((x4) => x4.id === v2);
|
|
596958
|
+
if (p)
|
|
596959
|
+
pick3(p);
|
|
596960
|
+
},
|
|
596961
|
+
onCancel: () => setPhase("pick")
|
|
596962
|
+
}, undefined, false, undefined, this)
|
|
596963
|
+
]
|
|
596964
|
+
}, undefined, true, undefined, this);
|
|
596965
|
+
}
|
|
596966
|
+
if (phase === "ollamaDetect") {
|
|
596967
|
+
return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedBox_default, {
|
|
596968
|
+
flexDirection: "column",
|
|
596969
|
+
gap: 1,
|
|
596970
|
+
paddingLeft: 1,
|
|
596971
|
+
children: [
|
|
596972
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedText, {
|
|
596973
|
+
bold: true,
|
|
596974
|
+
children: "Connecting to Ollama…"
|
|
596975
|
+
}, undefined, false, undefined, this),
|
|
596976
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedText, {
|
|
596977
|
+
dimColor: true,
|
|
596978
|
+
children: [
|
|
596979
|
+
"Detecting models from ",
|
|
596980
|
+
ollamaBaseURL().replace(/\/v1$/, ""),
|
|
596981
|
+
"."
|
|
596982
|
+
]
|
|
596983
|
+
}, undefined, true, undefined, this)
|
|
596984
|
+
]
|
|
596985
|
+
}, undefined, true, undefined, this);
|
|
596986
|
+
}
|
|
596987
|
+
if (phase === "ollamaError") {
|
|
596988
|
+
return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedBox_default, {
|
|
596989
|
+
flexDirection: "column",
|
|
596990
|
+
gap: 1,
|
|
596991
|
+
paddingLeft: 1,
|
|
596992
|
+
children: [
|
|
596993
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedText, {
|
|
596994
|
+
bold: true,
|
|
596995
|
+
children: "Ollama not reachable"
|
|
596996
|
+
}, undefined, false, undefined, this),
|
|
596997
|
+
fetchError ? /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedText, {
|
|
596998
|
+
color: "yellow",
|
|
596999
|
+
children: fetchError
|
|
597000
|
+
}, undefined, false, undefined, this) : null,
|
|
597001
|
+
/* @__PURE__ */ jsx_dev_runtime325.jsxDEV(Select, {
|
|
597002
|
+
options: [
|
|
597003
|
+
{ label: "Retry detection", value: "retry" },
|
|
597004
|
+
{ label: "Enter a custom endpoint instead", value: "local" },
|
|
597005
|
+
{ label: "Cancel", value: "cancel" }
|
|
597006
|
+
],
|
|
597007
|
+
onChange: (v2) => {
|
|
597008
|
+
if (v2 === "retry")
|
|
597009
|
+
setPhase("ollamaDetect");
|
|
597010
|
+
else if (v2 === "local") {
|
|
597011
|
+
const p = PRESETS.find((x4) => x4.id === "local");
|
|
597012
|
+
if (p)
|
|
597013
|
+
pick3(p);
|
|
597014
|
+
} else
|
|
597015
|
+
onDone();
|
|
597016
|
+
},
|
|
597017
|
+
onCancel: () => setPhase("localChoice")
|
|
597018
|
+
}, undefined, false, undefined, this)
|
|
597019
|
+
]
|
|
597020
|
+
}, undefined, true, undefined, this);
|
|
597021
|
+
}
|
|
596602
597022
|
if (phase === "baseURL") {
|
|
596603
597023
|
return /* @__PURE__ */ jsx_dev_runtime325.jsxDEV(ThemedBox_default, {
|
|
596604
597024
|
flexDirection: "column",
|
|
@@ -597115,7 +597535,7 @@ var init_SearchableModelPicker = __esm(() => {
|
|
|
597115
597535
|
// src/commands/connect/connect.tsx
|
|
597116
597536
|
var exports_connect = {};
|
|
597117
597537
|
__export(exports_connect, {
|
|
597118
|
-
call: () =>
|
|
597538
|
+
call: () => call54
|
|
597119
597539
|
});
|
|
597120
597540
|
function ConnectFlow({ onDone }) {
|
|
597121
597541
|
const [phase, setPhase] = React100.useState("setup");
|
|
@@ -597128,7 +597548,7 @@ function ConnectFlow({ onDone }) {
|
|
|
597128
597548
|
onDone
|
|
597129
597549
|
}, undefined, false, undefined, this);
|
|
597130
597550
|
}
|
|
597131
|
-
var React100, jsx_dev_runtime327,
|
|
597551
|
+
var React100, jsx_dev_runtime327, call54 = async (onDone, _context, _args) => {
|
|
597132
597552
|
return /* @__PURE__ */ jsx_dev_runtime327.jsxDEV(ConnectFlow, {
|
|
597133
597553
|
onDone
|
|
597134
597554
|
}, undefined, false, undefined, this);
|
|
@@ -597154,7 +597574,7 @@ var init_connect2 = __esm(() => {
|
|
|
597154
597574
|
// src/commands/install-skill/install-skill.tsx
|
|
597155
597575
|
var exports_install_skill = {};
|
|
597156
597576
|
__export(exports_install_skill, {
|
|
597157
|
-
call: () =>
|
|
597577
|
+
call: () => call55
|
|
597158
597578
|
});
|
|
597159
597579
|
function InstallSkillFlow({
|
|
597160
597580
|
source,
|
|
@@ -597249,7 +597669,7 @@ function InstallSkillFlow({
|
|
|
597249
597669
|
]
|
|
597250
597670
|
}, undefined, true, undefined, this);
|
|
597251
597671
|
}
|
|
597252
|
-
var import_react181, jsx_dev_runtime328,
|
|
597672
|
+
var import_react181, jsx_dev_runtime328, call55 = async (onDone, _context, args) => {
|
|
597253
597673
|
const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
|
|
597254
597674
|
const overwrite = tokens.includes("--overwrite");
|
|
597255
597675
|
const source = tokens.filter((t2) => t2 !== "--overwrite").join(" ").trim();
|
|
@@ -597300,7 +597720,7 @@ var init_immediateCommand = __esm(() => {
|
|
|
597300
597720
|
// src/commands/model/model.tsx
|
|
597301
597721
|
var exports_model2 = {};
|
|
597302
597722
|
__export(exports_model2, {
|
|
597303
|
-
call: () =>
|
|
597723
|
+
call: () => call56
|
|
597304
597724
|
});
|
|
597305
597725
|
function ModelPickerWrapper(t0) {
|
|
597306
597726
|
const $3 = import_compiler_runtime244.c(17);
|
|
@@ -597550,7 +597970,7 @@ function renderModelLabel(model) {
|
|
|
597550
597970
|
const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
|
|
597551
597971
|
return model === null ? `${rendered} (default)` : rendered;
|
|
597552
597972
|
}
|
|
597553
|
-
var import_compiler_runtime244, React102, jsx_dev_runtime329,
|
|
597973
|
+
var import_compiler_runtime244, React102, jsx_dev_runtime329, call56 = async (onDone, _context, args) => {
|
|
597554
597974
|
args = args?.trim() || "";
|
|
597555
597975
|
if (COMMON_INFO_ARGS.includes(args)) {
|
|
597556
597976
|
logEvent("tengu_model_command_inline_help", {
|
|
@@ -597627,7 +598047,7 @@ var init_model3 = __esm(() => {
|
|
|
597627
598047
|
// src/commands/model-subagent/command.tsx
|
|
597628
598048
|
var exports_command = {};
|
|
597629
598049
|
__export(exports_command, {
|
|
597630
|
-
call: () =>
|
|
598050
|
+
call: () => call57
|
|
597631
598051
|
});
|
|
597632
598052
|
function resolveAgentType(token) {
|
|
597633
598053
|
const t2 = token.trim().toLowerCase();
|
|
@@ -597635,7 +598055,7 @@ function resolveAgentType(token) {
|
|
|
597635
598055
|
return;
|
|
597636
598056
|
return SUBAGENT_TYPES.find((a2) => a2.toLowerCase() === t2);
|
|
597637
598057
|
}
|
|
597638
|
-
var jsx_dev_runtime330, COST_TIP = "Tip: subagents run frequently — a large model here costs more and is usually overkill for small subtasks. Prefer an instant/small model (e.g. Claude Opus 4.8 as a subagent is overkill).", SUBCOMMANDS,
|
|
598058
|
+
var jsx_dev_runtime330, COST_TIP = "Tip: subagents run frequently — a large model here costs more and is usually overkill for small subtasks. Prefer an instant/small model (e.g. Claude Opus 4.8 as a subagent is overkill).", SUBCOMMANDS, call57 = async (onDone, _context, args) => {
|
|
597639
598059
|
const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
|
|
597640
598060
|
let agentType;
|
|
597641
598061
|
let sub = "";
|
|
@@ -597708,7 +598128,7 @@ var init_model_subagent = __esm(() => {
|
|
|
597708
598128
|
// src/commands/collaborator-model/command.tsx
|
|
597709
598129
|
var exports_command2 = {};
|
|
597710
598130
|
__export(exports_command2, {
|
|
597711
|
-
call: () =>
|
|
598131
|
+
call: () => call58
|
|
597712
598132
|
});
|
|
597713
598133
|
function resolveCollaborator(token) {
|
|
597714
598134
|
const t2 = token.trim().toLowerCase();
|
|
@@ -597716,7 +598136,7 @@ function resolveCollaborator(token) {
|
|
|
597716
598136
|
return;
|
|
597717
598137
|
return COLLABORATOR_AGENT_TYPES.find((a2) => a2.toLowerCase() === t2);
|
|
597718
598138
|
}
|
|
597719
|
-
var jsx_dev_runtime331, COST_TIP2 = "Collaborators implement and iterate, so they benefit from a capable model. By default they inherit the main agent’s model; set a specific one here if you want a collaborator on a different/cheaper provider.", SUBCOMMANDS2,
|
|
598139
|
+
var jsx_dev_runtime331, COST_TIP2 = "Collaborators implement and iterate, so they benefit from a capable model. By default they inherit the main agent’s model; set a specific one here if you want a collaborator on a different/cheaper provider.", SUBCOMMANDS2, call58 = async (onDone, _context, args) => {
|
|
597720
598140
|
const tokens = (args ?? "").trim().split(/\s+/).filter(Boolean);
|
|
597721
598141
|
let collaborator;
|
|
597722
598142
|
let sub = "";
|
|
@@ -597811,7 +598231,7 @@ var init_collaborator_model = __esm(() => {
|
|
|
597811
598231
|
// src/commands/model-image-generation/command.tsx
|
|
597812
598232
|
var exports_command3 = {};
|
|
597813
598233
|
__export(exports_command3, {
|
|
597814
|
-
call: () =>
|
|
598234
|
+
call: () => call59
|
|
597815
598235
|
});
|
|
597816
598236
|
function backendLabel(provider) {
|
|
597817
598237
|
return provider === "vertex" ? "Vertex (Imagen)" : "NVIDIA";
|
|
@@ -597854,7 +598274,7 @@ function ImageModelPicker({
|
|
|
597854
598274
|
]
|
|
597855
598275
|
}, undefined, true, undefined, this);
|
|
597856
598276
|
}
|
|
597857
|
-
var jsx_dev_runtime332,
|
|
598277
|
+
var jsx_dev_runtime332, call59 = async (onDone) => {
|
|
597858
598278
|
return /* @__PURE__ */ jsx_dev_runtime332.jsxDEV(ImageModelPicker, {
|
|
597859
598279
|
onDone
|
|
597860
598280
|
}, undefined, false, undefined, this);
|
|
@@ -597885,7 +598305,7 @@ var init_model_image_generation = __esm(() => {
|
|
|
597885
598305
|
// src/commands/model-video-generation/command.tsx
|
|
597886
598306
|
var exports_command4 = {};
|
|
597887
598307
|
__export(exports_command4, {
|
|
597888
|
-
call: () =>
|
|
598308
|
+
call: () => call60
|
|
597889
598309
|
});
|
|
597890
598310
|
function backendLabel2(backend) {
|
|
597891
598311
|
if (backend === "vertex")
|
|
@@ -597932,7 +598352,7 @@ function VideoModelPicker({
|
|
|
597932
598352
|
]
|
|
597933
598353
|
}, undefined, true, undefined, this);
|
|
597934
598354
|
}
|
|
597935
|
-
var jsx_dev_runtime333,
|
|
598355
|
+
var jsx_dev_runtime333, call60 = async (onDone) => {
|
|
597936
598356
|
return /* @__PURE__ */ jsx_dev_runtime333.jsxDEV(VideoModelPicker, {
|
|
597937
598357
|
onDone
|
|
597938
598358
|
}, undefined, false, undefined, this);
|
|
@@ -597963,7 +598383,7 @@ var init_model_video_generation = __esm(() => {
|
|
|
597963
598383
|
// src/commands/tag/tag.tsx
|
|
597964
598384
|
var exports_tag = {};
|
|
597965
598385
|
__export(exports_tag, {
|
|
597966
|
-
call: () =>
|
|
598386
|
+
call: () => call61
|
|
597967
598387
|
});
|
|
597968
598388
|
function ConfirmRemoveTag(t0) {
|
|
597969
598389
|
const $3 = import_compiler_runtime245.c(11);
|
|
@@ -598187,7 +598607,7 @@ Examples:
|
|
|
598187
598607
|
React103.useEffect(t1, t2);
|
|
598188
598608
|
return null;
|
|
598189
598609
|
}
|
|
598190
|
-
async function
|
|
598610
|
+
async function call61(onDone, _context, args) {
|
|
598191
598611
|
args = args?.trim() || "";
|
|
598192
598612
|
if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
|
|
598193
598613
|
return /* @__PURE__ */ jsx_dev_runtime334.jsxDEV(ShowHelp, {
|
|
@@ -598236,9 +598656,9 @@ var init_tag2 = __esm(() => {
|
|
|
598236
598656
|
// src/commands/output-style/output-style.tsx
|
|
598237
598657
|
var exports_output_style = {};
|
|
598238
598658
|
__export(exports_output_style, {
|
|
598239
|
-
call: () =>
|
|
598659
|
+
call: () => call62
|
|
598240
598660
|
});
|
|
598241
|
-
async function
|
|
598661
|
+
async function call62(onDone) {
|
|
598242
598662
|
onDone("/output-style has been deprecated. Use /config to change your output style, or set it in your settings file. Changes take effect on the next session.", {
|
|
598243
598663
|
display: "system"
|
|
598244
598664
|
});
|
|
@@ -598287,7 +598707,7 @@ var exports_effort = {};
|
|
|
598287
598707
|
__export(exports_effort, {
|
|
598288
598708
|
showCurrentEffort: () => showCurrentEffort,
|
|
598289
598709
|
executeEffort: () => executeEffort,
|
|
598290
|
-
call: () =>
|
|
598710
|
+
call: () => call63
|
|
598291
598711
|
});
|
|
598292
598712
|
function setEffortValue(effortValue) {
|
|
598293
598713
|
const persistable = toPersistableEffort(effortValue);
|
|
@@ -598438,7 +598858,7 @@ function ApplyEffortAndClose(t0) {
|
|
|
598438
598858
|
React104.useEffect(t1, t2);
|
|
598439
598859
|
return null;
|
|
598440
598860
|
}
|
|
598441
|
-
async function
|
|
598861
|
+
async function call63(onDone, _context, args) {
|
|
598442
598862
|
args = args?.trim() || "";
|
|
598443
598863
|
if (COMMON_HELP_ARGS2.includes(args)) {
|
|
598444
598864
|
onDone(`Usage: /effort [low|medium|high|max|auto]
|
|
@@ -601347,9 +601767,9 @@ var init_Stats = __esm(() => {
|
|
|
601347
601767
|
// src/commands/stats/stats.tsx
|
|
601348
601768
|
var exports_stats = {};
|
|
601349
601769
|
__export(exports_stats, {
|
|
601350
|
-
call: () =>
|
|
601770
|
+
call: () => call64
|
|
601351
601771
|
});
|
|
601352
|
-
var jsx_dev_runtime337,
|
|
601772
|
+
var jsx_dev_runtime337, call64 = async (onDone) => {
|
|
601353
601773
|
return /* @__PURE__ */ jsx_dev_runtime337.jsxDEV(Stats2, {
|
|
601354
601774
|
onClose: onDone
|
|
601355
601775
|
}, undefined, false, undefined, this);
|
|
@@ -602841,7 +603261,7 @@ function generateHtmlReport(data, insights) {
|
|
|
602841
603261
|
</html>`;
|
|
602842
603262
|
}
|
|
602843
603263
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
602844
|
-
const version3 = typeof MACRO !== "undefined" ? "1.3.
|
|
603264
|
+
const version3 = typeof MACRO !== "undefined" ? "1.3.429" : "unknown";
|
|
602845
603265
|
const remote_hosts_collected = remoteStats?.hosts.filter((h3) => h3.sessionCount > 0).map((h3) => h3.name);
|
|
602846
603266
|
const facets_summary = {
|
|
602847
603267
|
total: facets.size,
|
|
@@ -603584,6 +604004,7 @@ var init_commands2 = __esm(() => {
|
|
|
603584
604004
|
init_init2();
|
|
603585
604005
|
init_init_verifiers();
|
|
603586
604006
|
init_collaborator_swarm();
|
|
604007
|
+
init_normal2();
|
|
603587
604008
|
init_keybindings2();
|
|
603588
604009
|
init_keep2();
|
|
603589
604010
|
init_mcp3();
|
|
@@ -603726,6 +604147,7 @@ var init_commands2 = __esm(() => {
|
|
|
603726
604147
|
feedback_default,
|
|
603727
604148
|
review_default,
|
|
603728
604149
|
collaborator_swarm_default,
|
|
604150
|
+
normal_default,
|
|
603729
604151
|
ultraplan_local_default,
|
|
603730
604152
|
ultrareview_local_default,
|
|
603731
604153
|
generate_image_default,
|
|
@@ -606741,7 +607163,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
606741
607163
|
init_settings2();
|
|
606742
607164
|
init_slowOperations();
|
|
606743
607165
|
init_uuid();
|
|
606744
|
-
VERSION6 = typeof MACRO !== "undefined" ? "1.3.
|
|
607166
|
+
VERSION6 = typeof MACRO !== "undefined" ? "1.3.429" : "unknown";
|
|
606745
607167
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
606746
607168
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
606747
607169
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -607962,7 +608384,7 @@ var init_filesystem = __esm(() => {
|
|
|
607962
608384
|
});
|
|
607963
608385
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
607964
608386
|
const nonce = randomBytes18(16).toString("hex");
|
|
607965
|
-
return join150(getClaudeTempDir(), "bundled-skills", "1.3.
|
|
608387
|
+
return join150(getClaudeTempDir(), "bundled-skills", "1.3.429", nonce);
|
|
607966
608388
|
});
|
|
607967
608389
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
607968
608390
|
});
|
|
@@ -613077,7 +613499,7 @@ __export(exports_update, {
|
|
|
613077
613499
|
import { execFileSync as execFileSync3 } from "node:child_process";
|
|
613078
613500
|
import { homedir as homedir33 } from "os";
|
|
613079
613501
|
async function update() {
|
|
613080
|
-
writeToStdout(`Current version: ${"1.3.
|
|
613502
|
+
writeToStdout(`Current version: ${"1.3.429"}
|
|
613081
613503
|
`);
|
|
613082
613504
|
const isBundled = isInBundledMode();
|
|
613083
613505
|
if (isBundled) {
|
|
@@ -613103,13 +613525,13 @@ Manual check: npm view ${"@rayu-dev/rayu-cli"} version
|
|
|
613103
613525
|
process.exit(1);
|
|
613104
613526
|
return;
|
|
613105
613527
|
}
|
|
613106
|
-
if (latestVersion === "1.3.
|
|
613528
|
+
if (latestVersion === "1.3.429") {
|
|
613107
613529
|
writeToStdout(source_default.green(`
|
|
613108
|
-
Rayu CLI is up to date (${"1.3.
|
|
613530
|
+
Rayu CLI is up to date (${"1.3.429"})
|
|
613109
613531
|
`));
|
|
613110
613532
|
process.exit(0);
|
|
613111
613533
|
}
|
|
613112
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.3.
|
|
613534
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.3.429"})
|
|
613113
613535
|
`);
|
|
613114
613536
|
writeToStdout(`Installing update...
|
|
613115
613537
|
|
|
@@ -613133,7 +613555,7 @@ Try manually:
|
|
|
613133
613555
|
return;
|
|
613134
613556
|
}
|
|
613135
613557
|
writeToStdout(source_default.green(`
|
|
613136
|
-
Successfully updated from ${"1.3.
|
|
613558
|
+
Successfully updated from ${"1.3.429"} to ${latestVersion}
|
|
613137
613559
|
`));
|
|
613138
613560
|
process.exit(0);
|
|
613139
613561
|
}
|
|
@@ -613147,14 +613569,14 @@ async function updateNativeBinary() {
|
|
|
613147
613569
|
} catch {
|
|
613148
613570
|
latestVersion = "";
|
|
613149
613571
|
}
|
|
613150
|
-
if (latestVersion && latestVersion === "1.3.
|
|
613572
|
+
if (latestVersion && latestVersion === "1.3.429") {
|
|
613151
613573
|
writeToStdout(source_default.green(`
|
|
613152
|
-
Rayu CLI is up to date (1.3.
|
|
613574
|
+
Rayu CLI is up to date (1.3.429)
|
|
613153
613575
|
`));
|
|
613154
613576
|
process.exit(0);
|
|
613155
613577
|
}
|
|
613156
613578
|
if (latestVersion) {
|
|
613157
|
-
writeToStdout(`New version available: ${latestVersion} (current: 1.3.
|
|
613579
|
+
writeToStdout(`New version available: ${latestVersion} (current: 1.3.429)
|
|
613158
613580
|
`);
|
|
613159
613581
|
}
|
|
613160
613582
|
writeToStdout(`Downloading and installing update...
|
|
@@ -613169,13 +613591,13 @@ Rayu CLI is up to date (1.3.427)
|
|
|
613169
613591
|
return;
|
|
613170
613592
|
}
|
|
613171
613593
|
writeToStdout(source_default.green(`
|
|
613172
|
-
Rayu CLI is up to date (1.3.
|
|
613594
|
+
Rayu CLI is up to date (1.3.429)
|
|
613173
613595
|
`));
|
|
613174
613596
|
process.exit(0);
|
|
613175
613597
|
}
|
|
613176
613598
|
const updatedTo = result.latestVersion ?? latestVersion ?? "latest";
|
|
613177
613599
|
writeToStdout(source_default.green(`
|
|
613178
|
-
Successfully updated from 1.3.
|
|
613600
|
+
Successfully updated from 1.3.429 to ${updatedTo}
|
|
613179
613601
|
`));
|
|
613180
613602
|
writeToStdout(`Restart your terminal to use the new version.
|
|
613181
613603
|
`);
|
|
@@ -613206,7 +613628,7 @@ __export(exports_uninstall, {
|
|
|
613206
613628
|
import { execFileSync as execFileSync4 } from "node:child_process";
|
|
613207
613629
|
import { homedir as homedir34 } from "os";
|
|
613208
613630
|
async function uninstall() {
|
|
613209
|
-
writeToStdout(`Uninstalling Rayu CLI (${"1.3.
|
|
613631
|
+
writeToStdout(`Uninstalling Rayu CLI (${"1.3.429"})...
|
|
613210
613632
|
`);
|
|
613211
613633
|
writeToStdout(`Running: npm uninstall -g ${"@rayu-dev/rayu-cli"}
|
|
613212
613634
|
|
|
@@ -613229,7 +613651,7 @@ Try running manually:
|
|
|
613229
613651
|
process.exit(1);
|
|
613230
613652
|
}
|
|
613231
613653
|
writeToStdout(source_default.green(`
|
|
613232
|
-
Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.3.
|
|
613654
|
+
Successfully uninstalled ${"@rayu-dev/rayu-cli"} ${"1.3.429"}
|
|
613233
613655
|
`));
|
|
613234
613656
|
writeToStdout(`Thanks for using Rayu CLI!
|
|
613235
613657
|
`);
|
|
@@ -613281,7 +613703,7 @@ function showFirstRunWelcome() {
|
|
|
613281
613703
|
`);
|
|
613282
613704
|
try {
|
|
613283
613705
|
mkdirSync13(getRayuConfigHomeDir(), { recursive: true });
|
|
613284
|
-
writeFileSync15(markerPath(), "1.3.
|
|
613706
|
+
writeFileSync15(markerPath(), "1.3.429", "utf8");
|
|
613285
613707
|
} catch {}
|
|
613286
613708
|
}
|
|
613287
613709
|
var init_firstRun = __esm(() => {
|
|
@@ -625124,7 +625546,7 @@ async function initializeBetaTracing(resource) {
|
|
|
625124
625546
|
});
|
|
625125
625547
|
import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
|
|
625126
625548
|
setLoggerProvider(loggerProvider);
|
|
625127
|
-
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.
|
|
625549
|
+
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.429");
|
|
625128
625550
|
setEventLogger(eventLogger);
|
|
625129
625551
|
process.on("beforeExit", async () => {
|
|
625130
625552
|
await loggerProvider?.forceFlush();
|
|
@@ -625164,7 +625586,7 @@ async function initializeTelemetry() {
|
|
|
625164
625586
|
const platform4 = getPlatform();
|
|
625165
625587
|
const baseAttributes = {
|
|
625166
625588
|
[import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
|
|
625167
|
-
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.3.
|
|
625589
|
+
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "1.3.429"
|
|
625168
625590
|
};
|
|
625169
625591
|
if (platform4 === "wsl") {
|
|
625170
625592
|
const wslVersion = getWslVersion();
|
|
@@ -625209,7 +625631,7 @@ async function initializeTelemetry() {
|
|
|
625209
625631
|
} catch {}
|
|
625210
625632
|
};
|
|
625211
625633
|
registerCleanup(shutdownTelemetry2);
|
|
625212
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "1.3.
|
|
625634
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.3.429");
|
|
625213
625635
|
}
|
|
625214
625636
|
const meterProvider = new import_sdk_metrics2.MeterProvider({
|
|
625215
625637
|
resource,
|
|
@@ -625229,7 +625651,7 @@ async function initializeTelemetry() {
|
|
|
625229
625651
|
});
|
|
625230
625652
|
import_api_logs.logs.setGlobalLoggerProvider(loggerProvider);
|
|
625231
625653
|
setLoggerProvider(loggerProvider);
|
|
625232
|
-
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.
|
|
625654
|
+
const eventLogger = import_api_logs.logs.getLogger("com.anthropic.claude_code.events", "1.3.429");
|
|
625233
625655
|
setEventLogger(eventLogger);
|
|
625234
625656
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
625235
625657
|
process.on("beforeExit", async () => {
|
|
@@ -625291,7 +625713,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
625291
625713
|
}
|
|
625292
625714
|
};
|
|
625293
625715
|
registerCleanup(shutdownTelemetry);
|
|
625294
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "1.3.
|
|
625716
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.3.429");
|
|
625295
625717
|
}
|
|
625296
625718
|
async function flushTelemetry() {
|
|
625297
625719
|
const meterProvider = getMeterProvider();
|
|
@@ -626804,7 +627226,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
626804
627226
|
slash_commands: inputs.commands.filter((c4) => c4.userInvocable !== false).map((c4) => c4.name),
|
|
626805
627227
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
626806
627228
|
betas: getSdkBetas(),
|
|
626807
|
-
claude_code_version: "1.3.
|
|
627229
|
+
claude_code_version: "1.3.429",
|
|
626808
627230
|
output_style: outputStyle2,
|
|
626809
627231
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
626810
627232
|
skills: inputs.skills.filter((s2) => s2.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -643013,7 +643435,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
643013
643435
|
function getSemverPart(version3) {
|
|
643014
643436
|
return `${import_semver12.major(version3, { loose: true })}.${import_semver12.minor(version3, { loose: true })}.${import_semver12.patch(version3, { loose: true })}`;
|
|
643015
643437
|
}
|
|
643016
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.3.
|
|
643438
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.3.429") {
|
|
643017
643439
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react218.useState(() => getSemverPart(initialVersion));
|
|
643018
643440
|
if (!updatedVersion) {
|
|
643019
643441
|
return null;
|
|
@@ -643053,7 +643475,7 @@ function AutoUpdater({
|
|
|
643053
643475
|
return;
|
|
643054
643476
|
}
|
|
643055
643477
|
if (false) {}
|
|
643056
|
-
const currentVersion = "1.3.
|
|
643478
|
+
const currentVersion = "1.3.429";
|
|
643057
643479
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
643058
643480
|
let latestVersion = await getLatestVersion(channel);
|
|
643059
643481
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -643266,12 +643688,12 @@ function NativeAutoUpdater({
|
|
|
643266
643688
|
logEvent("tengu_native_auto_updater_start", {});
|
|
643267
643689
|
try {
|
|
643268
643690
|
const maxVersion = await getMaxVersion();
|
|
643269
|
-
if (maxVersion && gt("1.3.
|
|
643691
|
+
if (maxVersion && gt("1.3.429", maxVersion)) {
|
|
643270
643692
|
const msg = await getMaxVersionMessage();
|
|
643271
643693
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
643272
643694
|
}
|
|
643273
643695
|
const result = await installLatest(channel);
|
|
643274
|
-
const currentVersion = "1.3.
|
|
643696
|
+
const currentVersion = "1.3.429";
|
|
643275
643697
|
const latencyMs = Date.now() - startTime;
|
|
643276
643698
|
if (result.lockFailed) {
|
|
643277
643699
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -643408,17 +643830,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
643408
643830
|
const maxVersion = await getMaxVersion();
|
|
643409
643831
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
643410
643832
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
643411
|
-
if (gte("1.3.
|
|
643412
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.3.
|
|
643833
|
+
if (gte("1.3.429", maxVersion)) {
|
|
643834
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.3.429"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
643413
643835
|
setUpdateAvailable(false);
|
|
643414
643836
|
return;
|
|
643415
643837
|
}
|
|
643416
643838
|
latest = maxVersion;
|
|
643417
643839
|
}
|
|
643418
|
-
const hasUpdate = latest && !gte("1.3.
|
|
643840
|
+
const hasUpdate = latest && !gte("1.3.429", latest) && !shouldSkipVersion(latest);
|
|
643419
643841
|
setUpdateAvailable(!!hasUpdate);
|
|
643420
643842
|
if (hasUpdate) {
|
|
643421
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.3.
|
|
643843
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.3.429"} -> ${latest}`);
|
|
643422
643844
|
}
|
|
643423
643845
|
};
|
|
643424
643846
|
$3[0] = t1;
|
|
@@ -643452,7 +643874,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
643452
643874
|
wrap: "truncate",
|
|
643453
643875
|
children: [
|
|
643454
643876
|
"currentVersion: ",
|
|
643455
|
-
"1.3.
|
|
643877
|
+
"1.3.429"
|
|
643456
643878
|
]
|
|
643457
643879
|
}, undefined, true, undefined, this);
|
|
643458
643880
|
$3[3] = verbose;
|
|
@@ -651617,7 +652039,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
651617
652039
|
project_dir: getOriginalCwd(),
|
|
651618
652040
|
added_dirs: addedDirs
|
|
651619
652041
|
},
|
|
651620
|
-
version: "1.3.
|
|
652042
|
+
version: "1.3.429",
|
|
651621
652043
|
output_style: {
|
|
651622
652044
|
name: outputStyleName
|
|
651623
652045
|
},
|
|
@@ -652902,6 +653324,7 @@ function ModeIndicator({
|
|
|
652902
653324
|
} = useTerminalSize();
|
|
652903
653325
|
const modeCycleShortcut = useShortcutDisplay("chat:cycleMode", "Chat", "shift+tab");
|
|
652904
653326
|
const tasks2 = useAppState((s2) => s2.tasks);
|
|
653327
|
+
const swarmMode = useAppState((s_sw) => s_sw.swarmMode);
|
|
652905
653328
|
const teamContext = useAppState((s_0) => s_0.teamContext);
|
|
652906
653329
|
const store = useAppStateStore();
|
|
652907
653330
|
const [remoteSessionUrl] = import_react245.useState(() => store.getState().remoteSessionUrl);
|
|
@@ -652945,7 +653368,7 @@ function ModeIndicator({
|
|
|
652945
653368
|
const isViewingTeammate = viewSelectionMode === "viewing-agent" && viewedTask?.type === "in_process_teammate";
|
|
652946
653369
|
const isViewingCompletedTeammate = isViewingTeammate && viewedTask != null && viewedTask.status !== "running";
|
|
652947
653370
|
const hasBackgroundTasks = runningTaskCount > 0 || isViewingTeammate;
|
|
652948
|
-
const primaryItemCount = (isCoordinator || hasActiveMode ? 1 : 0) + (hasBackgroundTasks ? 1 : 0) + (hasTeams ? 1 : 0);
|
|
653371
|
+
const primaryItemCount = (isCoordinator || hasActiveMode ? 1 : 0) + (hasBackgroundTasks ? 1 : 0) + (hasTeams ? 1 : 0) + (swarmMode ? 1 : 0);
|
|
652949
653372
|
const shouldShowPrStatus = isPrStatusEnabled() && prStatus.number !== null && prStatus.reviewState !== null && prStatus.url !== null && primaryItemCount < 2 && (primaryItemCount === 0 || columns >= 80);
|
|
652950
653373
|
const shouldShowModeHint = primaryItemCount < 2;
|
|
652951
653374
|
const hasInProcessTeammates = !showSpinnerTree && hasBackgroundTasks && Object.values(tasks2).some((t_1) => t_1.type === "in_process_teammate");
|
|
@@ -652970,7 +653393,18 @@ function ModeIndicator({
|
|
|
652970
653393
|
}, undefined, true, undefined, this)
|
|
652971
653394
|
]
|
|
652972
653395
|
}, "mode", true, undefined, this) : null;
|
|
653396
|
+
const swarmPart = swarmMode ? /* @__PURE__ */ jsx_dev_runtime415.jsxDEV(ThemedText, {
|
|
653397
|
+
color: "permission",
|
|
653398
|
+
children: [
|
|
653399
|
+
"⚡ collaborator_swarm mode",
|
|
653400
|
+
/* @__PURE__ */ jsx_dev_runtime415.jsxDEV(ThemedText, {
|
|
653401
|
+
dimColor: true,
|
|
653402
|
+
children: " · /normal to exit"
|
|
653403
|
+
}, undefined, false, undefined, this)
|
|
653404
|
+
]
|
|
653405
|
+
}, "swarm-mode", true, undefined, this) : null;
|
|
652973
653406
|
const parts = [
|
|
653407
|
+
...swarmPart ? [swarmPart] : [],
|
|
652974
653408
|
...remoteSessionUrl ? [/* @__PURE__ */ jsx_dev_runtime415.jsxDEV(Link, {
|
|
652975
653409
|
url: remoteSessionUrl,
|
|
652976
653410
|
children: /* @__PURE__ */ jsx_dev_runtime415.jsxDEV(ThemedText, {
|
|
@@ -662987,7 +663421,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
662987
663421
|
} catch {}
|
|
662988
663422
|
const data = {
|
|
662989
663423
|
trigger,
|
|
662990
|
-
version: "1.3.
|
|
663424
|
+
version: "1.3.429",
|
|
662991
663425
|
platform: process.platform,
|
|
662992
663426
|
transcript,
|
|
662993
663427
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -665517,7 +665951,7 @@ var init_tipRegistry = __esm(() => {
|
|
|
665517
665951
|
id: "mobile-app",
|
|
665518
665952
|
content: async () => "/mobile to use RAYU from the Claude app on your phone",
|
|
665519
665953
|
cooldownSessions: 15,
|
|
665520
|
-
isRelevant: async () =>
|
|
665954
|
+
isRelevant: async () => false
|
|
665521
665955
|
},
|
|
665522
665956
|
{
|
|
665523
665957
|
id: "opusplan-mode-reminder",
|
|
@@ -675036,7 +675470,22 @@ function WelcomeV2() {
|
|
|
675036
675470
|
dimColor: true,
|
|
675037
675471
|
children: [
|
|
675038
675472
|
"v",
|
|
675039
|
-
"1.3.
|
|
675473
|
+
"1.3.429"
|
|
675474
|
+
]
|
|
675475
|
+
}, undefined, true, undefined, this)
|
|
675476
|
+
]
|
|
675477
|
+
}, undefined, true, undefined, this),
|
|
675478
|
+
/* @__PURE__ */ jsx_dev_runtime456.jsxDEV(ThemedBox_default, {
|
|
675479
|
+
paddingLeft: 2,
|
|
675480
|
+
children: [
|
|
675481
|
+
/* @__PURE__ */ jsx_dev_runtime456.jsxDEV(AnimatedAsterisk, {
|
|
675482
|
+
char: UP_ARROW
|
|
675483
|
+
}, undefined, false, undefined, this),
|
|
675484
|
+
/* @__PURE__ */ jsx_dev_runtime456.jsxDEV(ThemedText, {
|
|
675485
|
+
dimColor: true,
|
|
675486
|
+
children: [
|
|
675487
|
+
" ",
|
|
675488
|
+
"Welcome!, Thank You For Choosing Rayu!"
|
|
675040
675489
|
]
|
|
675041
675490
|
}, undefined, true, undefined, this)
|
|
675042
675491
|
]
|
|
@@ -675047,6 +675496,8 @@ function WelcomeV2() {
|
|
|
675047
675496
|
var jsx_dev_runtime456, RAYU_BANNER2;
|
|
675048
675497
|
var init_WelcomeV2 = __esm(() => {
|
|
675049
675498
|
init_ink2();
|
|
675499
|
+
init_AnimatedAsterisk();
|
|
675500
|
+
init_figures2();
|
|
675050
675501
|
jsx_dev_runtime456 = __toESM(require_jsx_dev_runtime(), 1);
|
|
675051
675502
|
RAYU_BANNER2 = [
|
|
675052
675503
|
["██████╗ █████╗ ██╗ ██╗██╗ ██╗", "#cfff7c"],
|
|
@@ -676753,7 +677204,7 @@ function completeOnboarding() {
|
|
|
676753
677204
|
saveGlobalConfig((current) => ({
|
|
676754
677205
|
...current,
|
|
676755
677206
|
hasCompletedOnboarding: true,
|
|
676756
|
-
lastOnboardingVersion: "1.3.
|
|
677207
|
+
lastOnboardingVersion: "1.3.429"
|
|
676757
677208
|
}));
|
|
676758
677209
|
}
|
|
676759
677210
|
function showDialog(root2, renderer) {
|
|
@@ -681053,7 +681504,7 @@ function appendToLog(path30, message) {
|
|
|
681053
681504
|
cwd: getFsImplementation().cwd(),
|
|
681054
681505
|
userType: "external",
|
|
681055
681506
|
sessionId: getSessionId(),
|
|
681056
|
-
version: "1.3.
|
|
681507
|
+
version: "1.3.429"
|
|
681057
681508
|
};
|
|
681058
681509
|
getLogWriter(path30).write(messageWithTimestamp);
|
|
681059
681510
|
}
|
|
@@ -685161,8 +685612,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
685161
685612
|
}
|
|
685162
685613
|
async function checkEnvLessBridgeMinVersion() {
|
|
685163
685614
|
const cfg = await getEnvLessBridgeConfig();
|
|
685164
|
-
if (cfg.min_version && lt("1.3.
|
|
685165
|
-
return `Your version of RAYU (${"1.3.
|
|
685615
|
+
if (cfg.min_version && lt("1.3.429", cfg.min_version)) {
|
|
685616
|
+
return `Your version of RAYU (${"1.3.429"}) is too old for Remote Control.
|
|
685166
685617
|
Version ${cfg.min_version} or higher is required. Run \`claude update\` to update.`;
|
|
685167
685618
|
}
|
|
685168
685619
|
return null;
|
|
@@ -685636,7 +686087,7 @@ async function initBridgeCore(params) {
|
|
|
685636
686087
|
const rawApi = createBridgeApiClient({
|
|
685637
686088
|
baseUrl,
|
|
685638
686089
|
getAccessToken,
|
|
685639
|
-
runnerVersion: "1.3.
|
|
686090
|
+
runnerVersion: "1.3.429",
|
|
685640
686091
|
onDebug: logForDebugging,
|
|
685641
686092
|
onAuth401,
|
|
685642
686093
|
getTrustedDeviceToken
|
|
@@ -690998,7 +691449,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
690998
691449
|
setCwd(cwd3);
|
|
690999
691450
|
const server = new Server({
|
|
691000
691451
|
name: "claude/tengu",
|
|
691001
|
-
version: "1.3.
|
|
691452
|
+
version: "1.3.429"
|
|
691002
691453
|
}, {
|
|
691003
691454
|
capabilities: {
|
|
691004
691455
|
tools: {}
|
|
@@ -693524,7 +693975,7 @@ ${customInstructions}` : customInstructions;
|
|
|
693524
693975
|
}
|
|
693525
693976
|
}
|
|
693526
693977
|
logForDiagnosticsNoPII("info", "started", {
|
|
693527
|
-
version: "1.3.
|
|
693978
|
+
version: "1.3.429",
|
|
693528
693979
|
is_native_binary: isInBundledMode()
|
|
693529
693980
|
});
|
|
693530
693981
|
registerCleanup(async () => {
|
|
@@ -693827,6 +694278,7 @@ ${customInstructions}` : customInstructions;
|
|
|
693827
694278
|
snapshotSequence: 0
|
|
693828
694279
|
},
|
|
693829
694280
|
pendingFileChanges: [],
|
|
694281
|
+
swarmMode: false,
|
|
693830
694282
|
attribution: createEmptyAttributionState(),
|
|
693831
694283
|
thinkingEnabled,
|
|
693832
694284
|
promptSuggestionEnabled: shouldEnablePromptSuggestion(),
|
|
@@ -694242,7 +694694,7 @@ Usage: rayu --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
694242
694694
|
pendingHookMessages
|
|
694243
694695
|
}, renderAndRun);
|
|
694244
694696
|
}
|
|
694245
|
-
}).version("1.3.
|
|
694697
|
+
}).version("1.3.429 (Rayu-CLI)", "-v, --version", "Output the version number");
|
|
694246
694698
|
program.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
694247
694699
|
program.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
694248
694700
|
if (canUserConfigureAdvisor()) {
|
|
@@ -694708,7 +695160,7 @@ if (false) {}
|
|
|
694708
695160
|
async function main2() {
|
|
694709
695161
|
const args = process.argv.slice(2);
|
|
694710
695162
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
694711
|
-
console.log(`${"1.3.
|
|
695163
|
+
console.log(`${"1.3.429"} (Rayu-CLI)`);
|
|
694712
695164
|
return;
|
|
694713
695165
|
}
|
|
694714
695166
|
const {
|