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.
- package/dist/config-types.d.ts +136 -0
- package/dist/config-types.js +118 -1
- package/dist/config-types.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/repo-config-schema.d.ts +328 -0
- package/dist/repo-config-schema.js +957 -0
- package/dist/repo-config-schema.js.map +1 -0
- package/dist/workflow-loader.d.ts +104 -16
- package/dist/workflow-loader.js +244 -77
- package/dist/workflow-loader.js.map +1 -1
- package/package.json +6 -2
|
@@ -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
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
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
|
|
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
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
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;
|
package/dist/workflow-loader.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|
|
281
|
+
return filePath;
|
|
244
282
|
}
|
|
283
|
+
throw new Error(`Prompt template not found: ${relativePath}`);
|
|
245
284
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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
|
|
273
|
-
|
|
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(
|
|
277
|
-
return
|
|
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
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
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
|