@dotobokuri/fleet-console 1.16.1 → 1.17.1
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/AGENTS.md +5 -2
- package/dist/cli.mjs +499 -299
- package/dist/client/assets/{_baseUniq-Bvbp_jlP.js → _baseUniq-B7sqIsqm.js} +1 -1
- package/dist/client/assets/{arc-BIE5Buf8.js → arc-CvtYLN8U.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-D5XMG93D.js → architectureDiagram-Q4EWVU46-rlI7pNrR.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-DF6L79td.js → blockDiagram-DXYQGD6D-nwx9BNRz.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-DhF1h0OW.js → c4Diagram-AHTNJAMY-CRL_0Ism.js} +1 -1
- package/dist/client/assets/channel-Ct9EqqyG.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-HIDhmpsY.js → chunk-4BX2VUAB-DEkncDR3.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-WM3UvlRe.js → chunk-4TB4RGXK-Bnot0Ti1.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-D9kCAM0-.js → chunk-55IACEB6-EgKmMTlI.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-CHGSf6YA.js → chunk-EDXVE4YY-BKiKnVQE.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-saa1UCmo.js → chunk-FMBD7UC4-BRC398vL.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-BrlxxClZ.js → chunk-OYMX7WX6-D82gQaXN.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CVnd5MX8.js → chunk-QZHKN3VN-BYdI5fky.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-BpsFNlbM.js → chunk-YZCP3GAM-BhBgOoc0.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-CPMS8Qpo.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-CPMS8Qpo.js +1 -0
- package/dist/client/assets/clone-C5XNYXHD.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-AdFIrmD1.js → cose-bilkent-S5V4N54A-J8dfEdWD.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-YPE_DPjG.js → dagre-KV5264BT-zGd_6_Kv.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-sW7JSe_o.js → diagram-5BDNPKRD-BQpQGgZ3.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-CdoUA7HM.js → diagram-G4DWMVQ6-BbgPVITm.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-Dr_Q44k2.js → diagram-MMDJMWI5-lJsMf0Ic.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-CgWLDdO4.js → diagram-TYMM5635-BpEKTzOh.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-BS5jKQII.js → erDiagram-SMLLAGMA-CHHVwJ_a.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-DM_ZIfsi.js → flowDiagram-DWJPFMVM-Cun8a4NF.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-D1ASi2pt.js → ganttDiagram-T4ZO3ILL-CGCwH_yf.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-DTS8qu5f.js → gitGraphDiagram-UUTBAWPF-BkY4qdoV.js} +1 -1
- package/dist/client/assets/{graph-BSP3V12O.js → graph-HbRzXQtt.js} +1 -1
- package/dist/client/assets/{index-DNtncJ2Y.css → index-CfNSyAUJ.css} +1 -1
- package/dist/client/assets/index-CzCMC0e-.js +402 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-C6rS44Vv.js → infoDiagram-42DDH7IO-B21Xtz8v.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BysMV0Yj.js → ishikawaDiagram-UXIWVN3A-DiABngEH.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-Cq1tDTjK.js → journeyDiagram-VCZTEJTY-BKZ-Uivu.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-CV7fuoIo.js → kanban-definition-6JOO6SKY-CoJzTtsH.js} +1 -1
- package/dist/client/assets/{layout-mBwNdhT9.js → layout-D5tmQpxt.js} +1 -1
- package/dist/client/assets/{linear-B8Mqzhqu.js → linear-B_riNOXk.js} +1 -1
- package/dist/client/assets/{mermaid.core-mTVIRAe-.js → mermaid.core-CyRCP3U3.js} +4 -4
- package/dist/client/assets/{min-LkS4GBrL.js → min-Cn8LZZXB.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-CuK4DHsN.js → mindmap-definition-QFDTVHPH-BN_7mZUt.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-yKtYS0aG.js → pieDiagram-DEJITSTG-DPP2-sYA.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-CQYBuUXw.js → quadrantDiagram-34T5L4WZ-CQ_oo-f9.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-DExCsGb_.js → requirementDiagram-MS252O5E-BkGq7nxD.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-kqoN-VmQ.js → sankeyDiagram-XADWPNL6-BVcoktBR.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-Dsk6zp0F.js → sequenceDiagram-FGHM5R23-B5rr_VYJ.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-Bg-kY2ci.js → stateDiagram-FHFEXIEX-BV8RqzB9.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Bx_fpQWQ.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-DkeszYPW.js → timeline-definition-GMOUNBTQ-CJ8TM-3t.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-a9aq_CaS.js → vennDiagram-DHZGUBPP-BETSq-Pu.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-BioIIFLl.js → wardley-RL74JXVD-CyT2qapq.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-Bpy2nx7x.js → wardleyDiagram-NUSXRM2D-CWHaiUEG.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-N7vhpanC.js → xychartDiagram-5P7HB3ND-oVPlZ_Yn.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/fleet-plugins/diff/routes.mjs +224 -57
- package/dist/fleet-plugins/file-explorer/routes.mjs +130 -0
- package/dist/fleet-plugins/skills/routes.mjs +17052 -0
- package/dist/fleet-plugins/terminal/routes.mjs +164 -67
- package/package.json +1 -1
- package/dist/client/assets/channel-BSjWiXu9.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-DIEVc5gp.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-DIEVc5gp.js +0 -1
- package/dist/client/assets/clone-VuQnnBA0.js +0 -1
- package/dist/client/assets/index-D3a51i1X.js +0 -402
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-Dlqv8bJ9.js +0 -1
|
@@ -17438,6 +17438,27 @@ function isChildProcessRunning(child) {
|
|
|
17438
17438
|
}
|
|
17439
17439
|
|
|
17440
17440
|
// ../../packages/core-unified-agent/src/connection/BaseConnection.ts
|
|
17441
|
+
var STDERR_DIAGNOSTIC_LINE_LIMIT = 20;
|
|
17442
|
+
var STDERR_DIAGNOSTIC_LINE_CHAR_LIMIT = 2e3;
|
|
17443
|
+
var STDERR_DIAGNOSTIC_TOTAL_BYTE_LIMIT = 8e3;
|
|
17444
|
+
var ANSI_PATTERN = /\x1b\[[0-?]*[ -/]*[@-~]/g;
|
|
17445
|
+
var CONTROL_PATTERN = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
|
|
17446
|
+
var SECRET_PATTERNS = [
|
|
17447
|
+
{ label: "aws_access_key", pattern: /AKIA[0-9A-Z]{16}/g },
|
|
17448
|
+
{ label: "github_token", pattern: /gh[psour]_[A-Za-z0-9]{36}/g },
|
|
17449
|
+
{ label: "jwt", pattern: /eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g },
|
|
17450
|
+
{ label: "openai_key", pattern: /\bsk-[A-Za-z0-9_-]{20,}\b/g },
|
|
17451
|
+
{
|
|
17452
|
+
label: "generic_secret",
|
|
17453
|
+
pattern: /\b[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL)[A-Z0-9_]*\s*[:=]\s*["']?[^\s"']+["']?/gi
|
|
17454
|
+
},
|
|
17455
|
+
{
|
|
17456
|
+
label: "pem_private_key",
|
|
17457
|
+
pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]+?-----END [A-Z ]*PRIVATE KEY-----/g
|
|
17458
|
+
}
|
|
17459
|
+
];
|
|
17460
|
+
var PEM_BEGIN_PATTERN = /-----BEGIN [A-Z ]*PRIVATE KEY-----/;
|
|
17461
|
+
var PEM_END_PATTERN = /-----END [A-Z ]*PRIVATE KEY-----/;
|
|
17441
17462
|
var BaseConnection = class extends EventEmitter {
|
|
17442
17463
|
child = null;
|
|
17443
17464
|
state = "disconnected";
|
|
@@ -17451,6 +17472,9 @@ var BaseConnection = class extends EventEmitter {
|
|
|
17451
17472
|
initTimeout;
|
|
17452
17473
|
promptIdleTimeout;
|
|
17453
17474
|
stderrBuffer = "";
|
|
17475
|
+
diagnosticStderrTail = [];
|
|
17476
|
+
// PEM 블록 내부 여부 추적 (줄 단위 수신 시 바디 라인 누출 방지)
|
|
17477
|
+
inPemBlock = false;
|
|
17454
17478
|
constructor(options) {
|
|
17455
17479
|
super();
|
|
17456
17480
|
this.command = options.command;
|
|
@@ -17582,9 +17606,32 @@ var BaseConnection = class extends EventEmitter {
|
|
|
17582
17606
|
if (!message) {
|
|
17583
17607
|
return;
|
|
17584
17608
|
}
|
|
17609
|
+
this.recordDiagnosticStderrLine(message);
|
|
17585
17610
|
this.emit("log", message);
|
|
17586
17611
|
this.emit("logEntry", this.createStructuredLogEntry(message));
|
|
17587
17612
|
}
|
|
17613
|
+
/** 실패 메시지에 붙일 수 있는 짧고 마스킹된 stderr tail을 반환합니다. */
|
|
17614
|
+
getStderrDiagnosticTail() {
|
|
17615
|
+
return this.diagnosticStderrTail.join("\n");
|
|
17616
|
+
}
|
|
17617
|
+
/** 원본 에러에 stderr tail 진단을 붙여 상위 계층으로 전달합니다. */
|
|
17618
|
+
withStderrDiagnostics(error51, phase) {
|
|
17619
|
+
const baseError = error51 instanceof Error ? error51 : new Error(String(error51));
|
|
17620
|
+
this.flushStderrBuffer();
|
|
17621
|
+
const stderrTail = this.getStderrDiagnosticTail();
|
|
17622
|
+
if (!stderrTail || baseError.message.includes(`${phase} stderr tail:`)) {
|
|
17623
|
+
return baseError;
|
|
17624
|
+
}
|
|
17625
|
+
const diagnosticError = new Error(
|
|
17626
|
+
`${baseError.message}
|
|
17627
|
+
|
|
17628
|
+
${phase} stderr tail:
|
|
17629
|
+
${stderrTail}`,
|
|
17630
|
+
{ cause: baseError }
|
|
17631
|
+
);
|
|
17632
|
+
diagnosticError.name = baseError.name;
|
|
17633
|
+
return diagnosticError;
|
|
17634
|
+
}
|
|
17588
17635
|
/** 기본 구조화 stderr 로그 항목을 생성합니다. */
|
|
17589
17636
|
createStructuredLogEntry(message) {
|
|
17590
17637
|
return {
|
|
@@ -17621,6 +17668,27 @@ var BaseConnection = class extends EventEmitter {
|
|
|
17621
17668
|
})
|
|
17622
17669
|
]);
|
|
17623
17670
|
}
|
|
17671
|
+
recordDiagnosticStderrLine(message) {
|
|
17672
|
+
const pemMarkerLine = normalizePemMarkerLine(message);
|
|
17673
|
+
if (PEM_BEGIN_PATTERN.test(pemMarkerLine)) {
|
|
17674
|
+
this.inPemBlock = true;
|
|
17675
|
+
}
|
|
17676
|
+
const inBlock = this.inPemBlock;
|
|
17677
|
+
if (PEM_END_PATTERN.test(pemMarkerLine)) {
|
|
17678
|
+
this.inPemBlock = false;
|
|
17679
|
+
}
|
|
17680
|
+
const sanitized = sanitizeDiagnosticStderrLine(message, inBlock);
|
|
17681
|
+
if (!sanitized) {
|
|
17682
|
+
return;
|
|
17683
|
+
}
|
|
17684
|
+
this.diagnosticStderrTail.push(sanitized);
|
|
17685
|
+
while (this.diagnosticStderrTail.length > STDERR_DIAGNOSTIC_LINE_LIMIT) {
|
|
17686
|
+
this.diagnosticStderrTail.shift();
|
|
17687
|
+
}
|
|
17688
|
+
while (byteLength(this.getStderrDiagnosticTail()) > STDERR_DIAGNOSTIC_TOTAL_BYTE_LIMIT && this.diagnosticStderrTail.length > 1) {
|
|
17689
|
+
this.diagnosticStderrTail.shift();
|
|
17690
|
+
}
|
|
17691
|
+
}
|
|
17624
17692
|
};
|
|
17625
17693
|
function quoteForCmd(token) {
|
|
17626
17694
|
if (token === "") {
|
|
@@ -17635,6 +17703,26 @@ function buildWindowsCmdArgs(command, args) {
|
|
|
17635
17703
|
const line = [command, ...args].map(quoteForCmd).join(" ");
|
|
17636
17704
|
return ["/S", "/C", `"${line}"`];
|
|
17637
17705
|
}
|
|
17706
|
+
function sanitizeDiagnosticStderrLine(value, isPemLine) {
|
|
17707
|
+
const cleaned = (isPemLine ? "[REDACTED:pem_private_key]" : redactDiagnosticSecrets(value.replace(ANSI_PATTERN, "").replace(CONTROL_PATTERN, ""))).trim();
|
|
17708
|
+
if (cleaned.length <= STDERR_DIAGNOSTIC_LINE_CHAR_LIMIT) {
|
|
17709
|
+
return cleaned;
|
|
17710
|
+
}
|
|
17711
|
+
const omitted = cleaned.length - STDERR_DIAGNOSTIC_LINE_CHAR_LIMIT;
|
|
17712
|
+
return `${cleaned.slice(0, STDERR_DIAGNOSTIC_LINE_CHAR_LIMIT)} [truncated ${omitted} chars]`;
|
|
17713
|
+
}
|
|
17714
|
+
function normalizePemMarkerLine(value) {
|
|
17715
|
+
return value.replace(ANSI_PATTERN, "").replace(CONTROL_PATTERN, "").trim();
|
|
17716
|
+
}
|
|
17717
|
+
function redactDiagnosticSecrets(value) {
|
|
17718
|
+
return SECRET_PATTERNS.reduce(
|
|
17719
|
+
(text, { label, pattern }) => text.replace(pattern, `[REDACTED:${label}]`),
|
|
17720
|
+
value
|
|
17721
|
+
);
|
|
17722
|
+
}
|
|
17723
|
+
function byteLength(value) {
|
|
17724
|
+
return Buffer.byteLength(value, "utf8");
|
|
17725
|
+
}
|
|
17638
17726
|
|
|
17639
17727
|
// ../../packages/core-unified-agent/src/connection/AcpConnection.ts
|
|
17640
17728
|
var AcpConnection = class extends BaseConnection {
|
|
@@ -17695,7 +17783,7 @@ var AcpConnection = class extends BaseConnection {
|
|
|
17695
17783
|
await this.disconnect();
|
|
17696
17784
|
} catch {
|
|
17697
17785
|
}
|
|
17698
|
-
throw error51;
|
|
17786
|
+
throw this.withStderrDiagnostics(error51, "ACP initialize");
|
|
17699
17787
|
}
|
|
17700
17788
|
}
|
|
17701
17789
|
/**
|
|
@@ -17707,46 +17795,50 @@ var AcpConnection = class extends BaseConnection {
|
|
|
17707
17795
|
* @returns 세션 정보
|
|
17708
17796
|
*/
|
|
17709
17797
|
async createSession(workspace, sessionId, mcpServers, systemPrompt, strictMcp, effort) {
|
|
17710
|
-
|
|
17711
|
-
|
|
17712
|
-
|
|
17713
|
-
|
|
17714
|
-
if (
|
|
17715
|
-
|
|
17716
|
-
|
|
17717
|
-
|
|
17718
|
-
|
|
17719
|
-
|
|
17720
|
-
|
|
17721
|
-
|
|
17722
|
-
|
|
17723
|
-
|
|
17724
|
-
|
|
17798
|
+
try {
|
|
17799
|
+
const agent = this.getAgent();
|
|
17800
|
+
const servers = mcpServers ?? [];
|
|
17801
|
+
let session;
|
|
17802
|
+
if (sessionId) {
|
|
17803
|
+
if (!agent.loadSession) {
|
|
17804
|
+
throw new Error("\uC5F0\uACB0\uB41C \uC5D0\uC774\uC804\uD2B8\uAC00 session/load\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4");
|
|
17805
|
+
}
|
|
17806
|
+
const loadSessionParams = {
|
|
17807
|
+
sessionId,
|
|
17808
|
+
cwd: workspace,
|
|
17809
|
+
mcpServers: servers
|
|
17810
|
+
};
|
|
17811
|
+
const meta3 = this.buildClaudeSessionMeta(systemPrompt, strictMcp, effort);
|
|
17812
|
+
if (meta3) {
|
|
17813
|
+
loadSessionParams._meta = meta3;
|
|
17814
|
+
}
|
|
17815
|
+
const loadResult = await this.withFixedTimeout(
|
|
17816
|
+
agent.loadSession(loadSessionParams),
|
|
17817
|
+
this.initTimeout,
|
|
17818
|
+
"session/load"
|
|
17819
|
+
);
|
|
17820
|
+
session = { ...loadResult, sessionId };
|
|
17821
|
+
} else {
|
|
17822
|
+
const newSessionParams = {
|
|
17823
|
+
cwd: workspace,
|
|
17824
|
+
mcpServers: servers
|
|
17825
|
+
};
|
|
17826
|
+
const meta3 = this.buildClaudeSessionMeta(systemPrompt, strictMcp, effort);
|
|
17827
|
+
if (meta3) {
|
|
17828
|
+
newSessionParams._meta = meta3;
|
|
17829
|
+
}
|
|
17830
|
+
session = await this.withFixedTimeout(
|
|
17831
|
+
agent.newSession(newSessionParams),
|
|
17832
|
+
this.initTimeout,
|
|
17833
|
+
"session/new"
|
|
17834
|
+
);
|
|
17725
17835
|
}
|
|
17726
|
-
|
|
17727
|
-
|
|
17728
|
-
|
|
17729
|
-
|
|
17730
|
-
);
|
|
17731
|
-
session = { ...loadResult, sessionId };
|
|
17732
|
-
} else {
|
|
17733
|
-
const newSessionParams = {
|
|
17734
|
-
cwd: workspace,
|
|
17735
|
-
mcpServers: servers
|
|
17736
|
-
};
|
|
17737
|
-
const meta3 = this.buildClaudeSessionMeta(systemPrompt, strictMcp, effort);
|
|
17738
|
-
if (meta3) {
|
|
17739
|
-
newSessionParams._meta = meta3;
|
|
17740
|
-
}
|
|
17741
|
-
session = await this.withFixedTimeout(
|
|
17742
|
-
agent.newSession(newSessionParams),
|
|
17743
|
-
this.initTimeout,
|
|
17744
|
-
"session/new"
|
|
17745
|
-
);
|
|
17836
|
+
this.setState("ready");
|
|
17837
|
+
this.activeSessionId = session.sessionId;
|
|
17838
|
+
return session;
|
|
17839
|
+
} catch (error51) {
|
|
17840
|
+
throw this.withStderrDiagnostics(error51, sessionId ? "ACP session/load" : "ACP session/new");
|
|
17746
17841
|
}
|
|
17747
|
-
this.setState("ready");
|
|
17748
|
-
this.activeSessionId = session.sessionId;
|
|
17749
|
-
return session;
|
|
17750
17842
|
}
|
|
17751
17843
|
/**
|
|
17752
17844
|
* ACP 연결을 시작합니다.
|
|
@@ -17789,14 +17881,18 @@ var AcpConnection = class extends BaseConnection {
|
|
|
17789
17881
|
if (meta3) {
|
|
17790
17882
|
loadSessionParams._meta = meta3;
|
|
17791
17883
|
}
|
|
17792
|
-
|
|
17793
|
-
|
|
17794
|
-
|
|
17795
|
-
|
|
17796
|
-
|
|
17797
|
-
|
|
17798
|
-
|
|
17799
|
-
|
|
17884
|
+
try {
|
|
17885
|
+
const result = await this.withFixedTimeout(
|
|
17886
|
+
agent.loadSession(loadSessionParams),
|
|
17887
|
+
this.requestTimeout,
|
|
17888
|
+
"session/load"
|
|
17889
|
+
);
|
|
17890
|
+
this.activeSessionId = params.sessionId;
|
|
17891
|
+
this.setState("ready");
|
|
17892
|
+
return result;
|
|
17893
|
+
} catch (error51) {
|
|
17894
|
+
throw this.withStderrDiagnostics(error51, "ACP session/load");
|
|
17895
|
+
}
|
|
17800
17896
|
}
|
|
17801
17897
|
/**
|
|
17802
17898
|
* 현재 세션을 종료합니다 (프로세스는 유지).
|
|
@@ -25390,9 +25486,9 @@ function buildJobSummaryText(prefix, status, successCount, failureCount, error51
|
|
|
25390
25486
|
var HEAD_BYTE_RATIO = 0.25;
|
|
25391
25487
|
var MAX_TEXT_CHARS = 24e3;
|
|
25392
25488
|
var MAX_RAW_OUTPUT_CHARS = 12e3;
|
|
25393
|
-
var
|
|
25394
|
-
var
|
|
25395
|
-
var
|
|
25489
|
+
var ANSI_PATTERN2 = /\x1b\[[0-?]*[ -/]*[@-~]/g;
|
|
25490
|
+
var CONTROL_PATTERN2 = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
|
|
25491
|
+
var SECRET_PATTERNS2 = [
|
|
25396
25492
|
{ label: "aws_access_key", pattern: /AKIA[0-9A-Z]{16}/g },
|
|
25397
25493
|
{ label: "jwt", pattern: /eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g },
|
|
25398
25494
|
{ label: "github_token", pattern: /gh[psour]_[A-Za-z0-9]{36}/g },
|
|
@@ -25474,7 +25570,7 @@ function emptyGroupPlaceholderBlock(label, timestamp) {
|
|
|
25474
25570
|
function applyByteCap(blocks, maxBytes, truncatedInLabel, enableSingleBlockCharSlice = false) {
|
|
25475
25571
|
if (!maxBytes || maxBytes <= 0) return blocks;
|
|
25476
25572
|
const full = blocks.map((block) => renderBlock(block)).join("\n\n").trimEnd();
|
|
25477
|
-
if (
|
|
25573
|
+
if (byteLength2(full) <= maxBytes) return blocks;
|
|
25478
25574
|
if (enableSingleBlockCharSlice) {
|
|
25479
25575
|
const sliced = trySliceOversizedSingleOrHeaderPayload(blocks, maxBytes, truncatedInLabel);
|
|
25480
25576
|
if (sliced) return sliced;
|
|
@@ -25513,7 +25609,7 @@ function trySliceOversizedSingleOrHeaderPayload(blocks, maxBytes, truncatedInLab
|
|
|
25513
25609
|
if (blocks.length === 1) {
|
|
25514
25610
|
const block = blocks[0];
|
|
25515
25611
|
const rendered = renderBlock(block);
|
|
25516
|
-
if (
|
|
25612
|
+
if (byteLength2(rendered) <= maxBytes) return null;
|
|
25517
25613
|
return sliceSingleOversizedTextBlock(block, rendered, maxBytes, truncatedInLabel);
|
|
25518
25614
|
}
|
|
25519
25615
|
if (blocks.length === 2 && isSerializerGroupHeaderBlock(blocks[0]) && blocks[1]?.kind === "text") {
|
|
@@ -25522,12 +25618,12 @@ function trySliceOversizedSingleOrHeaderPayload(blocks, maxBytes, truncatedInLab
|
|
|
25522
25618
|
const headerRendered = renderBlock(headerBlock);
|
|
25523
25619
|
const bodyRendered = renderBlock(payloadBlock);
|
|
25524
25620
|
const sep2 = "\n\n";
|
|
25525
|
-
const prefixBytes =
|
|
25621
|
+
const prefixBytes = byteLength2(headerRendered) + byteLength2(sep2);
|
|
25526
25622
|
const innerBudget = maxBytes - prefixBytes;
|
|
25527
25623
|
if (innerBudget <= 0) {
|
|
25528
25624
|
return [headerBlock, buildCharTruncatedMarkerBlock(payloadBlock.timestamp, countCodepointsInUtf8Buffer(Buffer.from(bodyRendered, "utf8")), truncatedInLabel)];
|
|
25529
25625
|
}
|
|
25530
|
-
if (
|
|
25626
|
+
if (byteLength2(bodyRendered) <= innerBudget) return null;
|
|
25531
25627
|
const { head, marker, tail } = splitRenderedUtf8AtByteCap(bodyRendered, innerBudget, truncatedInLabel);
|
|
25532
25628
|
return [
|
|
25533
25629
|
headerBlock,
|
|
@@ -25563,7 +25659,7 @@ function splitRenderedUtf8AtByteCap(rendered, maxBytes, charLabel) {
|
|
|
25563
25659
|
if (buf.length <= maxBytes) {
|
|
25564
25660
|
return { head: rendered, marker: "", tail: "" };
|
|
25565
25661
|
}
|
|
25566
|
-
const sepLen =
|
|
25662
|
+
const sepLen = byteLength2("\n\n");
|
|
25567
25663
|
let headBudget = Math.min(buf.length, Math.floor(maxBytes * HEAD_BYTE_RATIO));
|
|
25568
25664
|
const tailBudget = Math.min(buf.length, Math.floor(maxBytes * (1 - HEAD_BYTE_RATIO)));
|
|
25569
25665
|
for (let iter = 0; iter < 200; iter++) {
|
|
@@ -25580,7 +25676,7 @@ function splitRenderedUtf8AtByteCap(rendered, maxBytes, charLabel) {
|
|
|
25580
25676
|
const marker2 = buildCharTruncatedMarker(omittedChars, charLabel);
|
|
25581
25677
|
const headStr = buf.subarray(0, headLen2).toString("utf8");
|
|
25582
25678
|
const tailStr = buf.subarray(tailStart2).toString("utf8");
|
|
25583
|
-
const total =
|
|
25679
|
+
const total = byteLength2(headStr) + sepLen + byteLength2(marker2) + sepLen + byteLength2(tailStr);
|
|
25584
25680
|
if (total <= maxBytes) {
|
|
25585
25681
|
return { head: headStr, marker: marker2, tail: tailStr };
|
|
25586
25682
|
}
|
|
@@ -25588,7 +25684,7 @@ function splitRenderedUtf8AtByteCap(rendered, maxBytes, charLabel) {
|
|
|
25588
25684
|
if (headBudget === 0) break;
|
|
25589
25685
|
}
|
|
25590
25686
|
const marker = buildCharTruncatedMarker(Math.max(1, countCodepointsInUtf8Buffer(buf) - 1), charLabel);
|
|
25591
|
-
const markerTotal =
|
|
25687
|
+
const markerTotal = byteLength2(marker) + 2 * sepLen;
|
|
25592
25688
|
const room = Math.max(1, maxBytes - markerTotal);
|
|
25593
25689
|
const tailBudgetFallback = Math.min(buf.length, Math.max(1, Math.floor(room * (1 - HEAD_BYTE_RATIO))));
|
|
25594
25690
|
let tailStart = utf8SuffixStartIndex(buf, tailBudgetFallback);
|
|
@@ -25660,12 +25756,12 @@ function buildTruncatedMarker(blocks, omittedStart, omittedCount, truncatedInLab
|
|
|
25660
25756
|
};
|
|
25661
25757
|
}
|
|
25662
25758
|
function serializedBlocksBytes(blocks) {
|
|
25663
|
-
return
|
|
25759
|
+
return byteLength2(blocks.map((block) => renderBlock(block)).join("\n\n").trimEnd());
|
|
25664
25760
|
}
|
|
25665
25761
|
function serializedBlockBytes(block, includeSeparator) {
|
|
25666
|
-
return
|
|
25762
|
+
return byteLength2(`${includeSeparator ? "\n\n" : ""}${renderBlock(block)}`);
|
|
25667
25763
|
}
|
|
25668
|
-
function
|
|
25764
|
+
function byteLength2(value) {
|
|
25669
25765
|
return Buffer.byteLength(value, "utf8");
|
|
25670
25766
|
}
|
|
25671
25767
|
function toArchiveBlock(kind, source, text, label, timestamp = Date.now()) {
|
|
@@ -25696,13 +25792,13 @@ function toToolCallArchiveBlock(source, title, status, rawOutput, toolCallId, la
|
|
|
25696
25792
|
};
|
|
25697
25793
|
}
|
|
25698
25794
|
function sanitizeArchiveText(value, maxChars = MAX_TEXT_CHARS) {
|
|
25699
|
-
const cleaned = value.replace(
|
|
25795
|
+
const cleaned = value.replace(ANSI_PATTERN2, "").replace(CONTROL_PATTERN2, "");
|
|
25700
25796
|
if (cleaned.length <= maxChars) return cleaned;
|
|
25701
25797
|
return `${cleaned.slice(0, maxChars)}
|
|
25702
25798
|
[truncated ${cleaned.length - maxChars} chars]`;
|
|
25703
25799
|
}
|
|
25704
25800
|
function redactSecrets(value) {
|
|
25705
|
-
return
|
|
25801
|
+
return SECRET_PATTERNS2.reduce(
|
|
25706
25802
|
(text, { label, pattern }) => text.replace(pattern, `[REDACTED:${label}]`),
|
|
25707
25803
|
value
|
|
25708
25804
|
);
|
|
@@ -31351,6 +31447,9 @@ async function runCarrierJobInBackground(opts) {
|
|
|
31351
31447
|
try {
|
|
31352
31448
|
result = await runSingleCarrier(opts);
|
|
31353
31449
|
finalStatus = result.status;
|
|
31450
|
+
if (finalStatus === "error") {
|
|
31451
|
+
finalError = result.error ?? result.responseText;
|
|
31452
|
+
}
|
|
31354
31453
|
} catch (error51) {
|
|
31355
31454
|
finalStatus = "error";
|
|
31356
31455
|
finalError = error51 instanceof Error ? error51.message : String(error51);
|
|
@@ -36545,7 +36644,7 @@ function buildQueueIdHelp(prefix, availableIds) {
|
|
|
36545
36644
|
}
|
|
36546
36645
|
|
|
36547
36646
|
// ../../packages/fleet-wiki/src/safety.ts
|
|
36548
|
-
var
|
|
36647
|
+
var SECRET_PATTERNS3 = [
|
|
36549
36648
|
/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/i,
|
|
36550
36649
|
/\b(?:api[_-]?key|secret|password|token)\s*[:=]\s*["']?[a-z0-9_\-]{16,}/i,
|
|
36551
36650
|
/\bghp_[a-z0-9_]{20,}\b/i,
|
|
@@ -36558,7 +36657,7 @@ var PROMPT_INJECTION_PATTERNS = [
|
|
|
36558
36657
|
];
|
|
36559
36658
|
function findUnsafeMemoryText(content) {
|
|
36560
36659
|
const issues = [];
|
|
36561
|
-
if (
|
|
36660
|
+
if (SECRET_PATTERNS3.some((pattern) => pattern.test(content))) {
|
|
36562
36661
|
issues.push({
|
|
36563
36662
|
code: "unsafe_secret",
|
|
36564
36663
|
severity: "error",
|
|
@@ -40570,9 +40669,8 @@ function execFileVersion(bin, args) {
|
|
|
40570
40669
|
|
|
40571
40670
|
// ../fleet-plugins/terminal/server/agent-api/agent-cli-launch-kinds.ts
|
|
40572
40671
|
var UNSUPPORTED_AGENT_CLI_IDS = /* @__PURE__ */ new Set(["claude-kimi", "claude-glm"]);
|
|
40573
|
-
var UNSUPPORTED_AGENT_CLI_DISABLED_REASON = "Not supported";
|
|
40574
40672
|
function buildAgentCliLaunchKinds(metadata, operationType) {
|
|
40575
|
-
return metadata.map((cli) => {
|
|
40673
|
+
return metadata.filter((cli) => !UNSUPPORTED_AGENT_CLI_IDS.has(cli.id)).map((cli) => {
|
|
40576
40674
|
const disabledReason = resolveDisabledReason(cli);
|
|
40577
40675
|
return {
|
|
40578
40676
|
id: cli.id,
|
|
@@ -40583,7 +40681,6 @@ function buildAgentCliLaunchKinds(metadata, operationType) {
|
|
|
40583
40681
|
});
|
|
40584
40682
|
}
|
|
40585
40683
|
function resolveDisabledReason(cli) {
|
|
40586
|
-
if (UNSUPPORTED_AGENT_CLI_IDS.has(cli.id)) return UNSUPPORTED_AGENT_CLI_DISABLED_REASON;
|
|
40587
40684
|
if (!cli.available) return "Not installed";
|
|
40588
40685
|
if (!cli.signedIn) return "Sign in required";
|
|
40589
40686
|
return void 0;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ap as o,aq as n}from"./mermaid.core-mTVIRAe-.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-WM3UvlRe.js";import{_ as i}from"./mermaid.core-mTVIRAe-.js";import"./chunk-FMBD7UC4-saa1UCmo.js";import"./chunk-YZCP3GAM-BpsFNlbM.js";import"./chunk-55IACEB6-D9kCAM0-.js";import"./chunk-EDXVE4YY-CHGSf6YA.js";import"./index-D3a51i1X.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-WM3UvlRe.js";import{_ as i}from"./mermaid.core-mTVIRAe-.js";import"./chunk-FMBD7UC4-saa1UCmo.js";import"./chunk-YZCP3GAM-BpsFNlbM.js";import"./chunk-55IACEB6-D9kCAM0-.js";import"./chunk-EDXVE4YY-CHGSf6YA.js";import"./index-D3a51i1X.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./graph-BSP3V12O.js";var e=4;function a(o){return r(o,e)}export{a as c};
|