github-router 0.3.293 → 0.3.297

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 (95) hide show
  1. package/dist/{attribution-settings-Dx8TBPE8.js → attribution-settings-B70GmZ68.js} +72 -32
  2. package/dist/attribution-settings-B70GmZ68.js.map +1 -0
  3. package/dist/{auth-BwUHopJz.js → auth-CluG5e-l.js} +3 -3
  4. package/dist/{auth-BwUHopJz.js.map → auth-CluG5e-l.js.map} +1 -1
  5. package/dist/browser-ext/manifest.json +1 -1
  6. package/dist/{check-usage-BTda5753.js → check-usage-iOzfnKJe.js} +4 -4
  7. package/dist/{check-usage-BTda5753.js.map → check-usage-iOzfnKJe.js.map} +1 -1
  8. package/dist/{claude-BoAd_L2W.js → claude-DMMfvfns.js} +225 -61
  9. package/dist/claude-DMMfvfns.js.map +1 -0
  10. package/dist/{codex-BdJgGT6Q.js → codex-DVOyVv2B.js} +5 -5
  11. package/dist/{codex-BdJgGT6Q.js.map → codex-DVOyVv2B.js.map} +1 -1
  12. package/dist/{debug-B3UrZTHQ.js → debug-DsEwleGg.js} +2 -2
  13. package/dist/{debug-B3UrZTHQ.js.map → debug-DsEwleGg.js.map} +1 -1
  14. package/dist/engine-BkGRuUNs.js +2 -0
  15. package/dist/fast-profile-contract-K3P58nj3.js +57 -0
  16. package/dist/fast-profile-contract-K3P58nj3.js.map +1 -0
  17. package/dist/{gate-discovery-C30rfnyo.js → gate-discovery-G6PAG61j.js} +5 -5
  18. package/dist/{gate-discovery-C30rfnyo.js.map → gate-discovery-G6PAG61j.js.map} +1 -1
  19. package/dist/{get-copilot-usage-CRrf1ZSC.js → get-copilot-usage-B7Z4XVWj.js} +2 -2
  20. package/dist/{get-copilot-usage-CRrf1ZSC.js.map → get-copilot-usage-B7Z4XVWj.js.map} +1 -1
  21. package/dist/hooks.mjs +228 -3
  22. package/dist/hooks.sha256 +1 -1
  23. package/dist/{internal-artifact-open-BsEQRvDi.js → internal-artifact-open-D6tKMg8v.js} +2 -2
  24. package/dist/{internal-artifact-open-BsEQRvDi.js.map → internal-artifact-open-D6tKMg8v.js.map} +1 -1
  25. package/dist/internal-fast-dispatch-guard-Bkr_iGOu.js +191 -0
  26. package/dist/internal-fast-dispatch-guard-Bkr_iGOu.js.map +1 -0
  27. package/dist/internal-fast-dispatch-guard-N-RaLrOn.js +2 -0
  28. package/dist/{internal-first-mate-guard-CVFFJriA.js → internal-first-mate-guard-C9BV7J4U.js} +3 -3
  29. package/dist/{internal-first-mate-guard-CVFFJriA.js.map → internal-first-mate-guard-C9BV7J4U.js.map} +1 -1
  30. package/dist/{internal-first-mate-guard-DJdX6t48.js → internal-first-mate-guard-WJApyc8j.js} +1 -1
  31. package/dist/{internal-plan-review-8TKDLco6.js → internal-plan-review-t3PuNfuL.js} +3 -3
  32. package/dist/{internal-plan-review-8TKDLco6.js.map → internal-plan-review-t3PuNfuL.js.map} +1 -1
  33. package/dist/{internal-prompt-submit-Da7pxqua.js → internal-prompt-submit-C3KovHQG.js} +4 -4
  34. package/dist/{internal-prompt-submit-Da7pxqua.js.map → internal-prompt-submit-C3KovHQG.js.map} +1 -1
  35. package/dist/{internal-session-bind-BOFytA1f.js → internal-session-bind-d2uoja8I.js} +2 -2
  36. package/dist/{internal-session-bind-BOFytA1f.js.map → internal-session-bind-d2uoja8I.js.map} +1 -1
  37. package/dist/{internal-stop-hook-OnfK3BxE.js → internal-stop-hook-BjzrF1zd.js} +5 -5
  38. package/dist/{internal-stop-hook-OnfK3BxE.js.map → internal-stop-hook-BjzrF1zd.js.map} +1 -1
  39. package/dist/{internal-stop-review-CdouacHL.js → internal-stop-review-YtDUGXpX.js} +2 -2
  40. package/dist/{internal-stop-review-CdouacHL.js.map → internal-stop-review-YtDUGXpX.js.map} +1 -1
  41. package/dist/{internal-worker-guard-Bx-itoP8.js → internal-worker-guard-CdkeS9PN.js} +2 -2
  42. package/dist/{internal-worker-guard-Bx-itoP8.js.map → internal-worker-guard-CdkeS9PN.js.map} +1 -1
  43. package/dist/{internal-workspace-header-8WT0iB5K.js → internal-workspace-header-tuBXJV22.js} +2 -2
  44. package/dist/{internal-workspace-header-8WT0iB5K.js.map → internal-workspace-header-tuBXJV22.js.map} +1 -1
  45. package/dist/{lifecycle-nuOHfwgj.js → lifecycle-Bg6doY3-.js} +2 -2
  46. package/dist/{lifecycle-nuOHfwgj.js.map → lifecycle-Bg6doY3-.js.map} +1 -1
  47. package/dist/lifecycle-CGLt1cJQ.js +2 -0
  48. package/dist/{lifecycle-LeSfa7wH.js → lifecycle-CM9eTzvk.js} +2 -2
  49. package/dist/{lifecycle-LeSfa7wH.js.map → lifecycle-CM9eTzvk.js.map} +1 -1
  50. package/dist/lifecycle-DoUwpVDB.js +2 -0
  51. package/dist/main.js +19 -18
  52. package/dist/main.js.map +1 -1
  53. package/dist/{mcp-workspace-header-q34H_4wL.js → mcp-workspace-header-dERl2YTT.js} +2 -2
  54. package/dist/{mcp-workspace-header-q34H_4wL.js.map → mcp-workspace-header-dERl2YTT.js.map} +1 -1
  55. package/dist/{models-hhJcrZhr.js → models-DZ4hYsR7.js} +3 -3
  56. package/dist/{models-hhJcrZhr.js.map → models-DZ4hYsR7.js.map} +1 -1
  57. package/dist/{orchestration-pzbrKkgD.js → orchestration-BiGCEwbH.js} +2 -2
  58. package/dist/{orchestration-pzbrKkgD.js.map → orchestration-BiGCEwbH.js.map} +1 -1
  59. package/dist/{paths-BH4J7slC.js → paths-Ci485qSJ.js} +4 -4
  60. package/dist/{paths-BH4J7slC.js.map → paths-Ci485qSJ.js.map} +1 -1
  61. package/dist/paths-GD7bgGGy.js +2 -0
  62. package/dist/{peer-mcp-personas-DhI7ZPSx.js → peer-mcp-personas-ce6_YMnX.js} +407 -96
  63. package/dist/peer-mcp-personas-ce6_YMnX.js.map +1 -0
  64. package/dist/{plan-review-hook-CfcanA7_.js → plan-review-hook-DuW0pSoM.js} +3 -3
  65. package/dist/{plan-review-hook-CfcanA7_.js.map → plan-review-hook-DuW0pSoM.js.map} +1 -1
  66. package/dist/{prompt-submit-hook-Bqf9ORgb.js → prompt-submit-hook-IMl7ssfr.js} +3 -3
  67. package/dist/{prompt-submit-hook-Bqf9ORgb.js.map → prompt-submit-hook-IMl7ssfr.js.map} +1 -1
  68. package/dist/{provision-CZJ4EWls.js → provision-BhCtm3md.js} +4 -4
  69. package/dist/{provision-CZJ4EWls.js.map → provision-BhCtm3md.js.map} +1 -1
  70. package/dist/{self-invocation-DhO1Z8iD.js → self-invocation-DAB_od0C.js} +2 -2
  71. package/dist/{self-invocation-DhO1Z8iD.js.map → self-invocation-DAB_od0C.js.map} +1 -1
  72. package/dist/{serve-RxWYzoOl.js → serve-Blj_dRSr.js} +12 -12
  73. package/dist/{serve-RxWYzoOl.js.map → serve-Blj_dRSr.js.map} +1 -1
  74. package/dist/{server-setup-DbvbW5Ve.js → server-setup-DhG3YZPj.js} +436 -277
  75. package/dist/server-setup-DhG3YZPj.js.map +1 -0
  76. package/dist/{start-BNcGsXsY.js → start-8QaqICtd.js} +3 -3
  77. package/dist/{start-BNcGsXsY.js.map → start-8QaqICtd.js.map} +1 -1
  78. package/dist/{stop-gate-hook-BiBp5aGm.js → stop-gate-hook-DQnh_KfI.js} +3 -3
  79. package/dist/{stop-gate-hook-BiBp5aGm.js.map → stop-gate-hook-DQnh_KfI.js.map} +1 -1
  80. package/dist/{stop-gate-policy-BGd6b5hR.js → stop-gate-policy-DMr3KVmw.js} +2 -2
  81. package/dist/{stop-gate-policy-BGd6b5hR.js.map → stop-gate-policy-DMr3KVmw.js.map} +1 -1
  82. package/dist/{token-8drORhXg.js → token-BtJhjXXu.js} +54 -7
  83. package/dist/token-BtJhjXXu.js.map +1 -0
  84. package/dist/{worker-dispatch-D5fGroNr.js → worker-dispatch-BEHkTbnH.js} +2 -2
  85. package/dist/{worker-dispatch-D5fGroNr.js.map → worker-dispatch-BEHkTbnH.js.map} +1 -1
  86. package/package.json +1 -1
  87. package/dist/attribution-settings-Dx8TBPE8.js.map +0 -1
  88. package/dist/claude-BoAd_L2W.js.map +0 -1
  89. package/dist/engine-CK2b_cTt.js +0 -2
  90. package/dist/lifecycle-C8fOsQke.js +0 -2
  91. package/dist/lifecycle-D4Yc1aap.js +0 -2
  92. package/dist/paths-DJZoXfAS.js +0 -2
  93. package/dist/peer-mcp-personas-DhI7ZPSx.js.map +0 -1
  94. package/dist/server-setup-DbvbW5Ve.js.map +0 -1
  95. package/dist/token-8drORhXg.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { Cn as withOneMSuffix, Sn as oneMContextDisabled, a as buildAgentPrompt, en as CONDENSED_OPERATING_SEQUENCE, l as personasFor, n as MCP_GROUPS, t as GROUP_META, tn as DEFINITION_OF_GREATNESS } from "./peer-mcp-personas-DhI7ZPSx.js";
