syntaur 0.40.0 → 0.41.2
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/.claude-plugin/plugin.json +1 -1
- package/dashboard/dist/assets/{_basePickBy-D6criIXV.js → _basePickBy-CMGil-NY.js} +1 -1
- package/dashboard/dist/assets/{_baseUniq-CKxMpzId.js → _baseUniq-DllyUaEJ.js} +1 -1
- package/dashboard/dist/assets/{arc-9r-o7jsh.js → arc-C6fNP_LJ.js} +1 -1
- package/dashboard/dist/assets/{architectureDiagram-2XIMDMQ5-CNC47xK1.js → architectureDiagram-2XIMDMQ5-CxXDnbMY.js} +1 -1
- package/dashboard/dist/assets/{blockDiagram-WCTKOSBZ-CxLXL7nx.js → blockDiagram-WCTKOSBZ-B8UDJhxg.js} +1 -1
- package/dashboard/dist/assets/{c4Diagram-IC4MRINW-BLbJctin.js → c4Diagram-IC4MRINW-9XDZP3AD.js} +1 -1
- package/dashboard/dist/assets/channel-OsoeK3Lk.js +1 -0
- package/dashboard/dist/assets/{chunk-4BX2VUAB-CDbpfqib.js → chunk-4BX2VUAB-D1LR7D9Y.js} +1 -1
- package/dashboard/dist/assets/{chunk-55IACEB6-L4WI8t-Y.js → chunk-55IACEB6-sumE5d0X.js} +1 -1
- package/dashboard/dist/assets/{chunk-FMBD7UC4-By5-igEn.js → chunk-FMBD7UC4-C-Iy8wke.js} +1 -1
- package/dashboard/dist/assets/{chunk-JSJVCQXG-Q9k6_65Q.js → chunk-JSJVCQXG-Clyrcmzt.js} +1 -1
- package/dashboard/dist/assets/{chunk-KX2RTZJC-BHIFtGWH.js → chunk-KX2RTZJC-BQqetgrP.js} +1 -1
- package/dashboard/dist/assets/{chunk-NQ4KR5QH-B4NuJ8C_.js → chunk-NQ4KR5QH-Cw60fnx2.js} +1 -1
- package/dashboard/dist/assets/{chunk-QZHKN3VN-BQyRAT6J.js → chunk-QZHKN3VN-Dv40SU2-.js} +1 -1
- package/dashboard/dist/assets/{chunk-WL4C6EOR-De4b_Qs3.js → chunk-WL4C6EOR-DFiOufrs.js} +1 -1
- package/dashboard/dist/assets/classDiagram-VBA2DB6C-BKX6nUBp.js +1 -0
- package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-BKX6nUBp.js +1 -0
- package/dashboard/dist/assets/clone-f-TTh9ms.js +1 -0
- package/dashboard/dist/assets/{cose-bilkent-S5V4N54A-DrH8QqS8.js → cose-bilkent-S5V4N54A-DV306SRn.js} +1 -1
- package/dashboard/dist/assets/{dagre-KLK3FWXG-DPchOAoI.js → dagre-KLK3FWXG-DaQ1pWLV.js} +1 -1
- package/dashboard/dist/assets/{diagram-E7M64L7V-jehxXjzH.js → diagram-E7M64L7V-2fsjMT-T.js} +1 -1
- package/dashboard/dist/assets/{diagram-IFDJBPK2-Dk0Hd4w_.js → diagram-IFDJBPK2-CoaSyKLw.js} +1 -1
- package/dashboard/dist/assets/{diagram-P4PSJMXO-CTg6e3e_.js → diagram-P4PSJMXO-C_j6Kd6q.js} +1 -1
- package/dashboard/dist/assets/{erDiagram-INFDFZHY-C53s82M7.js → erDiagram-INFDFZHY-CpOdYJWS.js} +1 -1
- package/dashboard/dist/assets/{flowDiagram-PKNHOUZH-DuNh0Fc7.js → flowDiagram-PKNHOUZH-KVRjmhbG.js} +1 -1
- package/dashboard/dist/assets/{ganttDiagram-A5KZAMGK-B74hkBwP.js → ganttDiagram-A5KZAMGK-CA_n5ynk.js} +1 -1
- package/dashboard/dist/assets/{gitGraphDiagram-K3NZZRJ6-CTwOleky.js → gitGraphDiagram-K3NZZRJ6-DKkS_iH8.js} +1 -1
- package/dashboard/dist/assets/{graph-DuB65SUX.js → graph-C6ehraTW.js} +1 -1
- package/dashboard/dist/assets/{index-BZ5hEn-I.css → index-CdHziP5R.css} +1 -1
- package/dashboard/dist/assets/{index-IKAckop6.js → index-SW4WrQLg.js} +88 -88
- package/dashboard/dist/assets/{infoDiagram-LFFYTUFH-CPgiVLQb.js → infoDiagram-LFFYTUFH-H1Eg4YK9.js} +1 -1
- package/dashboard/dist/assets/{ishikawaDiagram-PHBUUO56-Di5CEnNR.js → ishikawaDiagram-PHBUUO56-DSrc4sub.js} +1 -1
- package/dashboard/dist/assets/{journeyDiagram-4ABVD52K-B1RhycTR.js → journeyDiagram-4ABVD52K-Bl_0LgIo.js} +1 -1
- package/dashboard/dist/assets/{kanban-definition-K7BYSVSG-vw0FgyVD.js → kanban-definition-K7BYSVSG-Cq2WGyif.js} +1 -1
- package/dashboard/dist/assets/{layout-D4u8D4QF.js → layout-DJv9vite.js} +1 -1
- package/dashboard/dist/assets/{linear-vN7TVTLe.js → linear-CAef3hQD.js} +1 -1
- package/dashboard/dist/assets/{mermaid.core-CkrBXB3x.js → mermaid.core-B_gAmtAa.js} +4 -4
- package/dashboard/dist/assets/{mindmap-definition-YRQLILUH-DF83eEZe.js → mindmap-definition-YRQLILUH-4aIWu_CK.js} +1 -1
- package/dashboard/dist/assets/{pieDiagram-SKSYHLDU-s6OowTfq.js → pieDiagram-SKSYHLDU-1ThATMqf.js} +1 -1
- package/dashboard/dist/assets/{quadrantDiagram-337W2JSQ-BdInZyNW.js → quadrantDiagram-337W2JSQ-BEq2jVyN.js} +1 -1
- package/dashboard/dist/assets/{requirementDiagram-Z7DCOOCP-ChbwbMIW.js → requirementDiagram-Z7DCOOCP-DbYJrAQ9.js} +1 -1
- package/dashboard/dist/assets/{sankeyDiagram-WA2Y5GQK-DISdO2ue.js → sankeyDiagram-WA2Y5GQK-DMr3kn8l.js} +1 -1
- package/dashboard/dist/assets/{sequenceDiagram-2WXFIKYE-D12TBnwJ.js → sequenceDiagram-2WXFIKYE-BR03-l-y.js} +1 -1
- package/dashboard/dist/assets/{stateDiagram-RAJIS63D-CgCT1a9a.js → stateDiagram-RAJIS63D-DUj-dVll.js} +1 -1
- package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-Dzzbhq6b.js +1 -0
- package/dashboard/dist/assets/{timeline-definition-YZTLITO2-Cp3_SQeH.js → timeline-definition-YZTLITO2-DpN8jElm.js} +1 -1
- package/dashboard/dist/assets/{treemap-KZPCXAKY-CuMtPlep.js → treemap-KZPCXAKY-CyUTDKiM.js} +1 -1
- package/dashboard/dist/assets/{vennDiagram-LZ73GAT5-CoLZAO3b.js → vennDiagram-LZ73GAT5-DRJFiQmT.js} +1 -1
- package/dashboard/dist/assets/{xychartDiagram-JWTSCODW-D96zGIQV.js → xychartDiagram-JWTSCODW-DcrZVnQ-.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dist/dashboard/server.js +139 -24
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.js +184 -30
- package/dist/index.js.map +1 -1
- package/dist/launch/index.d.ts +30 -0
- package/dist/launch/index.js +108 -20
- package/dist/launch/index.js.map +1 -1
- package/package.json +1 -1
- package/platforms/claude-code/.claude-plugin/plugin.json +1 -1
- package/platforms/codex/.codex-plugin/plugin.json +1 -1
- package/platforms/hermes/plugins/syntaur/__pycache__/__init__.cpython-312.pyc +0 -0
- package/platforms/hermes/plugins/syntaur/__pycache__/boundary.cpython-312.pyc +0 -0
- package/dashboard/dist/assets/channel-3nrYYZ_g.js +0 -1
- package/dashboard/dist/assets/classDiagram-VBA2DB6C-B2kUF3N9.js +0 -1
- package/dashboard/dist/assets/classDiagram-v2-RAHNMMFH-B2kUF3N9.js +0 -1
- package/dashboard/dist/assets/clone-CNGwk6vy.js +0 -1
- package/dashboard/dist/assets/stateDiagram-v2-FVOUBMTO-wC4ehH_U.js +0 -1
package/dist/launch/index.d.ts
CHANGED
|
@@ -26,6 +26,14 @@ interface ParsedOpenUrl {
|
|
|
26
26
|
* process may still be writing the transcript.
|
|
27
27
|
*/
|
|
28
28
|
mode?: SessionMode;
|
|
29
|
+
/**
|
|
30
|
+
* Optional agent id to launch with (the `agent=` query param). Lets the
|
|
31
|
+
* dashboard's "Open in agent" picker launch a specific runner profile instead
|
|
32
|
+
* of the configured default. Only honored for `kind === 'assignment'`; for
|
|
33
|
+
* sessions the agent is pinned by the session record, so the value is
|
|
34
|
+
* parsed-but-ignored rather than rejected (keeps the parser simple).
|
|
35
|
+
*/
|
|
36
|
+
agent?: string;
|
|
29
37
|
}
|
|
30
38
|
/**
|
|
31
39
|
* Parse a `syntaur://open?assignment=<id>` or `syntaur://open?session=<id>` URL.
|
|
@@ -69,6 +77,20 @@ interface AgentConfig {
|
|
|
69
77
|
resolveFromShellAliases?: boolean;
|
|
70
78
|
resume?: SessionInvocation;
|
|
71
79
|
fork?: SessionInvocation;
|
|
80
|
+
/**
|
|
81
|
+
* Optional LLM model for this runner profile, injected into the launched CLI
|
|
82
|
+
* as a generic `--model <value>` flag (see `modelFlagArgs`). Blank/undefined
|
|
83
|
+
* omits the flag entirely (today's behavior). Works for agents whose CLI
|
|
84
|
+
* accepts `--model` (claude, codex); leave blank for agents that don't.
|
|
85
|
+
*/
|
|
86
|
+
model?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Optional playbook slug for this runner profile. When set, a fresh "Open in
|
|
89
|
+
* agent" launch seeds a prompt that grabs the assignment AND runs this
|
|
90
|
+
* playbook end-to-end (see `INITIAL_PROMPT`). Blank/undefined keeps the plain
|
|
91
|
+
* `/grab-assignment` seed.
|
|
92
|
+
*/
|
|
93
|
+
playbook?: string;
|
|
72
94
|
}
|
|
73
95
|
|
|
74
96
|
interface WorkspaceVisibilityConfig {
|
|
@@ -208,6 +230,14 @@ interface ResolveLaunchPlanInput {
|
|
|
208
230
|
* dialog can confirm a different terminal without mutating user config.
|
|
209
231
|
*/
|
|
210
232
|
terminalOverride?: TerminalChoice;
|
|
233
|
+
/**
|
|
234
|
+
* Only consulted when `kind === 'assignment'`. The agent id to launch with,
|
|
235
|
+
* wired from `?agent=<id>` on the incoming `syntaur://` URL so the dashboard's
|
|
236
|
+
* "Open in agent" picker can launch a specific runner profile. When unset,
|
|
237
|
+
* falls back to `pickAgent(config)` (the default agent). An unknown id throws
|
|
238
|
+
* `LaunchError('agent-not-configured')`.
|
|
239
|
+
*/
|
|
240
|
+
agentId?: string;
|
|
211
241
|
}
|
|
212
242
|
/**
|
|
213
243
|
* Pick the agent the "Open in agent" flow should use. Order of preference:
|
package/dist/launch/index.js
CHANGED
|
@@ -696,6 +696,28 @@ var init_hotkeysCatalog = __esm({
|
|
|
696
696
|
});
|
|
697
697
|
|
|
698
698
|
// src/utils/agents-schema.ts
|
|
699
|
+
function modelFlagArgs(agent) {
|
|
700
|
+
const m = agent.model?.trim();
|
|
701
|
+
return m ? ["--model", m] : [];
|
|
702
|
+
}
|
|
703
|
+
function stripModelFlags(args) {
|
|
704
|
+
const out = [];
|
|
705
|
+
for (let i = 0; i < args.length; i++) {
|
|
706
|
+
const a = args[i];
|
|
707
|
+
if (a === "--model" || a === "-m") {
|
|
708
|
+
i++;
|
|
709
|
+
continue;
|
|
710
|
+
}
|
|
711
|
+
if (a.startsWith("--model=") || a.startsWith("-m=")) continue;
|
|
712
|
+
out.push(a);
|
|
713
|
+
}
|
|
714
|
+
return out;
|
|
715
|
+
}
|
|
716
|
+
function applyModelFlag(agent, baseArgs) {
|
|
717
|
+
const flag = modelFlagArgs(agent);
|
|
718
|
+
if (flag.length === 0) return baseArgs;
|
|
719
|
+
return [...stripModelFlags(baseArgs), ...flag];
|
|
720
|
+
}
|
|
699
721
|
var BUILTIN_AGENTS, AGENT_ID_PATTERN, PROMPT_ARG_POSITIONS;
|
|
700
722
|
var init_agents_schema = __esm({
|
|
701
723
|
"src/utils/agents-schema.ts"() {
|
|
@@ -750,6 +772,16 @@ var init_agents_schema = __esm({
|
|
|
750
772
|
}
|
|
751
773
|
});
|
|
752
774
|
|
|
775
|
+
// src/utils/slug.ts
|
|
776
|
+
function isValidSlug(slug) {
|
|
777
|
+
return /^[a-z0-9]+(-[a-z0-9]+)*$/.test(slug);
|
|
778
|
+
}
|
|
779
|
+
var init_slug = __esm({
|
|
780
|
+
"src/utils/slug.ts"() {
|
|
781
|
+
"use strict";
|
|
782
|
+
}
|
|
783
|
+
});
|
|
784
|
+
|
|
753
785
|
// src/utils/workspace-visibility-schema.ts
|
|
754
786
|
function normalizeHiddenList(input) {
|
|
755
787
|
if (!Array.isArray(input)) return [];
|
|
@@ -818,6 +850,16 @@ function validateAgentList(agents) {
|
|
|
818
850
|
`agent "${agent.id}" has invalid promptArgPosition "${agent.promptArgPosition}" \u2014 expected first|last|none`
|
|
819
851
|
);
|
|
820
852
|
}
|
|
853
|
+
if (agent.model !== void 0 && /[\r\n]/.test(agent.model)) {
|
|
854
|
+
throw new AgentConfigError(
|
|
855
|
+
`agent "${agent.id}" has invalid model \u2014 must be a single line (no newlines)`
|
|
856
|
+
);
|
|
857
|
+
}
|
|
858
|
+
if (agent.playbook !== void 0 && agent.playbook.trim() !== "" && !isValidSlug(agent.playbook)) {
|
|
859
|
+
throw new AgentConfigError(
|
|
860
|
+
`agent "${agent.id}" has invalid playbook "${agent.playbook}" \u2014 must be a valid playbook slug`
|
|
861
|
+
);
|
|
862
|
+
}
|
|
821
863
|
validateSessionInvocation(agent, "resume", agent.resume);
|
|
822
864
|
validateSessionInvocation(agent, "fork", agent.fork);
|
|
823
865
|
if (agent.default) defaults++;
|
|
@@ -1195,6 +1237,8 @@ function parseAgentsConfig(content) {
|
|
|
1195
1237
|
...current.promptArgPosition ? { promptArgPosition: current.promptArgPosition } : {},
|
|
1196
1238
|
...current.default ? { default: true } : {},
|
|
1197
1239
|
...current.resolveFromShellAliases ? { resolveFromShellAliases: true } : {},
|
|
1240
|
+
...current.model ? { model: current.model } : {},
|
|
1241
|
+
...current.playbook ? { playbook: current.playbook } : {},
|
|
1198
1242
|
...current.resume ? { resume: current.resume } : {},
|
|
1199
1243
|
...current.fork ? { fork: current.fork } : {}
|
|
1200
1244
|
});
|
|
@@ -1377,6 +1421,12 @@ function assignAgentField(target, key, rawValue) {
|
|
|
1377
1421
|
case "resolveFromShellAliases":
|
|
1378
1422
|
target.resolveFromShellAliases = value === "true";
|
|
1379
1423
|
break;
|
|
1424
|
+
case "model":
|
|
1425
|
+
target.model = value;
|
|
1426
|
+
break;
|
|
1427
|
+
case "playbook":
|
|
1428
|
+
target.playbook = value;
|
|
1429
|
+
break;
|
|
1380
1430
|
}
|
|
1381
1431
|
}
|
|
1382
1432
|
async function readConfig() {
|
|
@@ -1511,6 +1561,7 @@ var init_config2 = __esm({
|
|
|
1511
1561
|
init_lifecycle();
|
|
1512
1562
|
init_hotkeysCatalog();
|
|
1513
1563
|
init_agents_schema();
|
|
1564
|
+
init_slug();
|
|
1514
1565
|
init_terminal_schema();
|
|
1515
1566
|
init_workspace_visibility_schema();
|
|
1516
1567
|
DEFAULT_CONFIG = {
|
|
@@ -1560,7 +1611,9 @@ var init_config2 = __esm({
|
|
|
1560
1611
|
"command",
|
|
1561
1612
|
"promptArgPosition",
|
|
1562
1613
|
"default",
|
|
1563
|
-
"resolveFromShellAliases"
|
|
1614
|
+
"resolveFromShellAliases",
|
|
1615
|
+
"model",
|
|
1616
|
+
"playbook"
|
|
1564
1617
|
]);
|
|
1565
1618
|
migratedConfigPaths = /* @__PURE__ */ new Set();
|
|
1566
1619
|
TerminalConfigError = class extends Error {
|
|
@@ -1645,13 +1698,6 @@ var init_assignment_resolver = __esm({
|
|
|
1645
1698
|
}
|
|
1646
1699
|
});
|
|
1647
1700
|
|
|
1648
|
-
// src/utils/slug.ts
|
|
1649
|
-
var init_slug = __esm({
|
|
1650
|
-
"src/utils/slug.ts"() {
|
|
1651
|
-
"use strict";
|
|
1652
|
-
}
|
|
1653
|
-
});
|
|
1654
|
-
|
|
1655
1701
|
// src/utils/playbooks.ts
|
|
1656
1702
|
import { resolve as resolve8 } from "path";
|
|
1657
1703
|
import { readdir as readdir4, readFile as readFile7, unlink } from "fs/promises";
|
|
@@ -2832,6 +2878,17 @@ function parseOpenUrl(input) {
|
|
|
2832
2878
|
}
|
|
2833
2879
|
terminal = candidate;
|
|
2834
2880
|
}
|
|
2881
|
+
const agentVals = url.searchParams.getAll("agent");
|
|
2882
|
+
if (agentVals.length > 1) {
|
|
2883
|
+
throw new OpenUrlError(
|
|
2884
|
+
"duplicate-param",
|
|
2885
|
+
"URL has more than one `agent` query param"
|
|
2886
|
+
);
|
|
2887
|
+
}
|
|
2888
|
+
let agent;
|
|
2889
|
+
if (agentVals.length === 1 && agentVals[0].trim() !== "") {
|
|
2890
|
+
agent = agentVals[0];
|
|
2891
|
+
}
|
|
2835
2892
|
if (assignmentVals.length === 1) {
|
|
2836
2893
|
const id = assignmentVals[0];
|
|
2837
2894
|
if (id.trim() === "") {
|
|
@@ -2840,7 +2897,12 @@ function parseOpenUrl(input) {
|
|
|
2840
2897
|
"`assignment` query param is empty"
|
|
2841
2898
|
);
|
|
2842
2899
|
}
|
|
2843
|
-
return {
|
|
2900
|
+
return {
|
|
2901
|
+
kind: "assignment",
|
|
2902
|
+
id,
|
|
2903
|
+
...terminal ? { terminal } : {},
|
|
2904
|
+
...agent ? { agent } : {}
|
|
2905
|
+
};
|
|
2844
2906
|
}
|
|
2845
2907
|
if (sessionVals.length === 1) {
|
|
2846
2908
|
const id = sessionVals[0];
|
|
@@ -2865,7 +2927,13 @@ function parseOpenUrl(input) {
|
|
|
2865
2927
|
}
|
|
2866
2928
|
mode = raw;
|
|
2867
2929
|
}
|
|
2868
|
-
return {
|
|
2930
|
+
return {
|
|
2931
|
+
kind: "session",
|
|
2932
|
+
id,
|
|
2933
|
+
mode,
|
|
2934
|
+
...terminal ? { terminal } : {},
|
|
2935
|
+
...agent ? { agent } : {}
|
|
2936
|
+
};
|
|
2869
2937
|
}
|
|
2870
2938
|
throw new OpenUrlError(
|
|
2871
2939
|
"missing-id",
|
|
@@ -2880,6 +2948,7 @@ init_api();
|
|
|
2880
2948
|
|
|
2881
2949
|
// src/tui/launch.ts
|
|
2882
2950
|
init_api();
|
|
2951
|
+
init_agents_schema();
|
|
2883
2952
|
import { spawn } from "child_process";
|
|
2884
2953
|
import { mkdir as mkdir2, writeFile as writeFile4 } from "fs/promises";
|
|
2885
2954
|
import { isAbsolute as isAbsolute3, resolve as resolve12 } from "path";
|
|
@@ -2927,13 +2996,18 @@ function formatFallbackCwdWarning(opts) {
|
|
|
2927
2996
|
|
|
2928
2997
|
// src/tui/launch.ts
|
|
2929
2998
|
var INITIAL_PROMPT = (params) => {
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2999
|
+
const playbook = params.playbook?.trim();
|
|
3000
|
+
if (!playbook) {
|
|
3001
|
+
if (params.projectSlug) {
|
|
3002
|
+
return `/grab-assignment ${params.projectSlug} ${params.assignmentSlug}`;
|
|
3003
|
+
}
|
|
3004
|
+
if (params.id) {
|
|
3005
|
+
return `/grab-assignment --id ${params.id}`;
|
|
3006
|
+
}
|
|
3007
|
+
return `/grab-assignment ${params.assignmentSlug}`;
|
|
2935
3008
|
}
|
|
2936
|
-
|
|
3009
|
+
const grabClause = params.projectSlug ? `the assignment \`${params.projectSlug}/${params.assignmentSlug}\` using the /grab-assignment skill` : params.id ? `the assignment id \`${params.id}\` using /grab-assignment --id ${params.id}` : `the assignment \`${params.assignmentSlug}\` using the /grab-assignment skill`;
|
|
3010
|
+
return `Grab ${grabClause}, then load and run the \`${playbook}\` playbook using the /run-playbook skill and carry it out end-to-end.`;
|
|
2937
3011
|
};
|
|
2938
3012
|
function shellQuote(arg) {
|
|
2939
3013
|
if (arg === "") return "''";
|
|
@@ -2941,7 +3015,7 @@ function shellQuote(arg) {
|
|
|
2941
3015
|
}
|
|
2942
3016
|
function buildAgentArgv(agent, prompt, env = process.env) {
|
|
2943
3017
|
const position = agent.promptArgPosition ?? "first";
|
|
2944
|
-
const baseArgs = [...agent.args ?? []];
|
|
3018
|
+
const baseArgs = applyModelFlag(agent, [...agent.args ?? []]);
|
|
2945
3019
|
const agentArgs = position === "first" ? [prompt, ...baseArgs] : position === "last" ? [...baseArgs, prompt] : baseArgs;
|
|
2946
3020
|
if (agent.resolveFromShellAliases) {
|
|
2947
3021
|
const requested = env.SHELL;
|
|
@@ -2967,6 +3041,7 @@ function buildAgentArgv(agent, prompt, env = process.env) {
|
|
|
2967
3041
|
init_agent_sessions();
|
|
2968
3042
|
|
|
2969
3043
|
// src/launch/argv.ts
|
|
3044
|
+
init_agents_schema();
|
|
2970
3045
|
import { isAbsolute as isAbsolute4 } from "path";
|
|
2971
3046
|
var buildFreshArgv = buildAgentArgv;
|
|
2972
3047
|
function buildSessionArgv(agent, sessionId, mode, env = process.env) {
|
|
@@ -2981,7 +3056,7 @@ function buildSessionArgv(agent, sessionId, mode, env = process.env) {
|
|
|
2981
3056
|
(a) => a === "{id}" ? sessionId : a
|
|
2982
3057
|
);
|
|
2983
3058
|
const command = invocation.command ?? agent.command;
|
|
2984
|
-
const agentArgs = [...agent.args ?? [], ...substituted];
|
|
3059
|
+
const agentArgs = [...applyModelFlag(agent, [...agent.args ?? []]), ...substituted];
|
|
2985
3060
|
if (agent.resolveFromShellAliases) {
|
|
2986
3061
|
const requested = env.SHELL;
|
|
2987
3062
|
let shell = requested;
|
|
@@ -3062,13 +3137,26 @@ async function resolveAssignmentPlan(input, terminal) {
|
|
|
3062
3137
|
}
|
|
3063
3138
|
const cwd = picked.cwd;
|
|
3064
3139
|
const fallbackWarning = picked.fallbackWarning;
|
|
3065
|
-
|
|
3140
|
+
let agent;
|
|
3141
|
+
if (input.agentId) {
|
|
3142
|
+
const found = getAgents(input.config).find((a) => a.id === input.agentId);
|
|
3143
|
+
if (!found) {
|
|
3144
|
+
throw new LaunchError(
|
|
3145
|
+
"agent-not-configured",
|
|
3146
|
+
`Agent "${input.agentId}" requested in the open URL is not in your agents list.`
|
|
3147
|
+
);
|
|
3148
|
+
}
|
|
3149
|
+
agent = found;
|
|
3150
|
+
} else {
|
|
3151
|
+
agent = pickAgent(input.config);
|
|
3152
|
+
}
|
|
3066
3153
|
const { argv, shellFallbackWarning } = buildFreshArgv(
|
|
3067
3154
|
agent,
|
|
3068
3155
|
INITIAL_PROMPT({
|
|
3069
3156
|
projectSlug: resolved.projectSlug,
|
|
3070
3157
|
assignmentSlug: resolved.assignmentSlug,
|
|
3071
|
-
id: resolved.id
|
|
3158
|
+
id: resolved.id,
|
|
3159
|
+
playbook: agent.playbook
|
|
3072
3160
|
})
|
|
3073
3161
|
);
|
|
3074
3162
|
return {
|