orquesta-agent 0.2.200 → 0.2.202
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/executor.d.ts +8 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +88 -30
- package/dist/executor.js.map +1 -1
- package/dist/index.js +56 -2
- package/dist/index.js.map +1 -1
- package/dist/socketio-transport.d.ts +1 -0
- package/dist/socketio-transport.d.ts.map +1 -1
- package/dist/supabase.d.ts +4 -0
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +8 -0
- package/dist/supabase.js.map +1 -1
- package/dist/ui/public/app.js +19 -0
- package/dist/ui/public/index.html +10 -4
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +64 -1
- package/dist/ui/server.js.map +1 -1
- package/package.json +1 -1
package/dist/executor.d.ts
CHANGED
|
@@ -69,6 +69,8 @@ export type CliPreference = 'auto' | 'orquesta' | 'claude' | 'kimi';
|
|
|
69
69
|
export declare function setCliPreference(preference: CliPreference): void;
|
|
70
70
|
export declare function setCliEndpoint(endpoint: string): void;
|
|
71
71
|
export declare function getCliEndpoint(): string;
|
|
72
|
+
export declare function setBrowserEnabled(enabled: boolean): void;
|
|
73
|
+
export declare function getBrowserEnabled(): boolean;
|
|
72
74
|
export declare function isOrquestaCliAvailable(): boolean;
|
|
73
75
|
export declare function isClaudeCliAvailable(): boolean;
|
|
74
76
|
export declare function resolveKimiBinary(): string | null;
|
|
@@ -157,6 +159,12 @@ export interface StartSessionOptions {
|
|
|
157
159
|
/** Workstream (sub-agent) this session belongs to. undefined = default slot. */
|
|
158
160
|
subAgentId?: string;
|
|
159
161
|
subAgentName?: string;
|
|
162
|
+
/**
|
|
163
|
+
* Resume the most recent conversation in this working directory instead of
|
|
164
|
+
* starting fresh (dashboard "Resume" button). Maps to the CLI's --continue
|
|
165
|
+
* flag. Supported by claude + orquesta-cli; ignored for kimi (no such flag).
|
|
166
|
+
*/
|
|
167
|
+
resume?: boolean;
|
|
160
168
|
}
|
|
161
169
|
/**
|
|
162
170
|
* Start an interactive Claude CLI session.
|
package/dist/executor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAiCtD,OAAO,EAAwE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAgOrH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEhF;AAGD,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/D;AAGD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,CAAA;AAOlD,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAID,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAMtE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAIlE;AA+DD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;IACzB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAA;CAClC;AAWD,MAAM,WAAW,UAAU;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAgBtD;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAG5D;AAWD;uDACuD;AACvD,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,CAQ3G;AACD,wBAAgB,gBAAgB,IAAI;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAAC,OAAO,EAAE,IAAI,GAAG,KAAK,CAAA;CAAE,CAEzG;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,GAAE,MAAM,EAAO,EAAE,IAAI,GAAE,WAAwB,GAAG,IAAI,CAUlH;AAmCD,+EAA+E;AAC/E,wBAAgB,gBAAgB,IAAI,QAAQ,GAAG,aAAa,GAAG,KAAK,CAGnE;AAED;6DAC6D;AAC7D,wBAAgB,yBAAyB,IAAI;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAa7K;AAkHD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAA;AAInE,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,IAAI,CAGhE;AAKD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKrD;AACD,wBAAgB,cAAc,IAAI,MAAM,CAA6B;AAMrE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKxD;AACD,wBAAgB,iBAAiB,IAAI,OAAO,CAAgC;AAY5E,wBAAgB,sBAAsB,IAAI,OAAO,CAuDhD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAY9C;AAOD,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAkBjD;AAID,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAaD,wBAAgB,SAAS,IAAI;IAAE,GAAG,EAAE,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAsC1F;AAGD,wBAAgB,eAAe,IAAI;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAgDvG;AAgBD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtG;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9D;AAED,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxF;AAkgBD,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAA2B;AA2I7E,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA45BpE;AA0CD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAQtG;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAwC1C;AAED,wBAAgB,SAAS,IAAI,IAAI,CAOhC;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAMD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,CAAA;IAC9D,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,eAAe,EAAE,UAAU,GAAG,WAAW,CAAA;IACzC,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyLtE;AASD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiBzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAiB1D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAenE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C;AAMD,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GxF;AAyPD,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAEtD;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,gBAAgB,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CA6VjF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAQ,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CA+CnH;AA2ED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAgDrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAWpF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAMvE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAGlD;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAA;CACzC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAe9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,CAe3M;AAsBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAmBzD"}
|
package/dist/executor.js
CHANGED
|
@@ -546,6 +546,18 @@ export function setCliEndpoint(endpoint) {
|
|
|
546
546
|
logger.info(`CLI endpoint override set to: ${next || '(org default)'}`);
|
|
547
547
|
}
|
|
548
548
|
export function getCliEndpoint() { return globalCliEndpoint; }
|
|
549
|
+
// Per-project browser-tools toggle (Settings → Agent). Default OFF: the browser
|
|
550
|
+
// bridge prompt block is only injected when a project explicitly enables it, so
|
|
551
|
+
// projects that never use it don't carry ~690 tokens of browser instructions.
|
|
552
|
+
let globalBrowserEnabled = false;
|
|
553
|
+
export function setBrowserEnabled(enabled) {
|
|
554
|
+
const next = !!enabled;
|
|
555
|
+
if (next === globalBrowserEnabled)
|
|
556
|
+
return;
|
|
557
|
+
globalBrowserEnabled = next;
|
|
558
|
+
logger.info(`Browser tools ${next ? 'enabled' : 'disabled'} for this project`);
|
|
559
|
+
}
|
|
560
|
+
export function getBrowserEnabled() { return globalBrowserEnabled; }
|
|
549
561
|
// Cache CLI availability for 5 minutes. The binary doesn't appear/disappear
|
|
550
562
|
// between prompts, and `<cli> --version` can be slow on cold start. Combined
|
|
551
563
|
// with a busy event loop this used to fail-stop scheduled prompts: the 5s
|
|
@@ -848,8 +860,16 @@ export async function gitCommitAndPush(targetDir, message) {
|
|
|
848
860
|
// ============================================
|
|
849
861
|
// Attachment Processing
|
|
850
862
|
// ============================================
|
|
851
|
-
// Temp directory for downloaded attachments
|
|
852
|
-
|
|
863
|
+
// Temp directory for downloaded attachments.
|
|
864
|
+
//
|
|
865
|
+
// MUST live under ~/.cache (not os.tmpdir()/'/tmp'): the agent downloads the
|
|
866
|
+
// file here OUTSIDE the sandbox, then hands the CLI the absolute path to Read it
|
|
867
|
+
// from INSIDE the sandbox. In strict mode the sandbox gets a PRIVATE /tmp tmpfs
|
|
868
|
+
// (sandbox.ts), so anything the agent writes to the host /tmp is invisible to the
|
|
869
|
+
// spawned CLI — attachments silently never reach it. ~/.cache is re-bound rw into
|
|
870
|
+
// the strict jail (see userWritable in sandbox.ts), so the same path resolves to
|
|
871
|
+
// the same file both outside and inside, in every mode.
|
|
872
|
+
const ATTACHMENT_TEMP_DIR = path.join(os.homedir(), '.cache', 'orquesta-attachments');
|
|
853
873
|
/**
|
|
854
874
|
* Download an attachment from URL and save to temp file.
|
|
855
875
|
* Returns the local file path.
|
|
@@ -1503,7 +1523,7 @@ export async function execute(options) {
|
|
|
1503
1523
|
// Build full prompt with settings, agent instructions, and attachments
|
|
1504
1524
|
let fullContent = content + attachmentContext;
|
|
1505
1525
|
const settingsHeader = generateSettingsHeader();
|
|
1506
|
-
const browserBlock = BROWSER_TOOLS_PROMPT_BLOCK;
|
|
1526
|
+
const browserBlock = globalBrowserEnabled ? BROWSER_TOOLS_PROMPT_BLOCK : '';
|
|
1507
1527
|
const coordinationBlock = await fetchCoordinationContextBlock();
|
|
1508
1528
|
const capabilitiesBlock = `${ORQUESTA_CAPABILITIES_PROMPT_BLOCK}${coordinationBlock}`;
|
|
1509
1529
|
// Auto-inject any rogerthat phone messages received since the last prompt /
|
|
@@ -1516,43 +1536,35 @@ export async function execute(options) {
|
|
|
1516
1536
|
const userRequestBody = phoneBlock
|
|
1517
1537
|
? `${phoneBlock}\n${content}${attachmentContext}`
|
|
1518
1538
|
: `${content}${attachmentContext}`;
|
|
1539
|
+
// Assemble the static context (settings + agent instructions + capabilities +
|
|
1540
|
+
// browser) separately from the user request, so we can hoist it into the CLI
|
|
1541
|
+
// system prompt below — where the downstream model caches it across the agentic
|
|
1542
|
+
// loop's tool-use turns — instead of paying for it in every user turn.
|
|
1543
|
+
// fullContent keeps the exact inline shape it had before, as the fallback.
|
|
1544
|
+
let staticHeader = '';
|
|
1519
1545
|
if (agentInstructions && agentInstructions.trim()) {
|
|
1520
|
-
|
|
1521
|
-
fullContent = `[Orquesta Configuration]
|
|
1546
|
+
staticHeader = `[Orquesta Configuration]
|
|
1522
1547
|
${settingsHeader}
|
|
1523
1548
|
[Agent Instructions from Orquesta]
|
|
1524
1549
|
${agentInstructions}
|
|
1525
1550
|
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
${browserBlock}
|
|
1529
|
-
|
|
1530
|
-
[User Request]
|
|
1531
|
-
${userRequestBody}`;
|
|
1551
|
+
`;
|
|
1532
1552
|
logger.info('Including settings and agent instructions in prompt');
|
|
1533
1553
|
}
|
|
1534
1554
|
else if (settingsHeader) {
|
|
1535
|
-
|
|
1536
|
-
fullContent = `[Orquesta Configuration]
|
|
1555
|
+
staticHeader = `[Orquesta Configuration]
|
|
1537
1556
|
${settingsHeader}
|
|
1538
1557
|
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
${browserBlock}
|
|
1542
|
-
|
|
1543
|
-
[User Request]
|
|
1544
|
-
${userRequestBody}`;
|
|
1558
|
+
`;
|
|
1545
1559
|
logger.info('Including settings in prompt');
|
|
1546
1560
|
}
|
|
1547
|
-
|
|
1548
|
-
// No settings — still include capabilities + browser blocks.
|
|
1549
|
-
fullContent = `${capabilitiesBlock}
|
|
1561
|
+
const staticSystemBlock = `${staticHeader}${capabilitiesBlock}
|
|
1550
1562
|
|
|
1551
|
-
${browserBlock}
|
|
1563
|
+
${browserBlock}`;
|
|
1564
|
+
fullContent = `${staticSystemBlock}
|
|
1552
1565
|
|
|
1553
1566
|
[User Request]
|
|
1554
1567
|
${userRequestBody}`;
|
|
1555
|
-
}
|
|
1556
1568
|
// Build environment with authentication
|
|
1557
1569
|
const env = {
|
|
1558
1570
|
...process.env,
|
|
@@ -1612,8 +1624,31 @@ ${userRequestBody}`;
|
|
|
1612
1624
|
const cwd = workingDirectory || process.cwd();
|
|
1613
1625
|
logger.info(`CLI Selection: ${cliCommand} (${reason})`);
|
|
1614
1626
|
logger.info(`Spawning: ${cliBinary} -p "${fullContent.slice(0, 50)}..." in ${cwd}`);
|
|
1627
|
+
// Hoist the static block into the CLI system prompt (claude/orquesta support
|
|
1628
|
+
// --append-system-prompt-file; kimi has no such flag and stays inline). On any
|
|
1629
|
+
// write failure we fall back to the inline fullContent, so a dispatched prompt
|
|
1630
|
+
// can never regress to a worse state than before.
|
|
1631
|
+
let promptContent = fullContent;
|
|
1632
|
+
let sysPromptFilePath = null;
|
|
1633
|
+
if (cliCommand !== 'kimi') {
|
|
1634
|
+
try {
|
|
1635
|
+
const promptDir = process.platform === 'win32'
|
|
1636
|
+
? os.tmpdir()
|
|
1637
|
+
: path.join(os.homedir(), '.orquesta-agent', 'sysprompts');
|
|
1638
|
+
fs.mkdirSync(promptDir, { recursive: true });
|
|
1639
|
+
const f = path.join(promptDir, `dispatch-sysprompt-${commandId}.txt`);
|
|
1640
|
+
fs.writeFileSync(f, staticSystemBlock, { encoding: 'utf-8', mode: 0o600 });
|
|
1641
|
+
sysPromptFilePath = f;
|
|
1642
|
+
promptContent = userRequestBody;
|
|
1643
|
+
}
|
|
1644
|
+
catch {
|
|
1645
|
+
promptContent = fullContent;
|
|
1646
|
+
sysPromptFilePath = null;
|
|
1647
|
+
}
|
|
1648
|
+
}
|
|
1649
|
+
const sysPromptArgs = sysPromptFilePath ? ['--append-system-prompt-file', sysPromptFilePath] : [];
|
|
1615
1650
|
// Escape content for shell - replace single quotes
|
|
1616
|
-
const escapedContent =
|
|
1651
|
+
const escapedContent = promptContent.replace(/'/g, "'\\''");
|
|
1617
1652
|
// Build command based on permission mode
|
|
1618
1653
|
// Use stream-json format to get structured output including thinking
|
|
1619
1654
|
let command;
|
|
@@ -1635,10 +1670,14 @@ ${userRequestBody}`;
|
|
|
1635
1670
|
// shell-wrapped (Linux) path; pushed as a separate arg on Win/macOS below.
|
|
1636
1671
|
const useEndpoint = cliCommand === 'orquesta' && !!globalCliEndpoint;
|
|
1637
1672
|
const endpointFlag = useEndpoint ? `--endpoint '${globalCliEndpoint.replace(/'/g, "'\\''")}'` : '';
|
|
1673
|
+
// Static context hoisted to the CLI system prompt (Linux shell-string form).
|
|
1674
|
+
const sysPromptFlag = sysPromptFilePath
|
|
1675
|
+
? `--append-system-prompt-file '${sysPromptFilePath.replace(/'/g, "'\\''")}'`
|
|
1676
|
+
: '';
|
|
1638
1677
|
// Claude CLI's headless `-p` mode does not accept positional file args as
|
|
1639
1678
|
// attachments — image refs are surfaced inline in the prompt as absolute
|
|
1640
1679
|
// paths so Claude's Read tool can pick them up.
|
|
1641
|
-
command = `${cliBinary} -p '${escapedContent}' ${permFlags} ${baseFlags} ${endpointFlag}`;
|
|
1680
|
+
command = `${cliBinary} -p '${escapedContent}' ${permFlags} ${baseFlags} ${endpointFlag} ${sysPromptFlag}`;
|
|
1642
1681
|
if (imageReferences.length > 0) {
|
|
1643
1682
|
logger.info(`Image attachments referenced inline: ${imageReferences.length}`);
|
|
1644
1683
|
}
|
|
@@ -1659,13 +1698,15 @@ ${userRequestBody}`;
|
|
|
1659
1698
|
// via stdin instead (bare `-p` → the CLI reads stdin). macOS has a high arg
|
|
1660
1699
|
// limit (and spawns without a shell), so keep the prompt inline there.
|
|
1661
1700
|
if (!isWindows)
|
|
1662
|
-
args.push(
|
|
1701
|
+
args.push(promptContent);
|
|
1663
1702
|
if (permFlags)
|
|
1664
1703
|
args.push(...permFlags.split(/\s+/).filter(Boolean));
|
|
1665
1704
|
if (baseFlags)
|
|
1666
1705
|
args.push(...baseFlags.split(/\s+/).filter(Boolean));
|
|
1667
1706
|
if (useEndpoint)
|
|
1668
1707
|
args.push('--endpoint', globalCliEndpoint);
|
|
1708
|
+
if (sysPromptArgs.length)
|
|
1709
|
+
args.push(...sysPromptArgs);
|
|
1669
1710
|
claude = spawn(cliBinary, args, {
|
|
1670
1711
|
cwd,
|
|
1671
1712
|
env,
|
|
@@ -1674,7 +1715,7 @@ ${userRequestBody}`;
|
|
|
1674
1715
|
});
|
|
1675
1716
|
if (isWindows) {
|
|
1676
1717
|
try {
|
|
1677
|
-
claude.stdin?.write(
|
|
1718
|
+
claude.stdin?.write(promptContent);
|
|
1678
1719
|
claude.stdin?.end();
|
|
1679
1720
|
}
|
|
1680
1721
|
catch { /* stdin closed early — failure surfaces via exit code */ }
|
|
@@ -2130,6 +2171,13 @@ ${userRequestBody}`;
|
|
|
2130
2171
|
// Handle completion
|
|
2131
2172
|
claude.on('close', async (code) => {
|
|
2132
2173
|
runningProcesses.delete(commandId);
|
|
2174
|
+
// Remove the hoisted system-prompt temp file now that the CLI has read it.
|
|
2175
|
+
if (sysPromptFilePath) {
|
|
2176
|
+
try {
|
|
2177
|
+
fs.unlinkSync(sysPromptFilePath);
|
|
2178
|
+
}
|
|
2179
|
+
catch { /* already gone */ }
|
|
2180
|
+
}
|
|
2133
2181
|
if (promptId)
|
|
2134
2182
|
promptIdToCommandId.delete(promptId);
|
|
2135
2183
|
pendingSupervisionCallbacks.delete(commandId);
|
|
@@ -2930,7 +2978,7 @@ export function setOnSessionEnded(cb) {
|
|
|
2930
2978
|
* The session runs with --dangerously-skip-permissions for uninterrupted interaction.
|
|
2931
2979
|
*/
|
|
2932
2980
|
export async function startSession(options) {
|
|
2933
|
-
const { sessionId, workingDirectory, channel, cols = 120, rows = 40, subAgentId, subAgentName } = options;
|
|
2981
|
+
const { sessionId, workingDirectory, channel, cols = 120, rows = 40, subAgentId, subAgentName, resume } = options;
|
|
2934
2982
|
// If this exact sessionId is already live, terminate it before re-creating.
|
|
2935
2983
|
// Sessions on OTHER workstreams are left untouched — they run concurrently.
|
|
2936
2984
|
if (sessions.has(sessionId)) {
|
|
@@ -3024,7 +3072,8 @@ export async function startSession(options) {
|
|
|
3024
3072
|
}
|
|
3025
3073
|
catch { /* file not found — try next */ }
|
|
3026
3074
|
}
|
|
3027
|
-
const
|
|
3075
|
+
const browserBlockPart = globalBrowserEnabled ? `${BROWSER_TOOLS_PROMPT_BLOCK}\n\n` : '';
|
|
3076
|
+
const systemPromptBlock = `${browserBlockPart}${ORQUESTA_CAPABILITIES_PROMPT_BLOCK}${liveCoordination}${projectMdContent}`;
|
|
3028
3077
|
// On Windows the prompt (~38KB) + a big CLAUDE.md can exceed CreateProcess's
|
|
3029
3078
|
// 32767-char command-line cap and the interactive session fails to spawn. Both
|
|
3030
3079
|
// orquesta-cli and claude support --append-system-prompt-file, so we ALWAYS write
|
|
@@ -3071,6 +3120,15 @@ export async function startSession(options) {
|
|
|
3071
3120
|
? ['--dangerously-skip-permissions', '--append-system-prompt-file', sysPromptFile]
|
|
3072
3121
|
: ['--dangerously-skip-permissions', '--append-system-prompt', systemPromptBlock];
|
|
3073
3122
|
}
|
|
3123
|
+
// Resume the most recent conversation in this cwd when requested (dashboard
|
|
3124
|
+
// "Resume" button). claude (-c/--continue) and orquesta-cli (--continue, see
|
|
3125
|
+
// cli.ts) both reattach the latest session non-interactively; kimi has no
|
|
3126
|
+
// resume flag, so the option is silently ignored there. Prepended so it's an
|
|
3127
|
+
// unambiguous standalone flag, separate from --append-system-prompt's value.
|
|
3128
|
+
if (resume && cliCommand !== 'kimi') {
|
|
3129
|
+
ptyArgs.unshift('--continue');
|
|
3130
|
+
logger.info(`[Session] Resuming most recent conversation (--continue) for ${cliCommand}`);
|
|
3131
|
+
}
|
|
3074
3132
|
// Per-project endpoint override (only the orquesta CLI understands --endpoint).
|
|
3075
3133
|
if (cliCommand === 'orquesta' && globalCliEndpoint) {
|
|
3076
3134
|
ptyArgs.push('--endpoint', globalCliEndpoint);
|