2
- import { a as isUnderClaudeConfigMirror, d as writeRuntimeFileSecure, t as PATHS } from "./paths-BH4J7slC.js";
3
- import { f as LUNA_IMPLEMENTER_ALIAS_ID, p as LUNA_SCOUT_ALIAS_ID } from "./server-setup-DbvbW5Ve.js";
4
- import "./self-invocation-DhO1Z8iD.js";
5
- import { a as STRIPPED_AUTH_ROUTING_ENV_KEYS, n as buildCodexProviderConfigFlags } from "./provision-CZJ4EWls.js";
6
- import { n as buildWorkspaceHeaderHelperCommand } from "./mcp-workspace-header-q34H_4wL.js";
7
- import { a as dispatcherAgentName, c as dispatcherTools, n as activeDispatchModes, o as dispatcherDescription, s as dispatcherPrompt } from "./worker-dispatch-D5fGroNr.js";
1
+ import { Ft as LUNA_IMPLEMENTER_ALIAS_ID, Lt as LUNA_SCOUT_ALIAS_ID, Mt as FAST_CRITIC_ALIAS_ID, Rn as oneMContextDisabled, _n as CONDENSED_OPERATING_SEQUENCE, a as buildAgentPrompt, l as personasFor, n as MCP_GROUPS, t as GROUP_META, vn as DEFINITION_OF_GREATNESS, zn as withOneMSuffix } from "./peer-mcp-personas-ce6_YMnX.js";
2
+ import { a as isUnderClaudeConfigMirror, d as writeRuntimeFileSecure, t as PATHS } from "./paths-Ci485qSJ.js";
3
+ import { o as FAST_PROFILE_NATIVE_AGENT_NAMES } from "./fast-profile-contract-K3P58nj3.js";
4
+ import "./self-invocation-DAB_od0C.js";
5
+ import { a as STRIPPED_AUTH_ROUTING_ENV_KEYS, n as buildCodexProviderConfigFlags } from "./provision-BhCtm3md.js";
6
+ import { n as buildWorkspaceHeaderHelperCommand } from "./mcp-workspace-header-dERl2YTT.js";
7
+ import { a as dispatcherAgentName, c as dispatcherTools, n as activeDispatchModes, o as dispatcherDescription, s as dispatcherPrompt } from "./worker-dispatch-BEHkTbnH.js";
8
8
  import consola from "consola";
