poly-weaver 0.12.4 → 0.13.0

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.
Files changed (246) hide show
  1. package/dist/agents/implementors/adapter.d.ts +1 -0
  2. package/dist/agents/implementors/adapter.d.ts.map +1 -1
  3. package/dist/agents/implementors/adapter.js +4 -4
  4. package/dist/agents/implementors/adapter.js.map +1 -1
  5. package/dist/agents/implementors/handler.d.ts.map +1 -1
  6. package/dist/agents/implementors/handler.js +4 -0
  7. package/dist/agents/implementors/handler.js.map +1 -1
  8. package/dist/agents/implementors/prompts.d.ts +4 -4
  9. package/dist/agents/implementors/prompts.d.ts.map +1 -1
  10. package/dist/agents/implementors/prompts.js +25 -20
  11. package/dist/agents/implementors/prompts.js.map +1 -1
  12. package/dist/agents/implementors/types.d.ts +5 -4
  13. package/dist/agents/implementors/types.d.ts.map +1 -1
  14. package/dist/agents/interviewers/adapter.d.ts +0 -2
  15. package/dist/agents/interviewers/adapter.d.ts.map +1 -1
  16. package/dist/agents/interviewers/adapter.js +0 -15
  17. package/dist/agents/interviewers/adapter.js.map +1 -1
  18. package/dist/agents/interviewers/handler.d.ts.map +1 -1
  19. package/dist/agents/interviewers/handler.js +1 -18
  20. package/dist/agents/interviewers/handler.js.map +1 -1
  21. package/dist/agents/reviewers/adapter.d.ts.map +1 -1
  22. package/dist/agents/reviewers/adapter.js +18 -3
  23. package/dist/agents/reviewers/adapter.js.map +1 -1
  24. package/dist/agents/reviewers/dsl.d.ts +1 -0
  25. package/dist/agents/reviewers/dsl.d.ts.map +1 -1
  26. package/dist/agents/reviewers/dsl.js.map +1 -1
  27. package/dist/agents/reviewers/handler.d.ts.map +1 -1
  28. package/dist/agents/reviewers/handler.js +5 -3
  29. package/dist/agents/reviewers/handler.js.map +1 -1
  30. package/dist/agents/reviewers/index.d.ts +1 -1
  31. package/dist/agents/reviewers/index.d.ts.map +1 -1
  32. package/dist/agents/reviewers/index.js +8 -1
  33. package/dist/agents/reviewers/index.js.map +1 -1
  34. package/dist/agents/reviewers/prompts.d.ts +8 -5
  35. package/dist/agents/reviewers/prompts.d.ts.map +1 -1
  36. package/dist/agents/reviewers/prompts.js +50 -27
  37. package/dist/agents/reviewers/prompts.js.map +1 -1
  38. package/dist/agents/reviewers/types.d.ts +16 -2
  39. package/dist/agents/reviewers/types.d.ts.map +1 -1
  40. package/dist/agents/reviewers/types.js.map +1 -1
  41. package/dist/agents/runner.d.ts +4 -0
  42. package/dist/agents/runner.d.ts.map +1 -1
  43. package/dist/agents/runner.js +25 -0
  44. package/dist/agents/runner.js.map +1 -1
  45. package/dist/agents/session-resume.d.ts +10 -2
  46. package/dist/agents/session-resume.d.ts.map +1 -1
  47. package/dist/agents/session-resume.js +28 -4
  48. package/dist/agents/session-resume.js.map +1 -1
  49. package/dist/agents/simplifiers/adapter.d.ts +2 -5
  50. package/dist/agents/simplifiers/adapter.d.ts.map +1 -1
  51. package/dist/agents/simplifiers/adapter.js +17 -7
  52. package/dist/agents/simplifiers/adapter.js.map +1 -1
  53. package/dist/agents/simplifiers/dsl.d.ts +13 -0
  54. package/dist/agents/simplifiers/dsl.d.ts.map +1 -1
  55. package/dist/agents/simplifiers/dsl.js +8 -1
  56. package/dist/agents/simplifiers/dsl.js.map +1 -1
  57. package/dist/agents/simplifiers/handler.d.ts +3 -0
  58. package/dist/agents/simplifiers/handler.d.ts.map +1 -1
  59. package/dist/agents/simplifiers/handler.js +130 -12
  60. package/dist/agents/simplifiers/handler.js.map +1 -1
  61. package/dist/agents/simplifiers/index.d.ts +1 -0
  62. package/dist/agents/simplifiers/index.d.ts.map +1 -1
  63. package/dist/agents/simplifiers/index.js +2 -5
  64. package/dist/agents/simplifiers/index.js.map +1 -1
  65. package/dist/agents/simplifiers/plan.d.ts +52 -0
  66. package/dist/agents/simplifiers/plan.d.ts.map +1 -0
  67. package/dist/agents/simplifiers/plan.js +176 -0
  68. package/dist/agents/simplifiers/plan.js.map +1 -0
  69. package/dist/agents/simplifiers/prompts.d.ts +5 -10
  70. package/dist/agents/simplifiers/prompts.d.ts.map +1 -1
  71. package/dist/agents/simplifiers/prompts.js +81 -15
  72. package/dist/agents/simplifiers/prompts.js.map +1 -1
  73. package/dist/agents/simplifiers/types.d.ts +22 -5
  74. package/dist/agents/simplifiers/types.d.ts.map +1 -1
  75. package/dist/ansi.d.ts +1 -0
  76. package/dist/ansi.d.ts.map +1 -1
  77. package/dist/ansi.js +1 -0
  78. package/dist/ansi.js.map +1 -1
  79. package/dist/auto-update/check-agent-updates.d.ts +1 -0
  80. package/dist/auto-update/check-agent-updates.d.ts.map +1 -1
  81. package/dist/auto-update/check-agent-updates.js +80 -8
  82. package/dist/auto-update/check-agent-updates.js.map +1 -1
  83. package/dist/auto-update/detect-agents.d.ts +1 -0
  84. package/dist/auto-update/detect-agents.d.ts.map +1 -1
  85. package/dist/auto-update/detect-agents.js +1 -1
  86. package/dist/auto-update/detect-agents.js.map +1 -1
  87. package/dist/auto-update/install-agents.js +4 -1
  88. package/dist/auto-update/install-agents.js.map +1 -1
  89. package/dist/cli.js +25 -11
  90. package/dist/cli.js.map +1 -1
  91. package/dist/config.d.ts +16 -2
  92. package/dist/config.d.ts.map +1 -1
  93. package/dist/config.js +34 -0
  94. package/dist/config.js.map +1 -1
  95. package/dist/dsl.d.ts +1 -1
  96. package/dist/dsl.d.ts.map +1 -1
  97. package/dist/flow/built-in/default-factory.js +1 -1
  98. package/dist/flow/built-in/default-factory.js.map +1 -1
  99. package/dist/flow/built-in/simplify-factory.d.ts +23 -0
  100. package/dist/flow/built-in/simplify-factory.d.ts.map +1 -0
  101. package/dist/flow/built-in/simplify-factory.js +183 -0
  102. package/dist/flow/built-in/simplify-factory.js.map +1 -0
  103. package/dist/flow/built-in/simplify.d.ts +16 -0
  104. package/dist/flow/built-in/simplify.d.ts.map +1 -0
  105. package/dist/flow/built-in/simplify.js +18 -0
  106. package/dist/flow/built-in/simplify.js.map +1 -0
  107. package/dist/flow/custom/load.d.ts.map +1 -1
  108. package/dist/flow/custom/load.js +1 -0
  109. package/dist/flow/custom/load.js.map +1 -1
  110. package/dist/flow/dsl.d.ts +4 -0
  111. package/dist/flow/dsl.d.ts.map +1 -1
  112. package/dist/flow/dsl.js +4 -0
  113. package/dist/flow/dsl.js.map +1 -1
  114. package/dist/flow/executor.js +1 -1
  115. package/dist/flow/executor.js.map +1 -1
  116. package/dist/flow/params.d.ts.map +1 -1
  117. package/dist/flow/params.js +25 -5
  118. package/dist/flow/params.js.map +1 -1
  119. package/dist/flow/types.d.ts +22 -1
  120. package/dist/flow/types.d.ts.map +1 -1
  121. package/dist/flow/types.js.map +1 -1
  122. package/dist/git-info.d.ts +17 -0
  123. package/dist/git-info.d.ts.map +1 -1
  124. package/dist/git-info.js +117 -1
  125. package/dist/git-info.js.map +1 -1
  126. package/dist/markdown.js +28 -8
  127. package/dist/markdown.js.map +1 -1
  128. package/dist/offscreen/agent-viewer.d.ts.map +1 -1
  129. package/dist/offscreen/agent-viewer.js +11 -3
  130. package/dist/offscreen/agent-viewer.js.map +1 -1
  131. package/dist/offscreen/artifact-pane.d.ts +8 -2
  132. package/dist/offscreen/artifact-pane.d.ts.map +1 -1
  133. package/dist/offscreen/artifact-pane.js +32 -3
  134. package/dist/offscreen/artifact-pane.js.map +1 -1
  135. package/dist/offscreen/controller.d.ts +3 -0
  136. package/dist/offscreen/controller.d.ts.map +1 -1
  137. package/dist/offscreen/controller.js +30 -8
  138. package/dist/offscreen/controller.js.map +1 -1
  139. package/dist/offscreen/fork-busy.d.ts +3 -20
  140. package/dist/offscreen/fork-busy.d.ts.map +1 -1
  141. package/dist/offscreen/fork-busy.js +7 -76
  142. package/dist/offscreen/fork-busy.js.map +1 -1
  143. package/dist/offscreen/fork-launch.d.ts +3 -34
  144. package/dist/offscreen/fork-launch.d.ts.map +1 -1
  145. package/dist/offscreen/fork-launch.js +4 -102
  146. package/dist/offscreen/fork-launch.js.map +1 -1
  147. package/dist/offscreen/panes.d.ts +1 -0
  148. package/dist/offscreen/panes.d.ts.map +1 -1
  149. package/dist/offscreen/resolve.d.ts.map +1 -1
  150. package/dist/offscreen/resolve.js +16 -0
  151. package/dist/offscreen/resolve.js.map +1 -1
  152. package/dist/offscreen/split-inquiry.d.ts +2 -0
  153. package/dist/offscreen/split-inquiry.d.ts.map +1 -1
  154. package/dist/offscreen/split-inquiry.js +9 -0
  155. package/dist/offscreen/split-inquiry.js.map +1 -1
  156. package/dist/orchestrator.d.ts +14 -1
  157. package/dist/orchestrator.d.ts.map +1 -1
  158. package/dist/orchestrator.js +70 -0
  159. package/dist/orchestrator.js.map +1 -1
  160. package/dist/preview-panel.d.ts +7 -1
  161. package/dist/preview-panel.d.ts.map +1 -1
  162. package/dist/preview-panel.js +93 -32
  163. package/dist/preview-panel.js.map +1 -1
  164. package/dist/providers/claude/strategy.d.ts +12 -1
  165. package/dist/providers/claude/strategy.d.ts.map +1 -1
  166. package/dist/providers/claude/strategy.js +135 -2
  167. package/dist/providers/claude/strategy.js.map +1 -1
  168. package/dist/providers/claude/trust.d.ts +2 -0
  169. package/dist/providers/claude/trust.d.ts.map +1 -0
  170. package/dist/providers/claude/trust.js +22 -0
  171. package/dist/providers/claude/trust.js.map +1 -0
  172. package/dist/providers/codex/config.js +1 -1
  173. package/dist/providers/codex/config.js.map +1 -1
  174. package/dist/providers/codex/strategy.d.ts +12 -1
  175. package/dist/providers/codex/strategy.d.ts.map +1 -1
  176. package/dist/providers/codex/strategy.js +126 -2
  177. package/dist/providers/codex/strategy.js.map +1 -1
  178. package/dist/providers/codex/trust.d.ts +2 -0
  179. package/dist/providers/codex/trust.d.ts.map +1 -0
  180. package/dist/providers/codex/trust.js +92 -0
  181. package/dist/providers/codex/trust.js.map +1 -0
  182. package/dist/providers/copilot/completion.d.ts +5 -3
  183. package/dist/providers/copilot/completion.d.ts.map +1 -1
  184. package/dist/providers/copilot/completion.js +188 -16
  185. package/dist/providers/copilot/completion.js.map +1 -1
  186. package/dist/providers/copilot/strategy.d.ts +13 -1
  187. package/dist/providers/copilot/strategy.d.ts.map +1 -1
  188. package/dist/providers/copilot/strategy.js +189 -2
  189. package/dist/providers/copilot/strategy.js.map +1 -1
  190. package/dist/providers/copilot/trust.d.ts +2 -0
  191. package/dist/providers/copilot/trust.d.ts.map +1 -0
  192. package/dist/providers/copilot/trust.js +45 -0
  193. package/dist/providers/copilot/trust.js.map +1 -0
  194. package/dist/providers/fork.d.ts +64 -0
  195. package/dist/providers/fork.d.ts.map +1 -0
  196. package/dist/providers/fork.js +2 -0
  197. package/dist/providers/fork.js.map +1 -0
  198. package/dist/providers/index.d.ts +2 -1
  199. package/dist/providers/index.d.ts.map +1 -1
  200. package/dist/providers/option-catalog.d.ts +3 -0
  201. package/dist/providers/option-catalog.d.ts.map +1 -1
  202. package/dist/providers/option-catalog.js +30 -128
  203. package/dist/providers/option-catalog.js.map +1 -1
  204. package/dist/providers/trust-utils.d.ts +7 -0
  205. package/dist/providers/trust-utils.d.ts.map +1 -0
  206. package/dist/providers/trust-utils.js +49 -0
  207. package/dist/providers/trust-utils.js.map +1 -0
  208. package/dist/providers/trust.d.ts +1 -4
  209. package/dist/providers/trust.d.ts.map +1 -1
  210. package/dist/providers/trust.js +3 -204
  211. package/dist/providers/trust.js.map +1 -1
  212. package/dist/providers/types.d.ts +46 -0
  213. package/dist/providers/types.d.ts.map +1 -1
  214. package/dist/providers/types.js.map +1 -1
  215. package/dist/simplify-scope-gate.d.ts +10 -0
  216. package/dist/simplify-scope-gate.d.ts.map +1 -0
  217. package/dist/simplify-scope-gate.js +60 -0
  218. package/dist/simplify-scope-gate.js.map +1 -0
  219. package/dist/startup-tui.d.ts +10 -1
  220. package/dist/startup-tui.d.ts.map +1 -1
  221. package/dist/startup-tui.js +131 -35
  222. package/dist/startup-tui.js.map +1 -1
  223. package/dist/user/candidate-pushback-handler.d.ts +13 -0
  224. package/dist/user/candidate-pushback-handler.d.ts.map +1 -0
  225. package/dist/user/candidate-pushback-handler.js +183 -0
  226. package/dist/user/candidate-pushback-handler.js.map +1 -0
  227. package/dist/user/curate-prompt.d.ts +29 -1
  228. package/dist/user/curate-prompt.d.ts.map +1 -1
  229. package/dist/user/curate-prompt.js +32 -5
  230. package/dist/user/curate-prompt.js.map +1 -1
  231. package/dist/user/handler.d.ts.map +1 -1
  232. package/dist/user/handler.js +23 -0
  233. package/dist/user/handler.js.map +1 -1
  234. package/dist/user/host-curate-prompt.d.ts +5 -5
  235. package/dist/user/host-curate-prompt.d.ts.map +1 -1
  236. package/dist/user/host-curate-prompt.js +204 -91
  237. package/dist/user/host-curate-prompt.js.map +1 -1
  238. package/dist/user/issue-inquiry.d.ts +2 -0
  239. package/dist/user/issue-inquiry.d.ts.map +1 -1
  240. package/dist/user/issue-inquiry.js +6 -0
  241. package/dist/user/issue-inquiry.js.map +1 -1
  242. package/dist/user/plan-pane.d.ts +3 -0
  243. package/dist/user/plan-pane.d.ts.map +1 -1
  244. package/dist/user/plan-pane.js +29 -16
  245. package/dist/user/plan-pane.js.map +1 -1
  246. package/package.json +1 -1
