@enterprise-skills/orchestrator 3.2.0 → 3.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/compliance/fedramp.yaml +30 -0
- package/compliance/gdpr.yaml +33 -0
- package/compliance/hipaa.yaml +29 -0
- package/compliance/iso27001.yaml +29 -0
- package/compliance/pcidss.yaml +24 -0
- package/compliance/soc2.yaml +33 -0
- package/dist/__tests__/compliance.test.d.ts +2 -0
- package/dist/__tests__/compliance.test.d.ts.map +1 -0
- package/dist/__tests__/compliance.test.js +148 -0
- package/dist/__tests__/compliance.test.js.map +1 -0
- package/dist/__tests__/preflight-resolver.test.d.ts +2 -0
- package/dist/__tests__/preflight-resolver.test.d.ts.map +1 -0
- package/dist/__tests__/preflight-resolver.test.js +182 -0
- package/dist/__tests__/preflight-resolver.test.js.map +1 -0
- package/dist/__tests__/workflow-library.test.d.ts +2 -0
- package/dist/__tests__/workflow-library.test.d.ts.map +1 -0
- package/dist/__tests__/workflow-library.test.js +185 -0
- package/dist/__tests__/workflow-library.test.js.map +1 -0
- package/dist/compliance.d.ts +51 -0
- package/dist/compliance.d.ts.map +1 -0
- package/dist/compliance.js +160 -0
- package/dist/compliance.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +152 -1
- package/dist/index.js.map +1 -1
- package/dist/preflight-resolver.d.ts +58 -0
- package/dist/preflight-resolver.d.ts.map +1 -0
- package/dist/preflight-resolver.js +345 -0
- package/dist/preflight-resolver.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow-library.d.ts +14 -0
- package/dist/workflow-library.d.ts.map +1 -0
- package/dist/workflow-library.js +94 -0
- package/dist/workflow-library.js.map +1 -0
- package/package.json +4 -2
- package/workflows/beginner-launchpad.yaml +33 -0
- package/workflows/enterprise-control-plane.yaml +38 -0
- package/workflows/growth-engine.yaml +33 -0
- package/workflows/health-check.yaml +28 -0
- package/workflows/incident-triage.yaml +34 -0
- package/workflows/post-refactor.yaml +27 -0
- package/workflows/product-launch.yaml +54 -0
- package/workflows/release-readiness.yaml +62 -0
- package/workflows/security-assessment.yaml +60 -0
- package/workflows/sprint-close.yaml +30 -0
- package/workflows/ux-quality-review.yaml +33 -0
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
36
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.BUILTIN_TRIGGERS = exports.runHardeningSensors = exports.OrchestrationAdvisor = exports.AuditLogger = exports.PolicyEnforcer = exports.SignalRouter = exports.DagResolver = exports.StateMachine = exports.Orchestrator = void 0;
|
|
39
|
+
exports.BUILTIN_TRIGGERS = exports.runHardeningSensors = exports.PreflightResolver = exports.buildComplianceReport = exports.evaluateFramework = exports.listFrameworks = exports.detectControls = exports.WorkflowLibrary = exports.OrchestrationAdvisor = exports.AuditLogger = exports.PolicyEnforcer = exports.SignalRouter = exports.DagResolver = exports.StateMachine = exports.Orchestrator = void 0;
|
|
40
40
|
const path = __importStar(require("path"));
|
|
41
41
|
const fs = __importStar(require("fs"));
|
|
42
42
|
const state_machine_1 = require("./state-machine");
|
|
@@ -45,6 +45,8 @@ const signal_router_1 = require("./signal-router");
|
|
|
45
45
|
const policy_enforcer_1 = require("./policy-enforcer");
|
|
46
46
|
const audit_logger_1 = require("./audit-logger");
|
|
47
47
|
const advisor_1 = require("./advisor");
|
|
48
|
+
const workflow_library_1 = require("./workflow-library");
|
|
49
|
+
const preflight_resolver_1 = require("./preflight-resolver");
|
|
48
50
|
class Orchestrator {
|
|
49
51
|
state;
|
|
50
52
|
dag;
|
|
@@ -52,6 +54,7 @@ class Orchestrator {
|
|
|
52
54
|
policy;
|
|
53
55
|
audit;
|
|
54
56
|
advisor;
|
|
57
|
+
workflows;
|
|
55
58
|
config;
|
|
56
59
|
constructor(options) {
|
|
57
60
|
const stateDir = path.join(options.projectRoot, '.project-ai');
|
|
@@ -69,6 +72,7 @@ class Orchestrator {
|
|
|
69
72
|
this.policy = new policy_enforcer_1.PolicyEnforcer(options.policyPath);
|
|
70
73
|
this.audit = new audit_logger_1.AuditLogger(auditLogPath);
|
|
71
74
|
this.advisor = advisor_1.OrchestrationAdvisor.fromRegistry(path.join(options.projectRoot, 'registry', 'canonical-skills.yaml'));
|
|
75
|
+
this.workflows = new workflow_library_1.WorkflowLibrary(options.projectRoot);
|
|
72
76
|
}
|
|
73
77
|
startSession(project, branch) {
|
|
74
78
|
const ctx = this.state.initSession(project, branch);
|
|
@@ -182,6 +186,144 @@ class Orchestrator {
|
|
|
182
186
|
}
|
|
183
187
|
return updated;
|
|
184
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* pipeline/PREFLIGHT_RESOLVER_SPEC.md Steps 1-7: deterministic, file-backed
|
|
191
|
+
* resolution of task type, model routing, skill availability, doc load
|
|
192
|
+
* order, and the new-skill gate. Audited as a policy check.
|
|
193
|
+
*/
|
|
194
|
+
preflight(request, options = {}) {
|
|
195
|
+
const resolution = new preflight_resolver_1.PreflightResolver(this.config.project_root).resolve(request, options);
|
|
196
|
+
this.audit.log(this.config.session_id, 'policy_check', {
|
|
197
|
+
action: 'preflight_resolved',
|
|
198
|
+
request,
|
|
199
|
+
task_type: resolution.task_type,
|
|
200
|
+
match_phase: resolution.match_phase,
|
|
201
|
+
matches: resolution.matches.map(m => m.skill_id),
|
|
202
|
+
model: resolution.model,
|
|
203
|
+
authority_pack: resolution.authority_pack,
|
|
204
|
+
warnings: resolution.warnings,
|
|
205
|
+
});
|
|
206
|
+
return resolution;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Agent brief: the advisor/gate state an IDE agent should consume at turn
|
|
210
|
+
* start — last task contract, pending signals, and the active workflow's
|
|
211
|
+
* ready steps (gates auto-resolved first). Written to
|
|
212
|
+
* .project-ai/skill-outputs/_agent-brief.md by the CLI so hooks can inject
|
|
213
|
+
* it and agents can read it deterministically.
|
|
214
|
+
*/
|
|
215
|
+
composeBrief() {
|
|
216
|
+
const contract = this.state.readTaskContract();
|
|
217
|
+
const signals = this.state.getPendingSignals();
|
|
218
|
+
let workflow = null;
|
|
219
|
+
const wfState = this.state.getWorkflowState();
|
|
220
|
+
if (wfState) {
|
|
221
|
+
let ready = [];
|
|
222
|
+
if (wfState.status === 'running') {
|
|
223
|
+
try {
|
|
224
|
+
const def = this.workflows.load(wfState.workflow);
|
|
225
|
+
ready = this.advanceWorkflow(def).actionable;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// Definition not resolvable (e.g. one-off --file workflow): report
|
|
229
|
+
// state without ready-step resolution rather than failing the brief.
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const latest = this.state.getWorkflowState();
|
|
233
|
+
workflow = { name: wfState.workflow, status: latest?.status ?? wfState.status, ready };
|
|
234
|
+
}
|
|
235
|
+
return { contract, signals, workflow };
|
|
236
|
+
}
|
|
237
|
+
listWorkflows() {
|
|
238
|
+
return this.workflows.list();
|
|
239
|
+
}
|
|
240
|
+
loadWorkflow(nameOrFile) {
|
|
241
|
+
return this.workflows.load(nameOrFile);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Advance the active workflow: auto-resolve every ready gate and conditional
|
|
245
|
+
* step (recording decisions + audit events), then return the actionable
|
|
246
|
+
* sequential/parallel steps whose dependencies are satisfied. Gate failures
|
|
247
|
+
* with fail_action STOP halt the workflow (`stopped_at_gate`) — the
|
|
248
|
+
* governance stop-condition, never bypassed. A failed gate with a non-STOP
|
|
249
|
+
* fail_action records the decision and marks the gate `skipped` so the DAG
|
|
250
|
+
* can continue; the branch target is advisory for the executing agent.
|
|
251
|
+
*/
|
|
252
|
+
advanceWorkflow(workflow) {
|
|
253
|
+
const resolved = [];
|
|
254
|
+
// Loop: resolving a gate can unblock further gates/conditionals.
|
|
255
|
+
for (;;) {
|
|
256
|
+
const state = this.state.getWorkflowState();
|
|
257
|
+
if (!state || state.status !== 'running') {
|
|
258
|
+
return { state, actionable: [], resolved };
|
|
259
|
+
}
|
|
260
|
+
const ready = this.dag.getReadySteps(workflow, state);
|
|
261
|
+
const auto = ready.find(s => s.type === 'gate' || s.type === 'conditional');
|
|
262
|
+
if (!auto) {
|
|
263
|
+
return {
|
|
264
|
+
state,
|
|
265
|
+
actionable: ready.map(s => ({ id: s.id, type: s.type, skill: s.skill, skills: s.skills })),
|
|
266
|
+
resolved,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
const getOutput = (skillId) => this.state.readSkillOutput(skillId);
|
|
270
|
+
if (auto.type === 'gate') {
|
|
271
|
+
const decision = this.dag.evaluateGate(auto, getOutput);
|
|
272
|
+
state.gate_decisions.push(decision);
|
|
273
|
+
this.audit.log(this.config.session_id, 'gate_result', {
|
|
274
|
+
workflow: state.workflow,
|
|
275
|
+
gate: auto.id,
|
|
276
|
+
result: decision.result,
|
|
277
|
+
reason: decision.reason,
|
|
278
|
+
}, undefined, state.workflow);
|
|
279
|
+
resolved.push({ id: auto.id, type: 'gate', outcome: `${decision.result}: ${decision.reason}` });
|
|
280
|
+
if (decision.result === 'pass') {
|
|
281
|
+
this.state.writeWorkflowState(this.dag.completeStep(state, auto.id, 'completed', 0, []));
|
|
282
|
+
}
|
|
283
|
+
else if (auto.fail_action === 'STOP' || !auto.fail_action) {
|
|
284
|
+
state.status = 'stopped_at_gate';
|
|
285
|
+
state.last_updated = new Date().toISOString();
|
|
286
|
+
this.state.writeWorkflowState(state);
|
|
287
|
+
this.audit.log(this.config.session_id, 'workflow_complete', {
|
|
288
|
+
workflow: state.workflow,
|
|
289
|
+
status: 'stopped_at_gate',
|
|
290
|
+
gate: auto.id,
|
|
291
|
+
reason: decision.reason,
|
|
292
|
+
}, undefined, state.workflow);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
this.state.writeWorkflowState(this.dag.completeStep(state, auto.id, 'skipped', 0, []));
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
const target = this.dag.evaluateConditional(auto, getOutput);
|
|
300
|
+
this.audit.log(this.config.session_id, 'gate_result', {
|
|
301
|
+
workflow: state.workflow,
|
|
302
|
+
conditional: auto.id,
|
|
303
|
+
branch: target ?? 'SKIP',
|
|
304
|
+
}, undefined, state.workflow);
|
|
305
|
+
resolved.push({ id: auto.id, type: 'conditional', outcome: target ?? 'SKIP' });
|
|
306
|
+
this.state.writeWorkflowState(this.dag.completeStep(state, auto.id, target ? 'completed' : 'skipped', 0, []));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
abortWorkflow(reason) {
|
|
311
|
+
const state = this.state.getWorkflowState();
|
|
312
|
+
if (!state)
|
|
313
|
+
throw new Error('No active workflow');
|
|
314
|
+
if (state.status === 'running') {
|
|
315
|
+
state.status = 'aborted';
|
|
316
|
+
state.last_updated = new Date().toISOString();
|
|
317
|
+
this.state.writeWorkflowState(state);
|
|
318
|
+
}
|
|
319
|
+
this.audit.log(this.config.session_id, 'workflow_complete', {
|
|
320
|
+
workflow: state.workflow,
|
|
321
|
+
status: state.status,
|
|
322
|
+
action: 'abort',
|
|
323
|
+
reason,
|
|
324
|
+
}, undefined, state.workflow);
|
|
325
|
+
return state;
|
|
326
|
+
}
|
|
185
327
|
adviseUserInput(request, options = {}) {
|
|
186
328
|
const session = this.state.getSessionContext();
|
|
187
329
|
const decision = this.advisor.advise({
|
|
@@ -257,6 +399,15 @@ var audit_logger_2 = require("./audit-logger");
|
|
|
257
399
|
Object.defineProperty(exports, "AuditLogger", { enumerable: true, get: function () { return audit_logger_2.AuditLogger; } });
|
|
258
400
|
var advisor_2 = require("./advisor");
|
|
259
401
|
Object.defineProperty(exports, "OrchestrationAdvisor", { enumerable: true, get: function () { return advisor_2.OrchestrationAdvisor; } });
|
|
402
|
+
var workflow_library_2 = require("./workflow-library");
|
|
403
|
+
Object.defineProperty(exports, "WorkflowLibrary", { enumerable: true, get: function () { return workflow_library_2.WorkflowLibrary; } });
|
|
404
|
+
var compliance_1 = require("./compliance");
|
|
405
|
+
Object.defineProperty(exports, "detectControls", { enumerable: true, get: function () { return compliance_1.detectControls; } });
|
|
406
|
+
Object.defineProperty(exports, "listFrameworks", { enumerable: true, get: function () { return compliance_1.listFrameworks; } });
|
|
407
|
+
Object.defineProperty(exports, "evaluateFramework", { enumerable: true, get: function () { return compliance_1.evaluateFramework; } });
|
|
408
|
+
Object.defineProperty(exports, "buildComplianceReport", { enumerable: true, get: function () { return compliance_1.buildComplianceReport; } });
|
|
409
|
+
var preflight_resolver_2 = require("./preflight-resolver");
|
|
410
|
+
Object.defineProperty(exports, "PreflightResolver", { enumerable: true, get: function () { return preflight_resolver_2.PreflightResolver; } });
|
|
260
411
|
var hardening_sensors_1 = require("./hardening-sensors");
|
|
261
412
|
Object.defineProperty(exports, "runHardeningSensors", { enumerable: true, get: function () { return hardening_sensors_1.runHardeningSensors; } });
|
|
262
413
|
var builtin_triggers_1 = require("./builtin-triggers");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type TaskType = 'strategy' | 'architecture' | 'implementation' | 'skill_creation';
|
|
2
|
+
export type DocPhase = 'session_start' | 'before_code_changes' | 'before_schema_changes' | 'before_rag_changes' | 'before_agent_changes' | 'before_alignment_changes' | 'before_skill_refinement' | 'before_promotion';
|
|
3
|
+
export interface SkillMatch {
|
|
4
|
+
skill_id: string;
|
|
5
|
+
score: number;
|
|
6
|
+
matched_via: string[];
|
|
7
|
+
active: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface DocToLoad {
|
|
10
|
+
path: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
exists: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface NewSkillGate {
|
|
15
|
+
requested: boolean;
|
|
16
|
+
allowed: boolean;
|
|
17
|
+
overlaps: string[];
|
|
18
|
+
enforcement: string;
|
|
19
|
+
note: string;
|
|
20
|
+
}
|
|
21
|
+
export interface PreflightResolution {
|
|
22
|
+
request: string;
|
|
23
|
+
task_type: TaskType;
|
|
24
|
+
authority_pack: 'loaded' | 'missing';
|
|
25
|
+
model_family: 'strategy' | 'architecture' | 'implementation';
|
|
26
|
+
model: string | null;
|
|
27
|
+
match_phase: 'exact' | 'keyword' | 'category' | 'none';
|
|
28
|
+
matches: SkillMatch[];
|
|
29
|
+
category: string | null;
|
|
30
|
+
docs: DocToLoad[];
|
|
31
|
+
new_skill: NewSkillGate | null;
|
|
32
|
+
warnings: string[];
|
|
33
|
+
}
|
|
34
|
+
export interface PreflightOptions {
|
|
35
|
+
phase?: DocPhase;
|
|
36
|
+
registryPath?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare class PreflightResolver {
|
|
39
|
+
private projectRoot;
|
|
40
|
+
constructor(projectRoot: string);
|
|
41
|
+
private stateDir;
|
|
42
|
+
private loadRegistry;
|
|
43
|
+
private loadAliasMap;
|
|
44
|
+
private loadActiveSkillIds;
|
|
45
|
+
classify(request: string): TaskType;
|
|
46
|
+
private scoreEntry;
|
|
47
|
+
/**
|
|
48
|
+
* Spec Step 4 duplicate search: skill_id / alias / trigger overlap against
|
|
49
|
+
* the subject of the creation request (the creation phrasing itself is
|
|
50
|
+
* stripped so "new"/"skill" don't produce noise). Deliberately separate
|
|
51
|
+
* from the phased matching above — the Phase-3 category fallback is a
|
|
52
|
+
* suggestion mechanism and must not veto creation, while a sub-threshold
|
|
53
|
+
* keyword score must not green-light a duplicate.
|
|
54
|
+
*/
|
|
55
|
+
private findCreationOverlaps;
|
|
56
|
+
resolve(request: string, options?: PreflightOptions): PreflightResolution;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=preflight-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight-resolver.d.ts","sourceRoot":"","sources":["../src/preflight-resolver.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AACzF,MAAM,MAAM,QAAQ,GAChB,eAAe,GACf,qBAAqB,GACrB,uBAAuB,GACvB,oBAAoB,GACpB,sBAAsB,GACtB,0BAA0B,GAC1B,yBAAyB,GACzB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,CAAC;IACpB,cAAc,EAAE,QAAQ,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,UAAU,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAC7D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACvD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAkED,qBAAa,iBAAiB;IAChB,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEvC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,kBAAkB;IAY1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAqBnC,OAAO,CAAC,UAAU;IAqClB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,mBAAmB;CAmJ9E"}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PreflightResolver = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const yaml = __importStar(require("js-yaml"));
|
|
40
|
+
// Spec Step 3 Phase 2 weights.
|
|
41
|
+
const SCORE_TRIGGER = 10;
|
|
42
|
+
const SCORE_ALIAS = 8;
|
|
43
|
+
const SCORE_DESCRIPTION_KEYWORD = 3;
|
|
44
|
+
const SCORE_CATEGORY = 2;
|
|
45
|
+
const SCORE_ACTIVATION_TAG = 5;
|
|
46
|
+
const KEYWORD_THRESHOLD = 15;
|
|
47
|
+
const TOP_MATCHES = 3;
|
|
48
|
+
// Spec Step 3 Phase 3 keyword-to-category table.
|
|
49
|
+
const CATEGORY_TABLE = [
|
|
50
|
+
{ keywords: ['security', 'auth', 'secrets', 'vulnerability'], category: 'security', candidates: ['security-audit', 'rag-audit'] },
|
|
51
|
+
{ keywords: ['test', 'coverage', 'suite', 'spec'], category: 'testing', candidates: ['test-orchestrator', 'bootstrap-testing'] },
|
|
52
|
+
{ keywords: ['deploy', 'release', 'ship', 'production'], category: 'deployment', candidates: ['pre-deploy-check', 'changelog-generator'] },
|
|
53
|
+
{ keywords: ['performance', 'slow', 'speed', 'optimize'], category: 'performance', candidates: ['performance-audit'] },
|
|
54
|
+
{ keywords: ['database', 'schema', 'migration', 'table'], category: 'database', candidates: ['db-migration-agent', 'db-explorer'] },
|
|
55
|
+
{ keywords: ['review', 'quality', 'standards', 'lint'], category: 'quality', candidates: ['code-review', 'full-stack-audit'] },
|
|
56
|
+
{ keywords: ['bug', 'error', 'broken', 'fix', 'debug'], category: 'debugging', candidates: ['bug-hunter', 'incident-response'] },
|
|
57
|
+
{ keywords: ['feature', 'build', 'implement', 'add'], category: 'building', candidates: ['feature-builder'] },
|
|
58
|
+
{ keywords: ['docs', 'document', 'api spec', 'swagger'], category: 'documentation', candidates: ['api-docs-generator', 'adr-manager', 'onboarding-guide'] },
|
|
59
|
+
{ keywords: ['compliance', 'soc', 'hipaa', 'gdpr', 'audit'], category: 'compliance', candidates: ['compliance-mapper', 'security-audit'] },
|
|
60
|
+
{ keywords: ['incident', 'outage', 'down', 'emergency'], category: 'incident', candidates: ['incident-response'] },
|
|
61
|
+
{ keywords: ['architecture', 'adr', 'decision', 'design'], category: 'architecture', candidates: ['adr-manager'] },
|
|
62
|
+
{ keywords: ['onboard', 'getting started', 'new', 'explain'], category: 'onboarding', candidates: ['onboarding-guide'] },
|
|
63
|
+
{ keywords: ['refactor', 'clean', 'reorganize', 'simplify'], category: 'refactoring', candidates: ['refactor-agent'] },
|
|
64
|
+
{ keywords: ['project', 'status', 'health', 'dashboard'], category: 'management', candidates: ['project-manager'] },
|
|
65
|
+
{ keywords: ['feedback', 'improve', 'learn', 'refinement'], category: 'learning', candidates: ['skill-learner'] },
|
|
66
|
+
{ keywords: ['ai', 'agent', 'rag', 'alignment', 'model'], category: 'ai-governance', candidates: ['rag-audit', 'agentic-audit', 'alignment-audit'] },
|
|
67
|
+
];
|
|
68
|
+
function loadYamlFile(filePath) {
|
|
69
|
+
try {
|
|
70
|
+
if (!fs.existsSync(filePath))
|
|
71
|
+
return null;
|
|
72
|
+
return yaml.load(fs.readFileSync(filePath, 'utf-8'));
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function tokenize(request) {
|
|
79
|
+
return request.toLowerCase().split(/[^a-z0-9-]+/).filter(t => t.length > 3);
|
|
80
|
+
}
|
|
81
|
+
// Word-boundary containment without dynamic RegExp construction (registry
|
|
82
|
+
// values are semi-trusted, but security/detect-unsafe-regex is right that
|
|
83
|
+
// building patterns from data is the wrong tool here).
|
|
84
|
+
function containsWord(text, word) {
|
|
85
|
+
const needle = word.toLowerCase();
|
|
86
|
+
if (needle.length === 0)
|
|
87
|
+
return false;
|
|
88
|
+
const isWordChar = (c) => c !== undefined && /[a-z0-9-]/.test(c);
|
|
89
|
+
let from = 0;
|
|
90
|
+
for (;;) {
|
|
91
|
+
const idx = text.indexOf(needle, from);
|
|
92
|
+
if (idx === -1)
|
|
93
|
+
return false;
|
|
94
|
+
if (!isWordChar(text[idx - 1]) && !isWordChar(text[idx + needle.length]))
|
|
95
|
+
return true;
|
|
96
|
+
from = idx + 1;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
class PreflightResolver {
|
|
100
|
+
projectRoot;
|
|
101
|
+
constructor(projectRoot) {
|
|
102
|
+
this.projectRoot = projectRoot;
|
|
103
|
+
}
|
|
104
|
+
stateDir() {
|
|
105
|
+
return path.join(this.projectRoot, '.project-ai');
|
|
106
|
+
}
|
|
107
|
+
loadRegistry(explicit) {
|
|
108
|
+
const candidates = [
|
|
109
|
+
explicit,
|
|
110
|
+
path.join(this.projectRoot, 'registry', 'canonical-skills.yaml'),
|
|
111
|
+
path.join(this.stateDir(), 'SKILL_REGISTRY_SNAPSHOT.yaml'),
|
|
112
|
+
].filter((p) => Boolean(p));
|
|
113
|
+
for (const candidate of candidates) {
|
|
114
|
+
const parsed = loadYamlFile(candidate);
|
|
115
|
+
if (parsed?.skills && Array.isArray(parsed.skills)) {
|
|
116
|
+
return { entries: parsed.skills, found: true };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return { entries: [], found: false };
|
|
120
|
+
}
|
|
121
|
+
loadAliasMap() {
|
|
122
|
+
const parsed = loadYamlFile(path.join(this.projectRoot, 'registry', 'skill-aliases.yaml'));
|
|
123
|
+
return parsed?.aliases ?? {};
|
|
124
|
+
}
|
|
125
|
+
loadActiveSkillIds() {
|
|
126
|
+
const parsed = loadYamlFile(path.join(this.stateDir(), 'ACTIVE_SKILLS.yaml'));
|
|
127
|
+
if (!parsed?.active)
|
|
128
|
+
return null;
|
|
129
|
+
return new Set(parsed.active
|
|
130
|
+
.filter(item => item.reason !== 'not_applicable')
|
|
131
|
+
.map(item => item.skill_id));
|
|
132
|
+
}
|
|
133
|
+
classify(request) {
|
|
134
|
+
const text = request.toLowerCase().replace(/\s+/g, ' ');
|
|
135
|
+
// "create/add/... [a] [new] skill" — token scan keeps
|
|
136
|
+
// security/detect-unsafe-regex quiet (no optional-group regex).
|
|
137
|
+
const tokens = text.split(' ');
|
|
138
|
+
const verbs = ['create', 'add', 'build', 'write', 'make'];
|
|
139
|
+
const skillIdx = tokens.findIndex(t => t === 'skill' || t === 'skills');
|
|
140
|
+
const verbBeforeSkill = skillIdx > 0 &&
|
|
141
|
+
tokens.slice(Math.max(0, skillIdx - 3), skillIdx).some(t => verbs.includes(t));
|
|
142
|
+
if (verbBeforeSkill || text.includes('skill for ')) {
|
|
143
|
+
return 'skill_creation';
|
|
144
|
+
}
|
|
145
|
+
if (/^should\s|\bshould we\b|\bstrategy\b|\broadmap\b|\bwhat .* next\b|\bhow should .* evolve\b/.test(text)) {
|
|
146
|
+
return 'strategy';
|
|
147
|
+
}
|
|
148
|
+
if (/\bdesign\b|\bschema\b|\badr\b|\barchitecture\b|\brestructure\b|\bplan the\b/.test(text)) {
|
|
149
|
+
return 'architecture';
|
|
150
|
+
}
|
|
151
|
+
return 'implementation';
|
|
152
|
+
}
|
|
153
|
+
scoreEntry(entry, request, tokens) {
|
|
154
|
+
const text = request.toLowerCase();
|
|
155
|
+
let score = 0;
|
|
156
|
+
const via = [];
|
|
157
|
+
for (const trigger of entry.trigger_phrases ?? []) {
|
|
158
|
+
if (text.includes(trigger.toLowerCase())) {
|
|
159
|
+
score += SCORE_TRIGGER;
|
|
160
|
+
via.push(`trigger:"${trigger}"`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
for (const alias of entry.aliases ?? []) {
|
|
164
|
+
if (containsWord(text, alias)) {
|
|
165
|
+
score += SCORE_ALIAS;
|
|
166
|
+
via.push(`alias:${alias}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const description = (entry.description ?? '').toLowerCase();
|
|
170
|
+
for (const token of tokens) {
|
|
171
|
+
if (description.includes(token)) {
|
|
172
|
+
score += SCORE_DESCRIPTION_KEYWORD;
|
|
173
|
+
via.push(`desc:${token}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (entry.category && tokens.includes(entry.category.toLowerCase())) {
|
|
177
|
+
score += SCORE_CATEGORY;
|
|
178
|
+
via.push(`category:${entry.category}`);
|
|
179
|
+
}
|
|
180
|
+
for (const tag of entry.activation_tags ?? []) {
|
|
181
|
+
if (tokens.includes(tag.toLowerCase())) {
|
|
182
|
+
score += SCORE_ACTIVATION_TAG;
|
|
183
|
+
via.push(`tag:${tag}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return { score, via };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Spec Step 4 duplicate search: skill_id / alias / trigger overlap against
|
|
190
|
+
* the subject of the creation request (the creation phrasing itself is
|
|
191
|
+
* stripped so "new"/"skill" don't produce noise). Deliberately separate
|
|
192
|
+
* from the phased matching above — the Phase-3 category fallback is a
|
|
193
|
+
* suggestion mechanism and must not veto creation, while a sub-threshold
|
|
194
|
+
* keyword score must not green-light a duplicate.
|
|
195
|
+
*/
|
|
196
|
+
findCreationOverlaps(request, entries) {
|
|
197
|
+
const subject = request
|
|
198
|
+
.toLowerCase()
|
|
199
|
+
.replace(/\b(create|add|build|write|make|a|an|new|skill|skills|for|that|which|to)\b/g, ' ');
|
|
200
|
+
const subjectTokens = tokenize(subject);
|
|
201
|
+
if (subjectTokens.length === 0)
|
|
202
|
+
return [];
|
|
203
|
+
const overlaps = [];
|
|
204
|
+
for (const entry of entries) {
|
|
205
|
+
const idTokens = entry.skill_id.toLowerCase().split('-');
|
|
206
|
+
const aliasTokens = (entry.aliases ?? []).flatMap(a => a.toLowerCase().split(/[\s-]+/));
|
|
207
|
+
const idHit = subjectTokens.some(t => idTokens.some(idTok => idTok.length > 3 && (t.startsWith(idTok) || idTok.startsWith(t))));
|
|
208
|
+
const aliasHit = subjectTokens.some(t => aliasTokens.includes(t));
|
|
209
|
+
const triggerHit = (entry.trigger_phrases ?? []).some(p => subject.includes(p.toLowerCase()));
|
|
210
|
+
if (idHit || aliasHit || triggerHit)
|
|
211
|
+
overlaps.push(entry.skill_id);
|
|
212
|
+
}
|
|
213
|
+
return overlaps;
|
|
214
|
+
}
|
|
215
|
+
resolve(request, options = {}) {
|
|
216
|
+
const warnings = [];
|
|
217
|
+
const tokens = tokenize(request);
|
|
218
|
+
const text = request.toLowerCase();
|
|
219
|
+
// Step 1 — authority pack (fall back to full activation when missing).
|
|
220
|
+
const activeIds = this.loadActiveSkillIds();
|
|
221
|
+
const authorityPack = activeIds ? 'loaded' : 'missing';
|
|
222
|
+
if (!activeIds) {
|
|
223
|
+
warnings.push('Authority pack missing - falling back to full activation (all skills considered active).');
|
|
224
|
+
}
|
|
225
|
+
// Step 2 — task classification.
|
|
226
|
+
const taskType = this.classify(request);
|
|
227
|
+
// Step 3 — skill availability.
|
|
228
|
+
const { entries, found: registryFound } = this.loadRegistry(options.registryPath);
|
|
229
|
+
if (!registryFound) {
|
|
230
|
+
warnings.push('Registry snapshot missing - cannot score skills; duplicate risk unchecked.');
|
|
231
|
+
}
|
|
232
|
+
const aliasMap = this.loadAliasMap();
|
|
233
|
+
const isActive = (id) => (activeIds ? activeIds.has(id) : true);
|
|
234
|
+
let matchPhase = 'none';
|
|
235
|
+
let matches = [];
|
|
236
|
+
let category = null;
|
|
237
|
+
// Phase 1: exact skill_id or alias-map hit.
|
|
238
|
+
const exact = entries.filter(e => containsWord(text, e.skill_id));
|
|
239
|
+
const aliasHits = Object.entries(aliasMap)
|
|
240
|
+
.filter(([alias]) => containsWord(text, alias))
|
|
241
|
+
.map(([alias, id]) => ({ alias, id }));
|
|
242
|
+
if (exact.length > 0 || aliasHits.length > 0) {
|
|
243
|
+
matchPhase = 'exact';
|
|
244
|
+
const seen = new Set();
|
|
245
|
+
for (const e of exact) {
|
|
246
|
+
seen.add(e.skill_id);
|
|
247
|
+
matches.push({ skill_id: e.skill_id, score: 100, matched_via: ['exact:skill_id'], active: isActive(e.skill_id) });
|
|
248
|
+
}
|
|
249
|
+
for (const hit of aliasHits) {
|
|
250
|
+
if (seen.has(hit.id))
|
|
251
|
+
continue;
|
|
252
|
+
seen.add(hit.id);
|
|
253
|
+
matches.push({ skill_id: hit.id, score: 100, matched_via: [`exact:alias:${hit.alias}`], active: isActive(hit.id) });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Phase 2: weighted keyword scoring.
|
|
257
|
+
if (matches.length === 0 && entries.length > 0) {
|
|
258
|
+
const scored = entries
|
|
259
|
+
.map(entry => ({ entry, ...this.scoreEntry(entry, request, tokens) }))
|
|
260
|
+
.filter(item => item.score > KEYWORD_THRESHOLD)
|
|
261
|
+
.sort((a, b) => b.score - a.score)
|
|
262
|
+
.slice(0, TOP_MATCHES);
|
|
263
|
+
if (scored.length > 0) {
|
|
264
|
+
matchPhase = 'keyword';
|
|
265
|
+
matches = scored.map(item => ({
|
|
266
|
+
skill_id: item.entry.skill_id,
|
|
267
|
+
score: item.score,
|
|
268
|
+
matched_via: item.via,
|
|
269
|
+
active: isActive(item.entry.skill_id),
|
|
270
|
+
}));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Phase 3: semantic category fallback.
|
|
274
|
+
if (matches.length === 0) {
|
|
275
|
+
const row = CATEGORY_TABLE.find(r => r.keywords.some(k => (k.includes(' ') ? text.includes(k) : tokens.includes(k) || text.split(/[^a-z0-9]+/).includes(k))));
|
|
276
|
+
if (row) {
|
|
277
|
+
matchPhase = 'category';
|
|
278
|
+
category = row.category;
|
|
279
|
+
matches = row.candidates.map(id => ({
|
|
280
|
+
skill_id: id,
|
|
281
|
+
score: 0,
|
|
282
|
+
matched_via: [`category:${row.category}`],
|
|
283
|
+
active: isActive(id),
|
|
284
|
+
}));
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
for (const match of matches.filter(m => !m.active)) {
|
|
288
|
+
warnings.push(`Skill "${match.skill_id}" matches but is not active in ACTIVE_SKILLS.yaml - offer to activate.`);
|
|
289
|
+
}
|
|
290
|
+
// Step 4 — new-skill gate.
|
|
291
|
+
let newSkill = null;
|
|
292
|
+
if (taskType === 'skill_creation') {
|
|
293
|
+
const policy = loadYamlFile(path.join(this.stateDir(), 'NEW_SKILL_POLICY.yaml'));
|
|
294
|
+
const overlaps = this.findCreationOverlaps(request, entries);
|
|
295
|
+
const enforcement = String(policy?.enforcement ?? 'unknown');
|
|
296
|
+
const creationAllowed = policy ? policy.allow_canonical_creation === true || policy.allow_project_local === true : false;
|
|
297
|
+
const allowed = creationAllowed && overlaps.length === 0;
|
|
298
|
+
newSkill = {
|
|
299
|
+
requested: true,
|
|
300
|
+
allowed,
|
|
301
|
+
overlaps,
|
|
302
|
+
enforcement,
|
|
303
|
+
note: overlaps.length > 0
|
|
304
|
+
? `Overlapping skill(s) exist: ${overlaps.join(', ')} - do not create a duplicate.`
|
|
305
|
+
: creationAllowed
|
|
306
|
+
? 'No overlap found - creation allowed; rationale + decision-log entry required.'
|
|
307
|
+
: 'Creation not allowed by policy - canonical creation requires hub approval.',
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
// Step 5 — doc load order for the phase.
|
|
311
|
+
const phase = options.phase ?? (taskType === 'architecture' ? 'before_schema_changes'
|
|
312
|
+
: taskType === 'strategy' ? 'session_start'
|
|
313
|
+
: 'before_code_changes');
|
|
314
|
+
const docsFile = loadYamlFile(path.join(this.stateDir(), 'AUTHORITATIVE_DOCS.yaml'));
|
|
315
|
+
const docs = (docsFile?.[phase] ?? []).map(doc => ({
|
|
316
|
+
path: doc.path,
|
|
317
|
+
required: doc.required === true,
|
|
318
|
+
exists: fs.existsSync(path.join(this.projectRoot, doc.path)),
|
|
319
|
+
}));
|
|
320
|
+
for (const doc of docs.filter(d => d.required && !d.exists)) {
|
|
321
|
+
warnings.push(`Required doc unreadable: ${doc.path} - do not proceed until resolved.`);
|
|
322
|
+
}
|
|
323
|
+
// Step 6 — model routing.
|
|
324
|
+
const modelFamily = taskType === 'architecture' ? 'architecture'
|
|
325
|
+
: taskType === 'implementation' ? 'implementation'
|
|
326
|
+
: 'strategy'; // strategy + skill_creation route to strategy; ambiguity defaults to strategy per MODEL_ROUTING
|
|
327
|
+
const routing = loadYamlFile(path.join(this.stateDir(), 'MODEL_ROUTING.yaml'));
|
|
328
|
+
const model = routing?.mappings?.[modelFamily] ?? null;
|
|
329
|
+
return {
|
|
330
|
+
request,
|
|
331
|
+
task_type: taskType,
|
|
332
|
+
authority_pack: authorityPack,
|
|
333
|
+
model_family: modelFamily,
|
|
334
|
+
model,
|
|
335
|
+
match_phase: matchPhase,
|
|
336
|
+
matches,
|
|
337
|
+
category,
|
|
338
|
+
docs,
|
|
339
|
+
new_skill: newSkill,
|
|
340
|
+
warnings,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
exports.PreflightResolver = PreflightResolver;
|
|
345
|
+
//# sourceMappingURL=preflight-resolver.js.map
|