9
9
  import path from "node:path";
10
10
  import { randomBytes } from "node:crypto";
@@ -225,7 +225,7 @@ function readOnlyToolSteer() {
225
225
  return "Use Read to read files and Grep/Glob plus the semantic code search tool to find them; Bash is for read-only inspection such as git log, git blame, and git show. Do not modify any file, and do not run mutating commands.";
226
226
  }
227
227
  /**
228
- * `tools:` allowlist for the read-only natives (`scout`, `brainstorm`), modelled
228
+ * `tools:` allowlist for read-only natives (`scout`, fast `Explore`, `brainstorm`), modelled
229
229
  * on Claude Code's own `Explore`/`Plan` built-ins, which run with every tool
230
230
  * EXCEPT Agent / Artifact / ExitPlanMode / Edit / Write / NotebookEdit — note
231
231
  * that Anthropic's own read-only agent keeps Bash, which is what makes `git log`
@@ -280,27 +280,43 @@ function buildFastProfileAgentDefinitions(opts) {
280
280
  const implementerModel = nonEmptyModel(opts.nativeSubagentModel);
281
281
  const reviewerModel = nonEmptyModel(opts.reviewerModel);
282
282
  const plannerModel = nonEmptyModel(opts.plannerModel);
283
- if (!scoutModel || !implementerModel || !reviewerModel || !plannerModel) throw new Error("fast profile requires resolved scout, implementer, reviewer, and planner models");
283
+ const criticModel = nonEmptyModel(opts.criticModel);
284
+ if (!scoutModel || !implementerModel || !reviewerModel || !plannerModel || !criticModel) throw new Error("fast profile requires resolved Explore, implementer, reviewer, planner, and critic models");
284
285
  const searchKey = opts.groupKeys.search ?? GROUP_META.search.preferredKey;
285
286
  const peersKey = peersKeyOf(opts.groupKeys);
286
287
  const searchMcp = opts.serverUrl ? { mcpServers: { [searchKey]: httpEntryFor(opts.serverUrl, "search", opts.nonce, opts.workspaceHeaderCmd) } } : {};
287
288
  const peersMcp = opts.serverUrl && opts.groupKeys.peers ? { mcpServers: { [peersKey]: httpEntryFor(opts.serverUrl, "peers", opts.nonce, opts.workspaceHeaderCmd) } } : {};
288
289
  const oracleTool = opts.groupKeys.peers ? `mcp__${peersKey}__oracle` : void 0;
289
- const readOnlyTools = readOnlyToolAllowlist(searchKey);
290
- const consultTools = oracleTool ? [...readOnlyTools, oracleTool] : readOnlyTools;
290
+ const readSearchTools = [
291
+ "Read",
292
+ "Grep",
293
+ "Glob",
294
+ "Bash"
295
+ ];
296
+ const scoutTools = [...readSearchTools, `mcp__${searchKey}__*`];
297
+ const reviewerTools = [...scoutTools, ...oracleTool ? [oracleTool] : []];
298
+ const plannerTools = [
299
+ ...readSearchTools,
300
+ "WebFetch",
301
+ "WebSearch",
302
+ `mcp__${searchKey}__*`,
303
+ ...oracleTool ? [oracleTool] : [],
304
+ "Agent"
305
+ ];
291
306
  const reviewerPrompt = "You are the fast profile's repository-aware reviewer. Verify what is actually true by reading the code and running the relevant build, tests, or end-to-end reproduction. Find root causes rather than symptoms. Do not modify production code. Report severity-ranked findings with `file:line` evidence and a clear go/no-go. You do not have Advisor; independently reach your verdict from repository evidence. Use Oracle only as a last resort for one precise unresolved question after your own investigation. " + fileToolSteer("builds and reproductions") + " Do not spawn further agents.";
307
+ const criticPrompt = "You are the fast profile's fresh-context cross-lab critic. Assess the supplied plan, design, diff, or decision against its stated constraints. Look for overlooked failure modes, unsupported assumptions, and simpler safer alternatives. Do not modify files, run mutating commands, or spawn agents. Return concise severity-ranked findings with `file:line` evidence where applicable. " + readOnlyToolSteer();
292
308
  const out = {
293
- scout: {
309
+ Explore: {
294
310
  description: `Read-only exploration subagent running ${scoutModel}. Use for broad repository discovery before the lead drafts a plan; return conclusions with file:line evidence, not file dumps.`,
295
311
  prompt: "Investigate the repository read-only. Cast a wide net, then return a concise evidence packet for the lead: conclusions, load-bearing `file:line` citations, commands checked, and explicit gaps. Do not plan, edit, or spawn agents. " + readOnlyToolSteer(),
296
- tools: readOnlyTools,
312
+ tools: scoutTools,
297
313
  model: decorateGuaranteedOneM(LUNA_SCOUT_ALIAS_ID),
298
314
  effort: opts.scoutEffort ?? "high",
299
315
  ...searchMcp
300
316
  },
301
317
  implementer: {
302
318
  description: `Implementation subagent running ${implementerModel}. Use for well-specified mechanical changes after the plan is approved; implement and verify end to end in its own context.`,
303
- prompt: "Implement the approved, well-specified change surgically. Match surrounding style, minimize unrelated churn, use dedicated file tools, and run the relevant build/tests. Do not redesign the plan or spawn more agents. Report changes, verification, and unresolved risk. " + fileToolSteer("builds"),
319
+ prompt: "Implement the approved, well-specified change surgically. Match surrounding style, minimize unrelated churn, use dedicated file tools, and run the relevant build/tests. For verification, you may invoke only the fast-profile `reviewer` or `critic` native subagent; do not invoke any other role or redesign the plan. Report changes, verification, and unresolved risk. " + fileToolSteer("builds"),
304
320
  model: decorateGuaranteedOneM(LUNA_IMPLEMENTER_ALIAS_ID),
305
321
  effort: opts.implementerEffort ?? "max"
306
322
  },
@@ -309,12 +325,24 @@ function buildFastProfileAgentDefinitions(opts) {
309
325
  prompt: reviewerPrompt,
310
326
  model: reviewerModel,
311
327
  effort: opts.reviewerEffort ?? "medium",
312
- ...peersMcp
328
+ tools: reviewerTools,
329
+ mcpServers: {
330
+ ...searchMcp.mcpServers ?? {},
331
+ ...peersMcp.mcpServers ?? {}
332
+ }
333
+ },
334
+ critic: {
335
+ description: `Fresh-context cross-lab critic running ${criticModel} at medium effort. Use to challenge a plan, design, diff, or decision against its stated constraints and expose overlooked failure modes.`,
336
+ prompt: criticPrompt,
337
+ model: decorateGuaranteedOneM(FAST_CRITIC_ALIAS_ID),
338
+ effort: opts.criticEffort ?? "medium",
339
+ tools: scoutTools,
340
+ ...searchMcp
313
341
  },
314
342
  planner: {
315
343
  description: `Plan consultant and approver running ${plannerModel}. Invoke only after Luna has done the repository legwork and drafted a plan; pass a handcrafted evidence packet and the complete draft. The lead must not implement until this agent returns APPROVE.`,
316
- prompt: "You are the fast profile's final plan consultant and approver, not a first-pass planner. The caller must provide the user goal, acceptance criteria, repository/domain constraints, Luna's `file:line` and command/test evidence, the complete draft plan, settled decisions, and one focused review question. Selectively verify disputed citations or narrow evidence gaps with read/search tools, but do not repeat broad discovery, edit files, or execute the plan. Return exactly one leading verdict: `APPROVE`, `REVISE`, or `NEED_MORE_CONTEXT`. APPROVE only when the plan is safe, ordered, complete, and verifiable. REVISE must give concrete corrections. NEED_MORE_CONTEXT must name the exact evidence Luna should collect. You do not have Advisor; independently reach your verdict from the evidence packet and selective verification. Use Oracle only as a last resort for one precise unresolved question after your own review. Do not spawn further agents. " + readOnlyToolSteer(),
317
- tools: consultTools,
344
+ prompt: "You are the fast profile's final plan consultant and approver, not a first-pass planner. The caller must provide the user goal, acceptance criteria, repository/domain constraints, Luna's `file:line` and command/test evidence, the complete draft plan, settled decisions, and one focused review question. Selectively verify disputed citations or narrow evidence gaps with read/search tools, but do not repeat broad discovery, edit files, or execute the plan. Return exactly one leading verdict: `APPROVE`, `REVISE`, or `NEED_MORE_CONTEXT`. APPROVE only when the plan is safe, ordered, complete, and verifiable. REVISE must give concrete corrections. NEED_MORE_CONTEXT must name the exact evidence Luna should collect. You do not have Advisor; independently reach your verdict from the evidence packet and selective verification. Use Oracle only as a last resort for one precise unresolved question after your own review. The Task/Agent capability is restricted by the fast in-session ACL: you may invoke only `reviewer`, `Explore`, or `critic`; do not invoke any other role. Bash is for evidence commands only; this is not a shell sandbox. " + readOnlyToolSteer(),
345
+ tools: plannerTools,
318
346
  model: decorateGuaranteedOneM(plannerModel),
319
347
  effort: opts.plannerEffort ?? "high",
320
348
  mcpServers: {
@@ -323,7 +351,7 @@ function buildFastProfileAgentDefinitions(opts) {
323
351
  }
324
352
  }
325
353
  };
326
- const roster = opts.nativeRoster == null ? void 0 : opts.nativeRoster instanceof Set ? opts.nativeRoster : new Set(opts.nativeRoster);
354
+ const roster = opts.nativeRoster == null ? new Set(FAST_PROFILE_NATIVE_AGENT_NAMES) : opts.nativeRoster instanceof Set ? opts.nativeRoster : new Set(opts.nativeRoster);
327
355
  if (roster) {
328
356
  for (const name of Object.keys(out)) if (!roster.has(name)) delete out[name];
329
357
  }
@@ -789,6 +817,8 @@ async function writePeerMcpRuntimeFiles(serverUrl, opts) {
789
817
  implementerEffort: opts.implementerEffort,
790
818
  reviewerEffort: opts.reviewerEffort,
791
819
  plannerEffort: opts.plannerEffort,
820
+ criticModel: opts.criticModel,
821
+ criticEffort: opts.criticEffort,
792
822
  nonce,
793
823
  codexHome,
794
824
  serverUrl,
@@ -796,15 +826,24 @@ async function writePeerMcpRuntimeFiles(serverUrl, opts) {
796
826
  });
797
827
  await fs.unlink(mcpConfigPath).catch(() => {});
798
828
  await fs.unlink(agentsPath).catch(() => {});
799
- await writeRuntimeFileSecure(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
800
- await writeRuntimeFileSecure(agentsPath, JSON.stringify(agents, null, 2));
801
- const mdResult = await writePeerAgentMdFiles(opts.builtinSubagents ? {
802
- ...agents,
803
- ...opts.builtinSubagents
804
- } : agents, {
805
- agentsDir: opts.agentsDir,
806
- fileSuffix
807
- });
829
+ let mdResult;
830
+ try {
831
+ await writeRuntimeFileSecure(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
832
+ await writeRuntimeFileSecure(agentsPath, JSON.stringify(agents, null, 2));
833
+ mdResult = await writePeerAgentMdFiles(opts.builtinSubagents ? {
834
+ ...agents,
835
+ ...opts.builtinSubagents
836
+ } : agents, {
837
+ agentsDir: opts.agentsDir,
838
+ fileSuffix
839
+ });
840
+ } catch (err) {
841
+ if (mdResult) await mdResult.cleanup().catch(() => {});
842
+ await Promise.allSettled([fs.unlink(mcpConfigPath), fs.unlink(agentsPath)]);
843
+ throw err;
844
+ }
845
+ const completeMdResult = mdResult;
846
+ if (!completeMdResult) throw new Error("peer MCP agent files were not generated");
808
847
  const personas = opts.fastProfile ? [] : personasFor({
809
848
  codexCli: opts.codexCli,
810
849
  geminiAvailable: opts.geminiAvailable,
@@ -815,13 +854,13 @@ async function writePeerMcpRuntimeFiles(serverUrl, opts) {
815
854
  await Promise.allSettled([
816
855
  fs.unlink(mcpConfigPath),
817
856
  fs.unlink(agentsPath),
818
- mdResult.cleanup()
857
+ completeMdResult.cleanup()
819
858
  ]);
820
859
  };
821
860
  return {
822
861
  mcpConfigPath,
823
862
  agentsPath,
824
- agentMdPaths: mdResult.paths,
863
+ agentMdPaths: completeMdResult.paths,
825
864
  nonce,
826
865
  personas,
827
866
  cleanup
@@ -1880,10 +1919,11 @@ function joinClauses(parts) {
1880
1919
  * tier; reserve `reviewer` for the higher-stakes assessment it is there for. */
