lastlight-shared 0.1.7 → 0.3.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-config-schema.js","sourceRoot":"","sources":["../src/repo-config-schema.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,25 @@
1
1
  import { type AgentWorkflowDefinition, type CronWorkflowDefinition } from "lastlight-workflow-engine";
2
2
  import type { DisabledConfig, RouteConfig } from "./config-types.js";
3
+ /**
4
+ * One root that can contribute assets. The ordered stack is resolved
5
+ * last-wins for prompts/skills and (by basename) for agent-context.
6
+ *
7
+ * `repo` is the odd one out: a PER-RUN layer rooted at a managed repo's own
8
+ * `.lastlight/` directory. It is never installed into the module-level `layers`
9
+ * stack — it's handed to `createAssetResolver()` for the duration of a single
10
+ * run — because up to `concurrency.maxWorkflows` runs (plus a cron fan-out
11
+ * across every managed repo) are in flight at once and a global would race.
12
+ * It is also asset-only: `populateCache()` refuses to read workflow/cron YAML
13
+ * from it (a repo may not define workflows).
14
+ */
15
+ export interface AssetLayer {
16
+ name: "built-in" | "overlay" | "legacy" | "repo";
17
+ root: string;
18
+ workflowRoot: string;
19
+ skillRoot: string;
20
+ claudeSkillRoot?: string;
21
+ agentContextRoot: string;
22
+ }
3
23
  export interface WorkflowAssetConfig {
4
24
  builtInRoot?: string;
5
25
  overlayRoot?: string;
@@ -9,8 +29,32 @@ export interface WorkflowOrigin {
9
29
  layer: string;
10
30
  filePath: string;
11
31
  }
32
+ /**
33
+ * Build a layer from a root directory. Deliberately shape-identical for every
34
+ * layer name, including `repo`: a managed repo's `.lastlight/` mirrors the
35
+ * overlay's on-disk layout exactly (`workflows/prompts/x.md`, `skills/<n>/SKILL.md`,
36
+ * `agent-context/*.md`), so there is one shape to learn and `lastlight fork`
37
+ * output drops straight into a repo. Only `claudeSkillRoot` differs — the
38
+ * `.claude/skills` fallback is a built-in/legacy convenience, not an overlay or
39
+ * repo surface.
40
+ */
41
+ export declare function makeLayer(name: AssetLayer["name"], rootOrWorkflowDir: string): AssetLayer;
12
42
  /** Configure ordered asset layers. Built-ins load first; overlay wins by logical name. */
13
43
  export declare function configureWorkflowAssets(config?: WorkflowAssetConfig): void;
44
+ /**
45
+ * The layer stack + disables the module-level facade currently resolves
46
+ * against. Exposed so a caller can compose a per-run resolver on top of them
47
+ * without reaching for the globals or re-deriving the built-in/overlay roots:
48
+ *
49
+ * createAssetResolver(
50
+ * [...getAssetLayers(), makeLayer("repo", join(repoRoot, ".lastlight"))],
51
+ * getDisabledAssets(),
52
+ * { agentContextAdditiveOnly: true },
53
+ * )
54
+ */
55
+ export declare function getAssetLayers(): readonly AssetLayer[];
56
+ /** Copy of the effective disables (see `getAssetLayers`); safe to hand out. */
57
+ export declare function getDisabledAssets(): DisabledConfig;
14
58
  /** Legacy wrapper used by older tests to point directly at a workflow directory. */
15
59
  export declare function setWorkflowDir(dir: string): void;
16
60
  export declare function clearWorkflowCache(): void;
@@ -29,25 +73,69 @@ export declare function getWorkflowByIntent(intent: string): AgentWorkflowDefini
29
73
  export declare function getWorkflowOrigin(name: string): WorkflowOrigin | undefined;
30
74
  export declare function getCronWorkflowOrigin(name: string): WorkflowOrigin | undefined;
31
75
  export declare function loadWorkflowYamlRaw(name: string): string;
32
- export declare function loadPromptTemplate(relativePath: string): string;
33
- export declare function resolvePromptPath(relativePath: string): string;
34
- export declare function loadSkillRaw(name: string): string;
35
- export declare function loadSkillInstructions(name: string): string;
36
76
  /**
37
- * Resolve a list of skill names to their absolute directory paths.
38
- * Each returned path is the skill folder root (containing `SKILL.md`
39
- * plus any `scripts/`, `references/`, `assets/`) — not the .md file.
40
- * The sandbox staging step in agent-executor uses these to symlink or
41
- * copy the whole folder into the phase's bundle at
42
- * `<workspaceRoot>/.lastlight-skills/<phase>/<name>/`.
43
- * Layer-aware: overlay skills win over built-ins (same precedence and
44
- * disabled-skill handling as `loadSkillRaw`).
77
+ * A non-fatal thing the resolver noticed while loading assets. Today the only
78
+ * kind is an agent-context file a repo layer wasn't allowed to override
79
+ * (see `agentContextAdditiveOnly`) — surfaced rather than thrown because the
80
+ * run should still proceed, just with the operator's file winning. Callers are
81
+ * expected to log it / echo it back to the repo so the drop isn't silent.
45
82
  */
46
- export declare function resolveSkillPaths(names: readonly string[]): string[];
83
+ export interface AssetWarning {
84
+ kind: "agent-context-dropped";
85
+ /** Basename of the dropped file, e.g. `security.md`. */
86
+ name: string;
87
+ /** Absolute path of the file that was ignored. */
88
+ filePath: string;
89
+ /** The layer the ignored file came from. */
90
+ layer: AssetLayer["name"];
91
+ /** One-liner, safe to put in a log line or a PR comment. */
92
+ message: string;
93
+ }
94
+ export interface AssetResolverOptions {
95
+ /**
96
+ * When true, a layer named `repo` may only ADD agent-context files: one whose
97
+ * basename an earlier (operator-owned) layer already provides is dropped
98
+ * instead of replacing it, and recorded in `warnings`. Off by default so the
99
+ * built-in → overlay stack keeps its normal last-wins behaviour.
100
+ */
101
+ agentContextAdditiveOnly?: boolean;
102
+ }
103
+ /**
104
+ * The layer-dependent half of the loader, bound to one specific layer stack.
105
+ *
106
+ * Exists so a caller can resolve assets against `globals + one extra per-run
107
+ * layer` WITHOUT installing that layer into the module-level stack: several
108
+ * workflows run concurrently (and a cron fan-out fires across every managed
109
+ * repo at once), so a mutated global would race between runs. The module-level
110
+ * exports below are a thin facade over one of these built from the last
111
+ * `configureWorkflowAssets` call.
112
+ */
113
+ export interface AssetResolver {
114
+ resolvePromptPath(relativePath: string): string;
115
+ loadPromptTemplate(relativePath: string): string;
116
+ loadSkillRaw(name: string): string;
117
+ loadSkillInstructions(name: string): string;
118
+ resolveSkillPaths(names: readonly string[]): string[];
119
+ loadAgentContext(): string;
120
+ /**
121
+ * Warnings from the most recent `loadAgentContext()` call — a snapshot, not
122
+ * an append-only log, so repeated loads can't grow it unboundedly. Empty
123
+ * until `loadAgentContext()` has run at least once.
124
+ */
125
+ readonly warnings: readonly AssetWarning[];
126
+ }
47
127
  /**
48
- * Concatenate resolved agent-context/*.md with overlay filename replacement.
49
- * Later layers replace earlier files by basename; disabled.agentContext removes
50
- * either exact filenames (rules.md) or stem names (rules).
128
+ * Build a resolver over an explicit layer stack. See `getAssetLayers()` for the
129
+ * composition idiom. The `layers`/`disabled` parameters deliberately shadow the
130
+ * module-level globals of the same name: everything inside this closure reads
131
+ * the captured stack, and the shadowing makes it impossible for a body in here
132
+ * to reach the globals by accident.
51
133
  */
134
+ export declare function createAssetResolver(layers: readonly AssetLayer[], disabled: DisabledConfig, options?: AssetResolverOptions): AssetResolver;
135
+ export declare function resolvePromptPath(relativePath: string): string;
136
+ export declare function loadPromptTemplate(relativePath: string): string;
137
+ export declare function loadSkillRaw(name: string): string;
138
+ export declare function loadSkillInstructions(name: string): string;
139
+ export declare function resolveSkillPaths(names: readonly string[]): string[];
52
140
  export declare function loadAgentContext(): string;
53
141
  export declare function validateAssets(routes?: RouteConfig): void;
@@ -5,6 +5,12 @@ import { AgentWorkflowSchema, CronWorkflowSchema, phaseSkillNames, intentToken,
5
5
  const DEFAULT_ROOT = resolve(".");
6
6
  let layers = [makeLayer("built-in", DEFAULT_ROOT)];
7
7
  let disabled = emptyDisabled();
8
+ /**
9
+ * The resolver every module-level asset export delegates to. Rebuilt (never
10
+ * mutated) whenever `layers`/`disabled` change, so the exported facade behaves
11
+ * exactly as it did when those functions read the globals directly.
12
+ */
13
+ let defaultResolver = createAssetResolver(layers, disabled);
8
14
  const agentCache = new Map();
9
15
  const cronCache = new Map();
10
16
  const agentOrigins = new Map();
@@ -37,7 +43,16 @@ function existingDir(path) {
37
43
  return false;
38
44
  }
39
45
  }
40
- function makeLayer(name, rootOrWorkflowDir) {
46
+ /**
47
+ * Build a layer from a root directory. Deliberately shape-identical for every
48
+ * layer name, including `repo`: a managed repo's `.lastlight/` mirrors the
49
+ * overlay's on-disk layout exactly (`workflows/prompts/x.md`, `skills/<n>/SKILL.md`,
50
+ * `agent-context/*.md`), so there is one shape to learn and `lastlight fork`
51
+ * output drops straight into a repo. Only `claudeSkillRoot` differs — the
52
+ * `.claude/skills` fallback is a built-in/legacy convenience, not an overlay or
53
+ * repo surface.
54
+ */
55
+ export function makeLayer(name, rootOrWorkflowDir) {
41
56
  const root = resolve(rootOrWorkflowDir);
42
57
  const workflowRoot = join(root, "workflows");
43
58
  return {
@@ -57,8 +72,33 @@ export function configureWorkflowAssets(config = {}) {
57
72
  next.push(makeLayer("overlay", config.overlayRoot));
58
73
  layers = next;
59
74
  disabled = mergeDisabled(config.disabled);
75
+ defaultResolver = createAssetResolver(layers, disabled);
60
76
  clearWorkflowCache();
61
77
  }
78
+ /**
79
+ * The layer stack + disables the module-level facade currently resolves
80
+ * against. Exposed so a caller can compose a per-run resolver on top of them
81
+ * without reaching for the globals or re-deriving the built-in/overlay roots:
82
+ *
83
+ * createAssetResolver(
84
+ * [...getAssetLayers(), makeLayer("repo", join(repoRoot, ".lastlight"))],
85
+ * getDisabledAssets(),
86
+ * { agentContextAdditiveOnly: true },
87
+ * )
88
+ */
89
+ export function getAssetLayers() {
90
+ return layers;
91
+ }
92
+ /** Copy of the effective disables (see `getAssetLayers`); safe to hand out. */
93
+ export function getDisabledAssets() {
94
+ return {
95
+ workflows: [...disabled.workflows],
96
+ crons: [...disabled.crons],
97
+ prompts: [...disabled.prompts],
98
+ skills: [...disabled.skills],
99
+ agentContext: [...disabled.agentContext],
100
+ };
101
+ }
62
102
  /** Legacy wrapper used by older tests to point directly at a workflow directory. */
63
103
  export function setWorkflowDir(dir) {
64
104
  const workflowRoot = resolve(dir);
@@ -71,6 +111,7 @@ export function setWorkflowDir(dir) {
71
111
  agentContextRoot: resolve("agent-context"),
72
112
  }];
73
113
  disabled = emptyDisabled();
114
+ defaultResolver = createAssetResolver(layers, disabled);
74
115
  clearWorkflowCache();
75
116
  }
76
117
  export function clearWorkflowCache() {
@@ -109,6 +150,13 @@ function populateCache() {
109
150
  return;
110
151
  cachePopulated = true;
111
152
  for (const layer of layers) {
153
+ // A repo layer contributes ASSETS ONLY — a managed repo may never define a
154
+ // workflow or a cron (that would let any repo we watch schedule arbitrary
155
+ // agent runs on the operator's instance). Repo layers are only ever passed
156
+ // to `createAssetResolver`, never into this global stack, but the guard
157
+ // makes the invariant structural instead of merely conventional.
158
+ if (layer.name === "repo")
159
+ continue;
112
160
  const namesInLayer = new Set();
113
161
  const cronNamesInLayer = new Set();
114
162
  for (const file of workflowFiles(layer.workflowRoot)) {
@@ -198,10 +246,6 @@ export function loadWorkflowYamlRaw(name) {
198
246
  throw new Error(`Workflow file not found for logical name: ${name}`);
199
247
  return readFileSync(origin.filePath, "utf-8");
200
248
  }
201
- export function loadPromptTemplate(relativePath) {
202
- const filePath = resolvePromptPath(relativePath);
203
- return readFileSync(filePath, "utf-8");
204
- }
205
249
  function assertSafeRelative(relativePath, kind) {
206
250
  if (!relativePath || relativePath.length === 0)
207
251
  throw new Error(`${kind} path is empty`);
@@ -214,92 +258,163 @@ function isInside(filePath, root) {
214
258
  const f = resolve(filePath);
215
259
  return f === r || f.startsWith(r + "/");
216
260
  }
217
- export function resolvePromptPath(relativePath) {
218
- assertSafeRelative(relativePath, "Prompt");
219
- if (disabled.prompts.includes(relativePath) || disabled.prompts.includes(basename(relativePath))) {
220
- throw new Error(`Prompt template is disabled: ${relativePath}`);
221
- }
222
- for (const layer of [...layers].reverse()) {
223
- const filePath = resolve(layer.workflowRoot, relativePath);
224
- if (!isInside(filePath, layer.workflowRoot))
225
- throw new Error(`Prompt path escapes workflow directory: ${relativePath}`);
226
- if (existsSync(filePath))
227
- return filePath;
228
- }
229
- throw new Error(`Prompt template not found: ${relativePath}`);
230
- }
231
- export function loadSkillRaw(name) {
232
- if (!/^[a-zA-Z0-9_-]+$/.test(name))
233
- throw new Error(`Invalid skill name: ${name}`);
234
- if (disabled.skills.includes(name))
235
- throw new Error(`Skill is disabled: ${name}`);
236
- for (const layer of [...layers].reverse()) {
237
- const bases = [layer.skillRoot, layer.claudeSkillRoot].filter(Boolean);
238
- for (const base of bases) {
239
- const filePath = join(base, name, "SKILL.md");
240
- if (!isInside(filePath, base))
241
- throw new Error(`Skill path escapes skill directory: ${name}`);
261
+ /**
262
+ * Build a resolver over an explicit layer stack. See `getAssetLayers()` for the
263
+ * composition idiom. The `layers`/`disabled` parameters deliberately shadow the
264
+ * module-level globals of the same name: everything inside this closure reads
265
+ * the captured stack, and the shadowing makes it impossible for a body in here
266
+ * to reach the globals by accident.
267
+ */
268
+ export function createAssetResolver(layers, disabled, options = {}) {
269
+ const additiveOnly = options.agentContextAdditiveOnly === true;
270
+ let warnings = [];
271
+ function resolvePromptPath(relativePath) {
272
+ assertSafeRelative(relativePath, "Prompt");
273
+ if (disabled.prompts.includes(relativePath) || disabled.prompts.includes(basename(relativePath))) {
274
+ throw new Error(`Prompt template is disabled: ${relativePath}`);
275
+ }
276
+ for (const layer of [...layers].reverse()) {
277
+ const filePath = resolve(layer.workflowRoot, relativePath);
278
+ if (!isInside(filePath, layer.workflowRoot))
279
+ throw new Error(`Prompt path escapes workflow directory: ${relativePath}`);
242
280
  if (existsSync(filePath))
243
- return readFileSync(filePath, "utf-8");
281
+ return filePath;
244
282
  }
283
+ throw new Error(`Prompt template not found: ${relativePath}`);
245
284
  }
246
- throw new Error(`Skill not found: skills/${name}/SKILL.md`);
247
- }
248
- export function loadSkillInstructions(name) {
249
- return loadSkillRaw(name);
250
- }
251
- /**
252
- * Resolve a list of skill names to their absolute directory paths.
253
- * Each returned path is the skill folder root (containing `SKILL.md`
254
- * plus any `scripts/`, `references/`, `assets/`) — not the .md file.
255
- * The sandbox staging step in agent-executor uses these to symlink or
256
- * copy the whole folder into the phase's bundle at
257
- * `<workspaceRoot>/.lastlight-skills/<phase>/<name>/`.
258
- * Layer-aware: overlay skills win over built-ins (same precedence and
259
- * disabled-skill handling as `loadSkillRaw`).
260
- */
261
- export function resolveSkillPaths(names) {
262
- return names.map((name) => {
263
- if (!/^[a-zA-Z0-9_-]+$/.test(name)) {
285
+ function loadPromptTemplate(relativePath) {
286
+ const filePath = resolvePromptPath(relativePath);
287
+ return readFileSync(filePath, "utf-8");
288
+ }
289
+ function loadSkillRaw(name) {
290
+ if (!/^[a-zA-Z0-9_-]+$/.test(name))
264
291
  throw new Error(`Invalid skill name: ${name}`);
265
- }
266
- if (disabled.skills.includes(name)) {
292
+ if (disabled.skills.includes(name))
267
293
  throw new Error(`Skill is disabled: ${name}`);
268
- }
269
294
  for (const layer of [...layers].reverse()) {
270
295
  const bases = [layer.skillRoot, layer.claudeSkillRoot].filter(Boolean);
271
296
  for (const base of bases) {
272
- const dir = join(base, name);
273
- const skillFile = join(dir, "SKILL.md");
274
- if (!isInside(skillFile, base))
297
+ const filePath = join(base, name, "SKILL.md");
298
+ if (!isInside(filePath, base))
275
299
  throw new Error(`Skill path escapes skill directory: ${name}`);
276
- if (existsSync(skillFile))
277
- return dir;
300
+ if (existsSync(filePath))
301
+ return readFileSync(filePath, "utf-8");
278
302
  }
279
303
  }
280
304
  throw new Error(`Skill not found: skills/${name}/SKILL.md`);
281
- });
282
- }
283
- /**
284
- * Concatenate resolved agent-context/*.md with overlay filename replacement.
285
- * Later layers replace earlier files by basename; disabled.agentContext removes
286
- * either exact filenames (rules.md) or stem names (rules).
287
- */
288
- export function loadAgentContext() {
289
- const files = new Map();
290
- for (const layer of layers) {
291
- if (!existingDir(layer.agentContextRoot))
292
- continue;
293
- for (const f of readdirSync(layer.agentContextRoot).filter((n) => n.endsWith(".md")).sort()) {
294
- files.set(f, join(layer.agentContextRoot, f));
305
+ }
306
+ function loadSkillInstructions(name) {
307
+ return loadSkillRaw(name);
308
+ }
309
+ /**
310
+ * Resolve a list of skill names to their absolute directory paths.
311
+ * Each returned path is the skill folder root (containing `SKILL.md`
312
+ * plus any `scripts/`, `references/`, `assets/`) — not the .md file.
313
+ * The sandbox staging step in agent-executor uses these to symlink or
314
+ * copy the whole folder into the phase's bundle at
315
+ * `<workspaceRoot>/.lastlight-skills/<phase>/<name>/`.
316
+ * Layer-aware: later layers win over earlier ones (same precedence and
317
+ * disabled-skill handling as `loadSkillRaw`).
318
+ */
319
+ function resolveSkillPaths(names) {
320
+ return names.map((name) => {
321
+ if (!/^[a-zA-Z0-9_-]+$/.test(name)) {
322
+ throw new Error(`Invalid skill name: ${name}`);
323
+ }
324
+ if (disabled.skills.includes(name)) {
325
+ throw new Error(`Skill is disabled: ${name}`);
326
+ }
327
+ for (const layer of [...layers].reverse()) {
328
+ const bases = [layer.skillRoot, layer.claudeSkillRoot].filter(Boolean);
329
+ for (const base of bases) {
330
+ const dir = join(base, name);
331
+ const skillFile = join(dir, "SKILL.md");
332
+ if (!isInside(skillFile, base))
333
+ throw new Error(`Skill path escapes skill directory: ${name}`);
334
+ if (existsSync(skillFile))
335
+ return dir;
336
+ }
337
+ }
338
+ throw new Error(`Skill not found: skills/${name}/SKILL.md`);
339
+ });
340
+ }
341
+ /**
342
+ * Concatenate resolved agent-context/*.md with overlay filename replacement.
343
+ * Later layers replace earlier files by basename; disabled.agentContext removes
344
+ * either exact filenames (rules.md) or stem names (rules).
345
+ */
346
+ function loadAgentContext() {
347
+ const files = new Map();
348
+ const drops = [];
349
+ for (const layer of layers) {
350
+ if (!existingDir(layer.agentContextRoot))
351
+ continue;
352
+ for (const f of readdirSync(layer.agentContextRoot).filter((n) => n.endsWith(".md")).sort()) {
353
+ const filePath = join(layer.agentContextRoot, f);
354
+ // Additive-only: a managed repo may ADD context, never REPLACE what an
355
+ // operator-owned layer already provides — otherwise committing a file
356
+ // called `security.md` / `rules.md` would neuter the operator's rules
357
+ // for every run against that repo. Non-repo layers keep last-wins.
358
+ if (additiveOnly && layer.name === "repo" && files.has(f)) {
359
+ drops.push({
360
+ kind: "agent-context-dropped",
361
+ name: f,
362
+ filePath,
363
+ layer: layer.name,
364
+ message: `Ignored repo agent-context file "${f}": a higher-trust layer already provides it (repo context is additive only).`,
365
+ });
366
+ continue;
367
+ }
368
+ files.set(f, filePath);
369
+ }
295
370
  }
371
+ const disabledNames = new Set(disabled.agentContext.flatMap((n) => [n, n.endsWith(".md") ? n.slice(0, -3) : `${n}.md`]));
372
+ // Recomputed per call (not appended) — `warnings` is a snapshot of the last
373
+ // load. A drop of a name that's disabled anyway isn't worth reporting.
374
+ warnings = drops.filter(({ name }) => !disabledNames.has(name) && !disabledNames.has(name.slice(0, -3)));
375
+ return Array.from(files.entries())
376
+ .filter(([name]) => !disabledNames.has(name) && !disabledNames.has(name.slice(0, -3)))
377
+ .sort(([a], [b]) => a.localeCompare(b))
378
+ .map(([, filePath]) => readFileSync(filePath, "utf-8"))
379
+ .join("\n\n---\n\n");
296
380
  }
297
- const disabledNames = new Set(disabled.agentContext.flatMap((n) => [n, n.endsWith(".md") ? n.slice(0, -3) : `${n}.md`]));
298
- return Array.from(files.entries())
299
- .filter(([name]) => !disabledNames.has(name) && !disabledNames.has(name.slice(0, -3)))
300
- .sort(([a], [b]) => a.localeCompare(b))
301
- .map(([, filePath]) => readFileSync(filePath, "utf-8"))
302
- .join("\n\n---\n\n");
381
+ return {
382
+ resolvePromptPath,
383
+ loadPromptTemplate,
384
+ loadSkillRaw,
385
+ loadSkillInstructions,
386
+ resolveSkillPaths,
387
+ loadAgentContext,
388
+ // A getter, not a captured array: `loadAgentContext` REPLACES the list each
389
+ // call, so a snapshot property would go stale after the first load.
390
+ get warnings() {
391
+ return warnings;
392
+ },
393
+ };
394
+ }
395
+ // ---------------------------------------------------------------------------
396
+ // Module-level asset facade. Thin delegations to the default resolver — kept so
397
+ // every existing call site (runner, classifier, chat-skills, admin routes,
398
+ // profiles, the CLI's `fork`, the evals bootstrap) is unchanged by the
399
+ // introduction of per-run resolvers.
400
+ // ---------------------------------------------------------------------------
401
+ export function resolvePromptPath(relativePath) {
402
+ return defaultResolver.resolvePromptPath(relativePath);
403
+ }
404
+ export function loadPromptTemplate(relativePath) {
405
+ return defaultResolver.loadPromptTemplate(relativePath);
406
+ }
407
+ export function loadSkillRaw(name) {
408
+ return defaultResolver.loadSkillRaw(name);
409
+ }
410
+ export function loadSkillInstructions(name) {
411
+ return defaultResolver.loadSkillInstructions(name);
412
+ }
413
+ export function resolveSkillPaths(names) {
414
+ return defaultResolver.resolveSkillPaths(names);
415
+ }
416
+ export function loadAgentContext() {
417
+ return defaultResolver.loadAgentContext();
303
418
  }
304
419
  // Route targets that are IN-PROCESS handlers, not workflow YAML files — so
305
420
  // they're allowed even though `agentCache` (which only holds workflows) can't
@@ -315,6 +430,57 @@ const INTERNAL_ROUTE_TARGETS = {
315
430
  "slack.chat": new Set(["chat"]),
316
431
  "slack.explore_reply": new Set(["explore-reply"]),
317
432
  };
433
+ /**
434
+ * Route keys whose target MUST be a PR-scoped workflow (`pr_scoped: true`).
435
+ *
436
+ * A list of ROUTE KEYS, not of workflow names — that distinction is the whole
437
+ * point. The router's branches are code and cannot be reconfigured; the
438
+ * workflow each one dispatches can be. Remapping one of these to a workflow
439
+ * that does not declare `pr_scoped` drops the PR run lock, the per-head-SHA
440
+ * dedup and escalation for it, and every one of those is a REFUSAL, so nothing
441
+ * looks wrong until two agents push the same branch (issue #256).
442
+ *
443
+ * `pr_comment` is deliberately absent: it routes to a conversational workflow
444
+ * that is not, and should not be, PR-scoped.
445
+ */
446
+ const PR_SCOPED_ROUTE_KEYS = new Set([
447
+ "github.pr_opened",
448
+ "github.pr_synchronize",
449
+ "github.pr_reopened",
450
+ "github.pr_checks_settled",
451
+ "github.pr_labeled",
452
+ "github.pr_review_requested",
453
+ "github.pr_fix",
454
+ "github.pr_review",
455
+ "slack.review",
456
+ ]);
457
+ /**
458
+ * Warn — never throw — when a configured route that dispatches against a pull
459
+ * request targets a workflow that does not declare `pr_scoped: true`.
460
+ *
461
+ * A warning because the operator may have a reason: a route pointed at a
462
+ * genuinely non-PR workflow is a choice, and failing boot over it would be
463
+ * worse than the silence it replaces. What matters is that the choice is
464
+ * VISIBLE, which it was not.
465
+ */
466
+ function warnUnscopedPrRoutes(routes) {
467
+ if (!routes)
468
+ return;
469
+ for (const [surface, values] of Object.entries(routes)) {
470
+ for (const [routeName, target] of Object.entries(values)) {
471
+ const routeKey = `${surface}.${routeName}`;
472
+ if (!PR_SCOPED_ROUTE_KEYS.has(routeKey))
473
+ continue;
474
+ const def = agentCache.get(target);
475
+ if (!def || def.pr_scoped === true)
476
+ continue;
477
+ console.warn(`[workflows] Route ${routeKey} targets "${target}", which does not declare ` +
478
+ `\`pr_scoped: true\`. The PR run lock, the per-head-SHA dedup and escalation ` +
479
+ `will not apply to it — add \`pr_scoped: true\` to its workflow YAML if that ` +
480
+ `is not what you intended.`);
481
+ }
482
+ }
483
+ }
318
484
  function validateRouteTargets(routes) {
319
485
  if (!routes)
320
486
  return;
@@ -419,5 +585,6 @@ export function validateAssets(routes) {
419
585
  }
420
586
  }
421
587
  validateRouteTargets(routes);
588
+ warnUnscopedPrRoutes(routes);
422
589
  }
423
590
  //# sourceMappingURL=workflow-loader.js.map