@@ -1,19 +1,88 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { rmSync } from "node:fs";
3
+ import { cp } from "node:fs/promises";
4
+ import { dirname, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { SESSION_FILE_WAIT_DEFAULT_MS, waitForFile, } from "../../session/locator.js";
1
7
  import { flagIf } from "../types.js";
2
8
  import { versionGte } from "../version.js";
3
- import { CopilotCompletionDetector } from "./completion.js";
4
- import { CopilotSessionHandler } from "./session.js";
9
+ import { countCopilotSubmits, isCopilotTurnSettled, latestCopilotSubmitIndex, CopilotCompletionDetector, } from "./completion.js";
10
+ import { CopilotSessionHandler, getCopilotSessionDir } from "./session.js";
11
+ import { ensureCopilotTrust } from "./trust.js";
12
+ import { buildSimplifierPrompt } from "../../agents/simplifiers/prompts.js";
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
14
+ const COPILOT_INQUIRY_DIR = join(__dirname, "../../offscreen/copilot-inquiry");
15
+ const DEFAULT_FORK_LOCATE_POLL_MS = 500;
16
+ const COPILOT_OPUS_4_8_MIN_CLI_VERSION = "1.0.55";
17
+ const COPILOT_SONNET_5_MIN_CLI_VERSION = "1.0.68";
18
+ const COPILOT_MAX_EFFORT_MIN_CLI_VERSION = "1.0.60";
19
+ const COPILOT_GPT_5_6_MIN_CLI_VERSION = "1.0.70";
20
+ const COPILOT_GPT_5_6_MODELS = [
21
+ "gpt-5.6-luna",
22
+ "gpt-5.6-terra",
23
+ "gpt-5.6-sol",
24
+ ];
25
+ const COPILOT_MODELS_LEGACY = [
26
+ "gpt-5.5",
27
+ "claude-opus-4.7-1m-internal",
28
+ ];
29
+ const COPILOT_MODELS_OPUS_4_8 = [
30
+ "gpt-5.5",
31
+ "claude-opus-4.8",
32
+ "claude-opus-4.7",
33
+ ];
34
+ const COPILOT_MODELS_SONNET_5 = [
35
+ "gpt-5.5",
36
+ "claude-sonnet-5",
37
+ "claude-opus-4.8",
38
+ "claude-opus-4.7",
39
+ ];
40
+ const COPILOT_SUBAGENT_HEAD_MODELS = [
41
+ "gpt-5.4-mini",
42
+ "gpt-5.5",
43
+ "claude-haiku-4.5",
44
+ ];
45
+ const COPILOT_BASE_EFFORTS = ["medium", "high", "xhigh"];
46
+ const COPILOT_MAX_EFFORTS = [...COPILOT_BASE_EFFORTS, "max"];
5
47
  export class CopilotStrategy {
6
48
  name = "copilot";
7
49
  displayName = "GitHub Copilot CLI";
8
50
  command = "copilot";
9
51
  exitSignal = "\x03";
10
52
  session = new CopilotSessionHandler();
53
+ fork = new CopilotForkHandler();
54
+ forkSubmitFloor = { from: "source" };
55
+ simplifierSubagentType = "explore";
11
56
  version = undefined;
12
57
  planMode = {
13
58
  argPrefix: "/plan ",
14
59
  exitToolName: "exit_plan_mode",
15
60
  nativePlanFile: true,
16
61
  };
62
+ options = {
63
+ models: () => this.copilotModels(),
64
+ defaultModel: () => this.copilotSupportsGpt56()
65
+ ? "gpt-5.6-sol"
66
+ : (COPILOT_MODELS_LEGACY[0] ?? ""),
67
+ efforts: (model) => {
68
+ const modelAllowsMax = (isClaudeFamilyModel(model) && this.copilotSupportsMaxEffort())
69
+ || (isGpt56Model(model) && this.copilotSupportsGpt56());
70
+ if (modelAllowsMax) {
71
+ return COPILOT_MAX_EFFORTS;
72
+ }
73
+ return COPILOT_BASE_EFFORTS;
74
+ },
75
+ defaultEffort: () => "high",
76
+ isKnownModel: (model) => this.copilotModels().includes(model),
77
+ isKnownEffort: (effort, model) => this.options.efforts(model).includes(effort),
78
+ };
79
+ subagentOptions = {
80
+ models: () => this.copilotSubagentModels(),
81
+ defaultModel: () => this.copilotSupportsGpt56()
82
+ ? "gpt-5.6-luna"
83
+ : "claude-haiku-4.5",
84
+ isKnownModel: (model) => this.copilotSubagentModels().includes(model),
85
+ };
17
86
  async buildArgs(prompt, opts) {
18
87
  const modelFlags = opts.model ? ["--model", opts.model] : [];
19
88
  const effortFlags = opts.effort ? ["--effort", opts.effort] : [];
@@ -48,8 +117,126 @@ export class CopilotStrategy {
48
117
  const prefix = opts.promptPrefix ?? "";
49
118
  return ["-i", `${prefix}${prompt}`, ...optionFlags];
50
119
  }
120
+ async ensureTrust(workdir) {
121
+ await ensureCopilotTrust(workdir);
122
+ }
123
+ simplifierPrompt(opts) {
124
+ return buildSimplifierPrompt({
125
+ ...opts,
126
+ subagentType: this.simplifierSubagentType,
127
+ });
128
+ }
51
129
  createDetector(opts) {
52
130
  return new CopilotCompletionDetector(100, 200, this.planMode.exitToolName, opts?.completionMarkerFile, opts?.onActivation);
53
131
  }
132
+ copilotModels() {
133
+ const withGpt56 = (models) => {
134
+ if (!this.copilotSupportsGpt56())
135
+ return models;
136
+ const [first, ...rest] = models;
137
+ if (first === undefined)
138
+ return COPILOT_GPT_5_6_MODELS;
139
+ return [first, ...COPILOT_GPT_5_6_MODELS, ...rest];
140
+ };
141
+ if (versionGte(this.version, COPILOT_SONNET_5_MIN_CLI_VERSION)) {
142
+ return withGpt56(COPILOT_MODELS_SONNET_5);
143
+ }
144
+ const models = versionGte(this.version, COPILOT_OPUS_4_8_MIN_CLI_VERSION)
145
+ ? COPILOT_MODELS_OPUS_4_8
146
+ : COPILOT_MODELS_LEGACY;
147
+ return withGpt56(models);
148
+ }
149
+ copilotSubagentModels() {
150
+ const headModels = this.copilotSupportsGpt56()
151
+ ? [
152
+ "gpt-5.4-mini",
153
+ "gpt-5.5",
154
+ ...COPILOT_GPT_5_6_MODELS,
155
+ "claude-haiku-4.5",
156
+ ]
157
+ : COPILOT_SUBAGENT_HEAD_MODELS;
158
+ return [
159
+ ...headModels,
160
+ ...this.copilotModels().filter((model) => model.startsWith("claude-")),
161
+ ];
162
+ }
163
+ copilotSupportsMaxEffort() {
164
+ return versionGte(this.version, COPILOT_MAX_EFFORT_MIN_CLI_VERSION);
165
+ }
166
+ copilotSupportsGpt56() {
167
+ return versionGte(this.version, COPILOT_GPT_5_6_MIN_CLI_VERSION);
168
+ }
169
+ }
170
+ class CopilotForkHandler {
171
+ async buildLaunch(slot) {
172
+ const clonedId = randomUUID();
173
+ const sourceDir = copilotSourceDir(slot);
174
+ const targetDir = join(getCopilotSessionDir(), clonedId);
175
+ const cleanup = () => {
176
+ rmSync(targetDir, { recursive: true, force: true });
177
+ };
178
+ try {
179
+ await cp(sourceDir, targetDir, { recursive: true, errorOnExist: true, force: false });
180
+ const existing = process.env.COPILOT_CUSTOM_INSTRUCTIONS_DIRS;
181
+ const dirs = existing ? `${existing},${COPILOT_INQUIRY_DIR}` : COPILOT_INQUIRY_DIR;
182
+ return {
183
+ command: "copilot",
184
+ args: [
185
+ "--resume",
186
+ clonedId,
187
+ ...copilotFlags(slot),
188
+ ],
189
+ env: { COPILOT_CUSTOM_INSTRUCTIONS_DIRS: dirs },
190
+ forkSessionFile: join(targetDir, "events.jsonl"),
191
+ cleanup,
192
+ };
193
+ }
194
+ catch (err) {
195
+ cleanup();
196
+ throw err;
197
+ }
198
+ }
199
+ async captureLineage(slot, _workdir, launch) {
200
+ return { kind: "copilot", file: launch.forkSessionFile ?? slot.sourceSessionPath };
201
+ }
202
+ async locateSessionFile(lineage, opts = {}) {
203
+ if (lineage.kind !== "copilot")
204
+ return undefined;
205
+ try {
206
+ return await waitForFile(lineage.file, opts.timeoutMs ?? SESSION_FILE_WAIT_DEFAULT_MS, opts.pollMs ?? DEFAULT_FORK_LOCATE_POLL_MS, opts.signal);
207
+ }
208
+ catch {
209
+ return undefined;
210
+ }
211
+ }
212
+ turnComplete(lines) {
213
+ return isCopilotTurnSettled(lines);
214
+ }
215
+ latestSubmitIndex(lines) {
216
+ return latestCopilotSubmitIndex(lines);
217
+ }
218
+ submitCount(lines) {
219
+ return countCopilotSubmits(lines);
220
+ }
221
+ }
222
+ function copilotFlags(slot) {
223
+ return [
224
+ ...(slot.model ? ["--model", slot.model] : []),
225
+ ...(slot.effort ? ["--effort", slot.effort] : []),
226
+ ...(slot.yolo ? ["--allow-all"] : []),
227
+ "--mouse=on",
228
+ ];
229
+ }
230
+ function copilotSourceDir(slot) {
231
+ if (slot.sourceSessionPath.endsWith("events.jsonl")) {
232
+ return dirname(slot.sourceSessionPath);
233
+ }
234
+ return join(getCopilotSessionDir(), slot.sourceSessionId);
235
+ }
236
+ function isClaudeFamilyModel(model) {
237
+ return model?.startsWith("claude-") ?? false;
238
+ }
239
+ function isGpt56Model(model) {
240
+ return model?.startsWith("gpt-5.6-") ?? false;
54
241
  }
55
242
  //# sourceMappingURL=strategy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/copilot/strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,SAAS,CAAC;IACjB,WAAW,GAAG,oBAAoB,CAAC;IACnC,OAAO,GAAG,SAAS,CAAC;IACpB,UAAU,GAAG,MAAM,CAAC;IACpB,OAAO,GAAmB,IAAI,qBAAqB,EAAE,CAAC;IAC/D,OAAO,GAAuB,SAAS,CAAC;IAC/B,QAAQ,GAAmB;QAClC,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,gBAAgB;QAC9B,cAAc,EAAE,IAAI;KACrB,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAmB;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,WAAW,GAAG;YAClB,GAAG,UAAU;YACb,GAAG,WAAW;YACd,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;YACnC,YAAY;SACb,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;gBACL,UAAU;gBACV,IAAI,CAAC,eAAe;gBACpB,IAAI;gBACJ,MAAM;gBACN,GAAG,WAAW;aACf,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;gBACpD,CAAC,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE;gBAClC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO;gBACL,WAAW;gBACX,IAAI;gBACJ,GAAG,MAAM,GAAG,MAAM,EAAE;gBACpB,GAAG,WAAW;aACf,CAAC;QACJ,CAAC;QAED,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,IAAgC;QAC7C,OAAO,IAAI,yBAAyB,CAClC,GAAG,EACH,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,YAAY,CACnB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/providers/copilot/strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function ensureCopilotTrust(workdir: string): Promise<void>;
2
+ //# sourceMappingURL=trust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.d.ts","sourceRoot":"","sources":["../../../src/providers/copilot/trust.ts"],"names":[],"mappings":"AAUA,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBvE"}
@@ -0,0 +1,45 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { compareCopilotPaths, normalizeCopilotTrustPath, parseJsonObject, readTextIfExists, } from "../trust-utils.js";
5
+ export async function ensureCopilotTrust(workdir) {
6
+ const configDir = join(homedir(), ".copilot");
7
+ const configPath = join(configDir, "config.json");
8
+ const normalizedWorkdir = normalizeCopilotTrustPath(workdir);
9
+ await mkdir(configDir, { recursive: true });
10
+ const content = await readTextIfExists(configPath) ?? "";
11
+ const { prefix, body, eol } = splitLeadingJsonComments(content);
12
+ const config = body.trim() === ""
13
+ ? {}
14
+ : parseJsonObject(body, configPath);
15
+ const trustedFolders = Array.isArray(config.trustedFolders)
16
+ ? [...config.trustedFolders]
17
+ : [];
18
+ const alreadyTrusted = trustedFolders.some((value) => typeof value === "string" && compareCopilotPaths(value, normalizedWorkdir));
19
+ if (alreadyTrusted)
20
+ return;
21
+ trustedFolders.push(normalizedWorkdir);
22
+ config.trustedFolders = trustedFolders;
23
+ const json = JSON.stringify(config, null, 2).replace(/\n/g, eol);
24
+ await writeFile(configPath, `${prefix}${json}${eol}`, "utf8");
25
+ }
26
+ function splitLeadingJsonComments(content) {
27
+ const eol = content.includes("\r\n") ? "\r\n" : "\n";
28
+ const lines = content === "" ? [] : content.split(/\r?\n/);
29
+ let index = 0;
30
+ while (index < lines.length) {
31
+ const trimmed = lines[index].trim();
32
+ if (trimmed === "" || trimmed.startsWith("//")) {
33
+ index++;
34
+ continue;
35
+ }
36
+ break;
37
+ }
38
+ const prefixLines = lines.slice(0, index);
39
+ return {
40
+ prefix: prefixLines.length === 0 ? "" : `${prefixLines.join(eol)}${eol}`,
41
+ body: lines.slice(index).join(eol),
42
+ eol,
43
+ };
44
+ }
45
+ //# sourceMappingURL=trust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust.js","sourceRoot":"","sources":["../../../src/providers/copilot/trust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { BuiltinRole, DriverName } from "../flow/types.js";
2
+ import type { SessionLine } from "../session/reader.js";
3
+ export type OffscreenBinding = "primary" | "secondary";
4
+ export type ForkSourceKey = "interviewer" | "planner" | "simplifier" | "reviewer-plan";
5
+ export interface ForkSourceConfig {
6
+ key: ForkSourceKey;
7
+ role: BuiltinRole;
8
+ variant?: string;
9
+ driver: string;
10
+ sessionKey: string;
11
+ model?: string;
12
+ effort?: string;
13
+ yolo?: boolean;
14
+ }
15
+ export interface OffscreenSlot {
16
+ binding: OffscreenBinding;
17
+ roleLabel: string;
18
+ hint: string;
19
+ summarizePrompt?: string;
20
+ summarizeHint?: string;
21
+ driver: DriverName;
22
+ sourceSessionId: string;
23
+ sourceSessionPath: string;
24
+ model?: string;
25
+ effort?: string;
26
+ yolo?: boolean;
27
+ }
28
+ export interface ForkLaunch {
29
+ command: string;
30
+ args: string[];
31
+ env?: Record<string, string>;
32
+ forkSessionFile?: string;
33
+ cleanup: () => void;
34
+ }
35
+ export type ForkLineage = {
36
+ kind: "copilot";
37
+ file: string;
38
+ } | {
39
+ kind: "codex";
40
+ sourceSessionId: string;
41
+ sessionsRoot?: string;
42
+ preForkFiles?: Set<string>;
43
+ } | {
44
+ kind: "claude";
45
+ projectDir: string;
46
+ preSnapshot: Set<string>;
47
+ sourceUuids: Set<string>;
48
+ sourceFile: string;
49
+ };
50
+ export type ForkSessionLocateOptions = {
51
+ signal?: AbortSignal;
52
+ timeoutMs?: number;
53
+ pollMs?: number;
54
+ };
55
+ export interface ForkHandler {
56
+ buildLaunch(slot: OffscreenSlot, workdir: string): Promise<ForkLaunch>;
57
+ captureLineage(slot: OffscreenSlot, workdir: string, launch: ForkLaunch): Promise<ForkLineage>;
58
+ locateSessionFile(lineage: ForkLineage, opts?: ForkSessionLocateOptions): Promise<string | undefined>;
59
+ turnComplete(lines: SessionLine[]): boolean;
60
+ latestSubmitIndex(lines: SessionLine[]): number;
61
+ submitCount(lines: SessionLine[]): number;
62
+ }
63
+ export declare const INQUIRY_ONLY_INSTRUCTION = "This session is solely for inquiry. Don't make edits, just answer questions.";
64
+ //# sourceMappingURL=fork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fork.d.ts","sourceRoot":"","sources":["../../src/providers/fork.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const INQUIRY_ONLY_INSTRUCTION = "This session is solely for inquiry. Don't make edits, just answer questions.";
2
+ //# sourceMappingURL=fork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fork.js","sourceRoot":"","sources":["../../src/providers/fork.ts"],"names":[],"mappings":"AAyEA,MAAM,CAAC,MAAM,wBAAwB,GACnC,8EAA8E,CAAC"}
@@ -4,5 +4,6 @@ export { CopilotStrategy } from "./copilot/index.js";
4
4
  export { invoke } from "./invoke.js";
5
5
  export { resolveProvider, computeFeatureGates, DEFAULT_GATES } from "./registry.js";
6
6
  export type { FeatureGates } from "./registry.js";
7
- export type { ProviderStrategy, SessionHandler, SessionSnapshot, PlanModeConfig, CompletionDetector, } from "./types.js";
7
+ export type { ProviderStrategy, SessionHandler, SessionSnapshot, PlanModeConfig, CompletionDetector, ForkSubmitFloorPolicy, OptionCatalog, } from "./types.js";
8
+ export type { ForkHandler, ForkLaunch, ForkLineage, ForkSessionLocateOptions, ForkSourceConfig, ForkSourceKey, OffscreenBinding, OffscreenSlot, } from "./fork.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACpF,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACpF,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,WAAW,CAAC"}
@@ -5,4 +5,7 @@ export declare function providerEfforts(p: DriverName, model?: string): readonly
5
5
  export declare function defaultEffort(p: DriverName): string;
6
6
  export declare function isKnownModel(p: DriverName, m: string): boolean;
7
7
  export declare function isKnownEffort(p: DriverName, e: string, model?: string): boolean;
8
+ export declare function subagentModels(p: DriverName): readonly string[];
9
+ export declare function defaultSubagentModel(p: DriverName): string;
10
+ export declare function isKnownSubagentModel(p: DriverName, m: string): boolean;
8
11
  //# sourceMappingURL=option-catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"option-catalog.d.ts","sourceRoot":"","sources":["../../src/providers/option-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA4HnD,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAI/D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAOlD;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,UAAU,EACb,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,MAAM,EAAE,CAOnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED,wBAAgB,aAAa,CAC3B,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,MAAM,EACT,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAET"}
1
+ {"version":3,"file":"option-catalog.d.ts","sourceRoot":"","sources":["../../src/providers/option-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAE/D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAElD;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,UAAU,EACb,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,MAAM,EAAE,CAEnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,aAAa,CAC3B,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,MAAM,EACT,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAET;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,MAAM,EAAE,CAE/D;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtE"}
@@ -1,143 +1,45 @@
1
1
  import { resolveProvider } from "./registry.js";
2
- import { versionGte } from "./version.js";
3
- const CLAUDE_OPUS_4_8_MIN_CLI_VERSION = "2.1.152";
4
- const CLAUDE_SONNET_5_MIN_CLI_VERSION = "2.1.197";
5
- const COPILOT_OPUS_4_8_MIN_CLI_VERSION = "1.0.55";
6
- const COPILOT_SONNET_5_MIN_CLI_VERSION = "1.0.68";
7
- const COPILOT_MAX_EFFORT_MIN_CLI_VERSION = "1.0.60";
8
- const CLAUDE_MODELS_LEGACY = [
9
- "claude-opus-4-7",
10
- "claude-opus-4-7[1m]",
11
- ];
12
- const CLAUDE_MODELS_OPUS_4_8 = [
13
- "claude-opus-4-8",
14
- "claude-opus-4-8[1m]",
15
- "claude-opus-4-7",
16
- "claude-opus-4-7[1m]",
17
- ];
18
- const CLAUDE_MODELS_SONNET_5 = [
19
- "claude-sonnet-5",
20
- "claude-sonnet-5[1m]",
21
- ...CLAUDE_MODELS_OPUS_4_8,
22
- ];
23
- const CLAUDE_DEFAULT_MODEL_LEGACY = "claude-opus-4-7[1m]";
24
- const CLAUDE_DEFAULT_MODEL_OPUS_4_8 = "claude-opus-4-8[1m]";
25
- const COPILOT_MODELS_LEGACY = [
26
- "gpt-5.5",
27
- "claude-opus-4.7-1m-internal",
28
- ];
29
- const COPILOT_MODELS_OPUS_4_8 = [
30
- "gpt-5.5",
31
- "claude-opus-4.8",
32
- "claude-opus-4.7",
33
- ];
34
- const COPILOT_MODELS_SONNET_5 = [
35
- "gpt-5.5",
36
- "claude-sonnet-5",
37
- "claude-opus-4.8",
38
- "claude-opus-4.7",
39
- ];
40
- const CATALOG = {
41
- claude: {
42
- // Claude models are derived dynamically from the detected CLI version.
43
- models: [],
44
- efforts: ["medium", "high", "xhigh", "max"],
45
- defaultEffort: "high",
46
- },
47
- codex: {
48
- models: ["gpt-5.5"],
49
- efforts: ["medium", "high", "xhigh"],
50
- defaultEffort: "high",
51
- },
52
- copilot: {
53
- // Copilot models are derived dynamically from the detected CLI version.
54
- models: COPILOT_MODELS_LEGACY,
55
- efforts: ["medium", "high", "xhigh"],
56
- defaultEffort: "high",
57
- },
58
- };
59
- function claudeCliVersion() {
60
- try {
61
- return resolveProvider("claude").version;
62
- }
63
- catch {
64
- return undefined;
65
- }
66
- }
67
- function claudeSupportsOpus48() {
68
- return versionGte(claudeCliVersion(), CLAUDE_OPUS_4_8_MIN_CLI_VERSION);
2
+ export function providerModels(p) {
3
+ return resolveOptions(p)?.models() ?? [];
69
4
  }
70
- function claudeSupportsSonnet5() {
71
- return versionGte(claudeCliVersion(), CLAUDE_SONNET_5_MIN_CLI_VERSION);
5
+ export function defaultModel(p) {
6
+ return resolveOptions(p)?.defaultModel() ?? "";
72
7
  }
73
- function claudeModels() {
74
- if (claudeSupportsSonnet5())
75
- return CLAUDE_MODELS_SONNET_5;
76
- return claudeSupportsOpus48()
77
- ? CLAUDE_MODELS_OPUS_4_8
78
- : CLAUDE_MODELS_LEGACY;
8
+ export function providerEfforts(p, model) {
9
+ return resolveOptions(p)?.efforts(model) ?? [];
79
10
  }
80
- function copilotCliVersion() {
81
- try {
82
- return resolveProvider("copilot").version;
83
- }
84
- catch {
85
- return undefined;
86
- }
11
+ export function defaultEffort(p) {
12
+ return resolveOptions(p)?.defaultEffort() ?? "";
87
13
  }
88
- function copilotSupportsOpus48() {
89
- return versionGte(copilotCliVersion(), COPILOT_OPUS_4_8_MIN_CLI_VERSION);
14
+ export function isKnownModel(p, m) {
15
+ return resolveOptions(p)?.isKnownModel(m) ?? false;
90
16
  }
91
- function copilotSupportsSonnet5() {
92
- return versionGte(copilotCliVersion(), COPILOT_SONNET_5_MIN_CLI_VERSION);
17
+ export function isKnownEffort(p, e, model) {
18
+ return resolveOptions(p)?.isKnownEffort(e, model) ?? false;
93
19
  }
94
- function copilotModels() {
95
- if (copilotSupportsSonnet5())
96
- return COPILOT_MODELS_SONNET_5;
97
- return copilotSupportsOpus48()
98
- ? COPILOT_MODELS_OPUS_4_8
99
- : COPILOT_MODELS_LEGACY;
20
+ export function subagentModels(p) {
21
+ return resolveSubagentOptions(p)?.models() ?? [];
100
22
  }
101
- function copilotSupportsMaxEffort() {
102
- return versionGte(copilotCliVersion(), COPILOT_MAX_EFFORT_MIN_CLI_VERSION);
23
+ export function defaultSubagentModel(p) {
24
+ return resolveSubagentOptions(p)?.defaultModel() ?? "";
103
25
  }
104
- function isClaudeFamilyModel(model) {
105
- return model?.startsWith("claude-") ?? false;
26
+ export function isKnownSubagentModel(p, m) {
27
+ return resolveSubagentOptions(p)?.isKnownModel(m) ?? false;
106
28
  }
107
- export function providerModels(p) {
108
- if (p === "claude")
109
- return claudeModels();
110
- if (p === "copilot")
111
- return copilotModels();
112
- return CATALOG[p]?.models ?? [];
113
- }
114
- export function defaultModel(p) {
115
- if (p === "claude") {
116
- return claudeSupportsOpus48()
117
- ? CLAUDE_DEFAULT_MODEL_OPUS_4_8
118
- : CLAUDE_DEFAULT_MODEL_LEGACY;
29
+ function resolveOptions(p) {
30
+ try {
31
+ return resolveProvider(p).options;
119
32
  }
120
- return CATALOG[p]?.models[0] ?? "";
121
- }
122
- export function providerEfforts(p, model) {
123
- const base = CATALOG[p]?.efforts ?? [];
124
- const modelAllowsMax = isClaudeFamilyModel(model);
125
- if (p === "copilot" && modelAllowsMax && copilotSupportsMaxEffort()) {
126
- return base.includes("max") ? base : [...base, "max"];
33
+ catch {
34
+ return undefined;
127
35
  }
128
- return modelAllowsMax ? base : base.filter((effort) => effort !== "max");
129
- }
130
- export function defaultEffort(p) {
131
- return CATALOG[p]?.defaultEffort ?? "";
132
36
  }
133
- export function isKnownModel(p, m) {
134
- if (p === "claude")
135
- return claudeModels().includes(m);
136
- if (p === "copilot")
137
- return copilotModels().includes(m);
138
- return CATALOG[p]?.models.includes(m) ?? false;
139
- }
140
- export function isKnownEffort(p, e, model) {
141
- return providerEfforts(p, model).includes(e);
37
+ function resolveSubagentOptions(p) {
38
+ try {
39
+ return resolveProvider(p).subagentOptions;
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
142
44
  }
143
45
  //# sourceMappingURL=option-catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"option-catalog.js","sourceRoot":"","sources":["../../src/providers/option-catalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQ1C,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAClD,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAClD,MAAM,gCAAgC,GAAG,QAAQ,CAAC;AAClD,MAAM,gCAAgC,GAAG,QAAQ,CAAC;AAClD,MAAM,kCAAkC,GAAG,QAAQ,CAAC;AAEpD,MAAM,oBAAoB,GAAsB;IAC9C,iBAAiB;IACjB,qBAAqB;CACtB,CAAC;AACF,MAAM,sBAAsB,GAAsB;IAChD,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,qBAAqB;CACtB,CAAC;AACF,MAAM,sBAAsB,GAAsB;IAChD,iBAAiB;IACjB,qBAAqB;IACrB,GAAG,sBAAsB;CAC1B,CAAC;AACF,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAC1D,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AAE5D,MAAM,qBAAqB,GAAsB;IAC/C,SAAS;IACT,6BAA6B;CAC9B,CAAC;AACF,MAAM,uBAAuB,GAAsB;IACjD,SAAS;IACT,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AACF,MAAM,uBAAuB,GAAsB;IACjD,SAAS;IACT,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,OAAO,GAAwC;IACnD,MAAM,EAAE;QACN,uEAAuE;QACvE,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QAC3C,aAAa,EAAE,MAAM;KACtB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,CAAC,SAAS,CAAC;QACnB,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACpC,aAAa,EAAE,MAAM;KACtB;IACD,OAAO,EAAE;QACP,wEAAwE;QACxE,MAAM,EAAE,qBAAqB;QAC7B,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;QACpC,aAAa,EAAE,MAAM;KACtB;CACF,CAAC;AAEF,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO,UAAU,CAAC,gBAAgB,EAAE,EAAE,+BAA+B,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,UAAU,CAAC,gBAAgB,EAAE,EAAE,+BAA+B,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,qBAAqB,EAAE;QAAE,OAAO,sBAAsB,CAAC;IAC3D,OAAO,oBAAoB,EAAE;QAC3B,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,oBAAoB,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,UAAU,CAAC,iBAAiB,EAAE,EAAE,gCAAgC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO,UAAU,CAAC,iBAAiB,EAAE,EAAE,gCAAgC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,sBAAsB,EAAE;QAAE,OAAO,uBAAuB,CAAC;IAC7D,OAAO,qBAAqB,EAAE;QAC5B,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,qBAAqB,CAAC;AAC5B,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,UAAU,CAAC,iBAAiB,EAAE,EAAE,kCAAkC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAyB;IACpD,OAAO,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAa;IAC1C,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,YAAY,EAAE,CAAC;IAC1C,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,aAAa,EAAE,CAAC;IAC5C,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa;IACxC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,OAAO,oBAAoB,EAAE;YAC3B,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,2BAA2B,CAAC;IAClC,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,CAAa,EACb,KAAc;IAEd,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,SAAS,IAAI,cAAc,IAAI,wBAAwB,EAAE,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAa;IACzC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,CAAS;IACnD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,aAAa,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,CAAa,EACb,CAAS,EACT,KAAc;IAEd,OAAO,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"option-catalog.js","sourceRoot":"","sources":["../../src/providers/option-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,cAAc,CAAC,CAAa;IAC1C,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa;IACxC,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,CAAa,EACb,KAAc;IAEd,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAa;IACzC,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa,EAAE,CAAS;IACnD,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,CAAa,EACb,CAAS,EACT,KAAc;IAEd,OAAO,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAa;IAC1C,OAAO,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAa;IAChD,OAAO,sBAAsB,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAa,EAAE,CAAS;IAC3D,OAAO,sBAAsB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc,CAAC,CAAa;IACnC,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAa;IAC3C,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function normalizeCopilotTrustPath(value: string): string;
2
+ export declare function compareCopilotPaths(a: string, b: string): boolean;
3
+ export declare function readTextIfExists(path: string): Promise<string | undefined>;
4
+ export declare function parseJsonObject(content: string, path: string): Record<string, unknown>;
5
+ export declare function tomlBasicString(value: string): string;
6
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
7
+ //# sourceMappingURL=trust-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-utils.d.ts","sourceRoot":"","sources":["../../src/providers/trust-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMjE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAOhF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMtF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}