1881
1920
  function buildNativeReachClauses(opts) {
1882
1921
  if (opts.profile === "fast") return joinClauses([
1883
- "`scout` to find or understand something in the repo",
1922
+ "`Explore` to find or understand something in the repo",
1884
1923
  "`implementer` for approved mechanical coding changes",
1885
1924
  "`reviewer` for repository-aware verification, reproduction, and root-causing",
1886
- "`planner` as the Sol plan consultant and approver after Luna has drafted with evidence"
1925
+ "`planner` as the Sol plan consultant and approver after Luna has drafted with evidence",
1926
+ "`critic` for a fresh-context cross-lab challenge to a plan, design, diff, or decision"
1887
1927
  ]);
1888
1928
  const clauses = [];
1889
1929
  const implementerFast = opts.implementerFastAvailable !== false;
@@ -2476,4 +2516,4 @@ async function injectAttributionSuppressionIntoSettingsFile(settingsPath) {
2476
2516
  //#endregion
2477
2517
  export { injectPeerMcpIntoMirror as _, appendPeerAwarenessToMirroredClaudeMd as a, workersKeyOf as b, prependArtifactPanelDirectiveToMirroredClaudeMd as c, SEAMLESS_BUILTIN_TOOLS as d, configureServeDefaultPermissionMode as f, BUILTIN_SUBAGENT_DEFINITIONS as g, sanitizeServeSettingsEnv as h, OPERATING_DEFAULTS_DIGEST as i, prependOperatingDefaultsToMirroredClaudeMd as l, planModeAllowRules as m, INJECTED_SKILLS as n, appendToolbeltAwarenessToMirroredClaudeMd as o, injectAllowRules as p, writeInjectedSkill as r, buildOperatingDefaultsDirective as s, injectAttributionSuppressionIntoSettingsFile as t, prependStyleDirectiveToMirroredClaudeMd as u, resolveCodexCliBackend as v, writePeerMcpRuntimeFiles as x, resolveGroupKeysFromMirror as y };
2478
2518
 
2479
- //# sourceMappingURL=attribution-settings-Dx8TBPE8.js.map
2519
+ //# sourceMappingURL=attribution-settings-B70GmZ68.js.map