@enterprise-skills/orchestrator 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/compliance/fedramp.yaml +30 -0
  2. package/compliance/gdpr.yaml +33 -0
  3. package/compliance/hipaa.yaml +29 -0
  4. package/compliance/iso27001.yaml +29 -0
  5. package/compliance/pcidss.yaml +24 -0
  6. package/compliance/soc2.yaml +33 -0
  7. package/dist/__tests__/compliance.test.d.ts +2 -0
  8. package/dist/__tests__/compliance.test.d.ts.map +1 -0
  9. package/dist/__tests__/compliance.test.js +148 -0
  10. package/dist/__tests__/compliance.test.js.map +1 -0
  11. package/dist/__tests__/preflight-resolver.test.d.ts +2 -0
  12. package/dist/__tests__/preflight-resolver.test.d.ts.map +1 -0
  13. package/dist/__tests__/preflight-resolver.test.js +182 -0
  14. package/dist/__tests__/preflight-resolver.test.js.map +1 -0
  15. package/dist/__tests__/workflow-library.test.d.ts +2 -0
  16. package/dist/__tests__/workflow-library.test.d.ts.map +1 -0
  17. package/dist/__tests__/workflow-library.test.js +185 -0
  18. package/dist/__tests__/workflow-library.test.js.map +1 -0
  19. package/dist/compliance.d.ts +51 -0
  20. package/dist/compliance.d.ts.map +1 -0
  21. package/dist/compliance.js +160 -0
  22. package/dist/compliance.js.map +1 -0
  23. package/dist/index.d.ts +62 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +152 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/preflight-resolver.d.ts +58 -0
  28. package/dist/preflight-resolver.d.ts.map +1 -0
  29. package/dist/preflight-resolver.js +345 -0
  30. package/dist/preflight-resolver.js.map +1 -0
  31. package/dist/types.d.ts +1 -1
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/workflow-library.d.ts +14 -0
  34. package/dist/workflow-library.d.ts.map +1 -0
  35. package/dist/workflow-library.js +94 -0
  36. package/dist/workflow-library.js.map +1 -0
  37. package/package.json +4 -2
  38. package/workflows/beginner-launchpad.yaml +33 -0
  39. package/workflows/enterprise-control-plane.yaml +38 -0
  40. package/workflows/growth-engine.yaml +33 -0
  41. package/workflows/health-check.yaml +28 -0
  42. package/workflows/incident-triage.yaml +34 -0
  43. package/workflows/onboard-audit.yaml +28 -0
  44. package/workflows/post-refactor.yaml +27 -0
  45. package/workflows/product-launch.yaml +54 -0
  46. package/workflows/release-confidence.yaml +87 -0
  47. package/workflows/release-readiness.yaml +62 -0
  48. package/workflows/security-assessment.yaml +60 -0
  49. package/workflows/sprint-close.yaml +30 -0
  50. package/workflows/ux-quality-review.yaml +33 -0
@@ -0,0 +1,30 @@
1
+ # FedRAMP Moderate (NIST 800-53 families) mapped to platform controls.
2
+ framework: FEDRAMP
3
+ name: FedRAMP Moderate (NIST 800-53 families)
4
+ requirements:
5
+ - id: AC
6
+ title: Access Control
7
+ controls: [CTL-POLICY, CTL-HOOKS]
8
+ - id: AU
9
+ title: Audit and Accountability
10
+ controls: [CTL-AUDIT]
11
+ partial: true
12
+ - id: CA
13
+ title: Assessment and Authorization
14
+ controls: []
15
+ - id: CM
16
+ title: Configuration Management
17
+ controls: [CTL-PACK, CTL-PRECOMMIT]
18
+ - id: IA
19
+ title: Identification and Authentication
20
+ controls: [CTL-POLICY]
21
+ partial: true
22
+ - id: RA
23
+ title: Risk Assessment
24
+ controls: [CTL-SPEC-AGENT, CTL-SPEC-ALIGN]
25
+ - id: SA
26
+ title: System and Services Acquisition
27
+ controls: [CTL-SPEC-ALIGN, CTL-DOCS]
28
+ - id: SI
29
+ title: System and Information Integrity
30
+ controls: [CTL-SPEC-RAG, CTL-LINT]
@@ -0,0 +1,33 @@
1
+ # GDPR key articles mapped to platform controls.
2
+ # Scope: AI-governance controls; lawful-basis, erasure, and breach
3
+ # notification are organizational processes the report surfaces as gaps.
4
+ framework: GDPR
5
+ name: GDPR (EU 2016/679, key articles)
6
+ requirements:
7
+ - id: Art.5
8
+ title: Data processing principles
9
+ controls: [CTL-SPEC-RAG, CTL-SPEC-ALIGN]
10
+ partial: true
11
+ - id: Art.6
12
+ title: Lawful basis for processing
13
+ controls: []
14
+ - id: Art.13-14
15
+ title: Transparency and information
16
+ controls: [CTL-SPEC-RAG]
17
+ partial: true
18
+ - id: Art.17
19
+ title: Right to erasure
20
+ controls: []
21
+ - id: Art.25
22
+ title: Data protection by design and by default
23
+ controls: [CTL-SPEC-ALIGN, CTL-PACK]
24
+ - id: Art.32
25
+ title: Security of processing
26
+ controls: [CTL-POLICY, CTL-DOCS, CTL-LINT]
27
+ - id: Art.33
28
+ title: Breach notification
29
+ controls: []
30
+ - id: Art.35
31
+ title: Data protection impact assessment
32
+ controls: [CTL-SPEC-ALIGN]
33
+ partial: true
@@ -0,0 +1,29 @@
1
+ # HIPAA Security Rule mapped to platform controls.
2
+ # Scope: AI-governance controls only; PHI-specific safeguards (training,
3
+ # transmission security) are organizational gaps the report surfaces.
4
+ framework: HIPAA
5
+ name: HIPAA Security Rule
6
+ requirements:
7
+ - id: 164.308(a)(1)
8
+ title: Security management process
9
+ controls: [CTL-DOCS, CTL-SPEC-ALIGN]
10
+ - id: 164.308(a)(3)
11
+ title: Workforce security
12
+ controls: [CTL-POLICY]
13
+ partial: true
14
+ - id: 164.308(a)(4)
15
+ title: Information access management
16
+ controls: [CTL-POLICY, CTL-HOOKS]
17
+ - id: 164.308(a)(5)
18
+ title: Security awareness and training
19
+ controls: []
20
+ - id: 164.312(a)(1)
21
+ title: Access control
22
+ controls: [CTL-POLICY]
23
+ partial: true
24
+ - id: 164.312(c)(1)
25
+ title: Integrity controls
26
+ controls: [CTL-AUDIT, CTL-SPEC-RAG]
27
+ - id: 164.312(e)(1)
28
+ title: Transmission security
29
+ controls: []
@@ -0,0 +1,29 @@
1
+ # ISO 27001:2022 Annex A (selected controls) mapped to platform controls.
2
+ framework: ISO27001
3
+ name: ISO 27001:2022 (Annex A, selected)
4
+ requirements:
5
+ - id: A.5.1
6
+ title: Information security policies
7
+ controls: [CTL-DOCS]
8
+ - id: A.5.2
9
+ title: Information security roles and responsibilities
10
+ controls: [CTL-POLICY]
11
+ partial: true
12
+ - id: A.6.1
13
+ title: Screening
14
+ controls: []
15
+ - id: A.8.1
16
+ title: User endpoint devices
17
+ na: true
18
+ - id: A.8.2
19
+ title: Privileged access rights
20
+ controls: [CTL-POLICY, CTL-HOOKS]
21
+ - id: A.8.9
22
+ title: Configuration management
23
+ controls: [CTL-PACK, CTL-PRECOMMIT]
24
+ - id: A.8.25
25
+ title: Secure development lifecycle
26
+ controls: [CTL-DOCS, CTL-PRECOMMIT, CTL-TESTS]
27
+ - id: A.8.28
28
+ title: Secure coding
29
+ controls: [CTL-LINT, CTL-SPEC-RAG]
@@ -0,0 +1,24 @@
1
+ # PCI DSS v4.0 (selected requirements) mapped to platform controls.
2
+ framework: PCIDSS
3
+ name: PCI DSS v4.0 (selected)
4
+ requirements:
5
+ - id: "1.1"
6
+ title: Network security controls
7
+ na: true
8
+ - id: "6.2"
9
+ title: Secure software development
10
+ controls: [CTL-DOCS, CTL-LINT]
11
+ - id: "6.3"
12
+ title: Security vulnerabilities identified and addressed
13
+ controls: [CTL-LINT, CTL-TESTS]
14
+ partial: true
15
+ - id: "7.1"
16
+ title: Access to system components restricted
17
+ controls: [CTL-POLICY]
18
+ - id: "10.1"
19
+ title: Logging and monitoring
20
+ controls: [CTL-AUDIT]
21
+ partial: true
22
+ - id: "12.1"
23
+ title: Information security policy
24
+ controls: [CTL-DOCS]
@@ -0,0 +1,33 @@
1
+ # SOC 2 Type II — Trust Service Criteria mapped to platform controls.
2
+ # Methodology: skills/compliance-mapper.md (Step 3). Scope: AI-governance
3
+ # controls this platform deploys — not a full-organization SOC 2 program.
4
+ framework: SOC2
5
+ name: SOC 2 Type II (Trust Service Criteria)
6
+ requirements:
7
+ - id: CC1.1
8
+ title: COSO principle - integrity and ethical values
9
+ controls: [CTL-SPEC-ALIGN, CTL-PACK]
10
+ partial: true
11
+ - id: CC2.1
12
+ title: Information quality for internal control
13
+ controls: [CTL-SPEC-RAG, CTL-AUDIT]
14
+ - id: CC3.1
15
+ title: Risk assessment process
16
+ controls: [CTL-SPEC-AGENT]
17
+ partial: true
18
+ - id: CC5.1
19
+ title: Control activities to mitigate risk
20
+ controls: [CTL-DOCS, CTL-PRECOMMIT]
21
+ - id: CC6.1
22
+ title: Logical access controls
23
+ controls: [CTL-POLICY, CTL-HOOKS]
24
+ - id: CC7.1
25
+ title: System monitoring
26
+ controls: [CTL-AUDIT, CTL-TESTS]
27
+ partial: true
28
+ - id: CC8.1
29
+ title: Change management
30
+ controls: [CTL-DOCS, CTL-PRECOMMIT]
31
+ - id: CC9.1
32
+ title: Risk mitigation
33
+ controls: [CTL-SPEC-AGENT, CTL-WORKFLOW]
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=compliance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/compliance.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
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
+ const vitest_1 = require("vitest");
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const compliance_1 = require("../compliance");
41
+ const index_1 = require("../index");
42
+ (0, vitest_1.describe)('compliance engine', () => {
43
+ let tmpDir;
44
+ const write = (rel, content) => {
45
+ const full = path.join(tmpDir, rel);
46
+ fs.mkdirSync(path.dirname(full), { recursive: true });
47
+ fs.writeFileSync(full, content, 'utf-8');
48
+ };
49
+ (0, vitest_1.beforeEach)(() => {
50
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'compliance-'));
51
+ });
52
+ (0, vitest_1.afterEach)(() => {
53
+ fs.rmSync(tmpDir, { recursive: true, force: true });
54
+ });
55
+ (0, vitest_1.it)('detects nothing but cites what it looked for in a bare project', () => {
56
+ const controls = (0, compliance_1.detectControls)(tmpDir);
57
+ // CTL-WORKFLOW counts the packaged library, present by construction.
58
+ const missing = controls.filter(c => c.status === 'missing');
59
+ (0, vitest_1.expect)(missing.length).toBeGreaterThanOrEqual(controls.length - 2);
60
+ for (const control of missing) {
61
+ (0, vitest_1.expect)(control.evidence).toMatch(/^not found: /);
62
+ }
63
+ });
64
+ (0, vitest_1.it)('detects controls from real artifacts with evidence, never from claims', () => {
65
+ write('.project-ai/ACTIVE_SKILLS.yaml', 'active: []');
66
+ write('.project-ai/SESSION_POLICY.yaml', 'policy: enterprise');
67
+ write('.project-ai/MODEL_ROUTING.yaml', 'mappings: {}');
68
+ write('.project-ai/AUTHORITATIVE_DOCS.yaml', 'session_start: []');
69
+ write('specs/AGENTIC_GOVERNANCE.md', '# spec');
70
+ write('.husky/pre-commit', 'npx lint-staged');
71
+ write('.eslintrc.json', '{"plugins":["security"]}');
72
+ const byId = new Map((0, compliance_1.detectControls)(tmpDir).map(c => [c.id, c]));
73
+ (0, vitest_1.expect)(byId.get('CTL-PACK')?.status).toBe('implemented');
74
+ (0, vitest_1.expect)(byId.get('CTL-SPEC-AGENT')?.status).toBe('implemented');
75
+ (0, vitest_1.expect)(byId.get('CTL-PRECOMMIT')?.status).toBe('implemented');
76
+ (0, vitest_1.expect)(byId.get('CTL-LINT')?.status).toBe('implemented');
77
+ (0, vitest_1.expect)(byId.get('CTL-SPEC-RAG')?.status).toBe('missing');
78
+ });
79
+ (0, vitest_1.it)('flags a partial authority pack as partial', () => {
80
+ write('.project-ai/ACTIVE_SKILLS.yaml', 'active: []');
81
+ const pack = (0, compliance_1.detectControls)(tmpDir).find(c => c.id === 'CTL-PACK');
82
+ (0, vitest_1.expect)(pack?.status).toBe('partial');
83
+ });
84
+ (0, vitest_1.it)('CTL-AUDIT requires a VALID hash chain, not just a file', () => {
85
+ write('.project-ai/orchestration-audit.jsonl', '{"timestamp":"x","integrity_hash":"forged"}\n');
86
+ const audit = (0, compliance_1.detectControls)(tmpDir).find(c => c.id === 'CTL-AUDIT');
87
+ (0, vitest_1.expect)(audit?.status).toBe('missing');
88
+ // A genuine engine-written chain verifies.
89
+ fs.rmSync(path.join(tmpDir, '.project-ai', 'orchestration-audit.jsonl'));
90
+ const orch = new index_1.Orchestrator({ projectRoot: tmpDir });
91
+ orch.startSession('proj', 'main');
92
+ const auditAfter = (0, compliance_1.detectControls)(tmpDir).find(c => c.id === 'CTL-AUDIT');
93
+ (0, vitest_1.expect)(auditAfter?.status).toBe('implemented');
94
+ (0, vitest_1.expect)(auditAfter?.evidence).toContain('VALID');
95
+ });
96
+ (0, vitest_1.it)('ships all six framework catalogs', () => {
97
+ const frameworks = (0, compliance_1.listFrameworks)().map(f => f.framework);
98
+ (0, vitest_1.expect)(frameworks).toEqual(['FEDRAMP', 'GDPR', 'HIPAA', 'ISO27001', 'PCIDSS', 'SOC2']);
99
+ });
100
+ (0, vitest_1.it)('every catalog control reference resolves to a detectable control id', () => {
101
+ const known = new Set((0, compliance_1.detectControls)(tmpDir).map(c => c.id));
102
+ for (const catalog of (0, compliance_1.listFrameworks)()) {
103
+ for (const req of catalog.requirements) {
104
+ for (const id of req.controls ?? []) {
105
+ (0, vitest_1.expect)(known.has(id), `${catalog.framework} ${req.id} references unknown control ${id}`).toBe(true);
106
+ }
107
+ }
108
+ }
109
+ });
110
+ (0, vitest_1.it)('coverage math: full / partial / gap / n-a per the skill methodology', () => {
111
+ const controls = [
112
+ { id: 'A', description: '', type: 'preventive', status: 'implemented', evidence: 'a' },
113
+ { id: 'B', description: '', type: 'detective', status: 'partial', evidence: 'b' },
114
+ { id: 'C', description: '', type: 'preventive', status: 'missing', evidence: 'c' },
115
+ ];
116
+ const result = (0, compliance_1.evaluateFramework)({
117
+ framework: 'T',
118
+ name: 'Test',
119
+ requirements: [
120
+ { id: 'r-full', title: 'both implemented', controls: ['A'] },
121
+ { id: 'r-partial-status', title: 'partial control', controls: ['B'] },
122
+ { id: 'r-partial-flag', title: 'inherently partial', controls: ['A'], partial: true },
123
+ { id: 'r-gap-missing', title: 'only missing control', controls: ['C'] },
124
+ { id: 'r-gap-empty', title: 'nothing mapped', controls: [] },
125
+ { id: 'r-na', title: 'out of scope', na: true },
126
+ ],
127
+ }, controls);
128
+ const byId = Object.fromEntries(result.requirements.map(r => [r.id, r.coverage]));
129
+ (0, vitest_1.expect)(byId).toEqual({
130
+ 'r-full': 'full',
131
+ 'r-partial-status': 'partial',
132
+ 'r-partial-flag': 'partial',
133
+ 'r-gap-missing': 'gap',
134
+ 'r-gap-empty': 'gap',
135
+ 'r-na': 'n/a',
136
+ });
137
+ // covered = full+partial (3) of applicable (5)
138
+ (0, vitest_1.expect)(result.coverage_percent).toBe(60);
139
+ (0, vitest_1.expect)(result.gaps.map(g => g.id)).toEqual(['r-gap-missing', 'r-gap-empty']);
140
+ });
141
+ (0, vitest_1.it)('buildComplianceReport filters by framework case-insensitively', () => {
142
+ const report = (0, compliance_1.buildComplianceReport)(tmpDir, 'soc2');
143
+ (0, vitest_1.expect)(report.frameworks).toHaveLength(1);
144
+ (0, vitest_1.expect)(report.frameworks[0].framework).toBe('SOC2');
145
+ (0, vitest_1.expect)(report.controls.length).toBeGreaterThan(5);
146
+ });
147
+ });
148
+ //# sourceMappingURL=compliance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.test.js","sourceRoot":"","sources":["../../src/__tests__/compliance.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=preflight-resolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-resolver.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/preflight-resolver.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,182 @@
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
+ const vitest_1 = require("vitest");
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const preflight_resolver_1 = require("../preflight-resolver");
41
+ const REGISTRY = `
42
+ schema_version: "2.0"
43
+ skills:
44
+ - skill_id: security-audit
45
+ category: audit
46
+ description: Scans for leaked secrets, vulnerabilities, and insecure configuration.
47
+ aliases: [sec-audit]
48
+ trigger_phrases: ["security audit", "scan for secrets"]
49
+ activation_tags: [security]
50
+ - skill_id: bug-hunter
51
+ category: agentic
52
+ description: Finds and fixes bugs from an error description or failing test.
53
+ aliases: [bugfix]
54
+ trigger_phrases: ["hunt bugs", "fix this bug"]
55
+ - skill_id: feature-builder
56
+ category: agentic
57
+ description: Builds features end to end with plan, implementation, tests.
58
+ aliases: []
59
+ trigger_phrases: ["build feature"]
60
+ `;
61
+ const ACTIVE = `
62
+ active:
63
+ - skill_id: security-audit
64
+ reason: required_by_profile
65
+ - skill_id: feature-builder
66
+ reason: required_by_profile
67
+ - skill_id: browser-agent
68
+ reason: not_applicable
69
+ `;
70
+ const ROUTING = `
71
+ mappings:
72
+ strategy: model-strategy
73
+ architecture: model-arch
74
+ implementation: model-impl
75
+ `;
76
+ const DOCS = `
77
+ before_code_changes:
78
+ - path: EXISTS.md
79
+ required: true
80
+ - path: MISSING.md
81
+ required: false
82
+ session_start:
83
+ - path: EXISTS.md
84
+ required: true
85
+ `;
86
+ const POLICY = `
87
+ allow_project_local: false
88
+ allow_canonical_creation: true
89
+ enforcement: "enforced"
90
+ `;
91
+ (0, vitest_1.describe)('PreflightResolver', () => {
92
+ let tmpDir;
93
+ const write = (rel, content) => {
94
+ const full = path.join(tmpDir, rel);
95
+ fs.mkdirSync(path.dirname(full), { recursive: true });
96
+ fs.writeFileSync(full, content, 'utf-8');
97
+ };
98
+ (0, vitest_1.beforeEach)(() => {
99
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'preflight-'));
100
+ write('registry/canonical-skills.yaml', REGISTRY);
101
+ write('.project-ai/ACTIVE_SKILLS.yaml', ACTIVE);
102
+ write('.project-ai/MODEL_ROUTING.yaml', ROUTING);
103
+ write('.project-ai/AUTHORITATIVE_DOCS.yaml', DOCS);
104
+ write('.project-ai/NEW_SKILL_POLICY.yaml', POLICY);
105
+ write('EXISTS.md', '# here');
106
+ });
107
+ (0, vitest_1.afterEach)(() => {
108
+ fs.rmSync(tmpDir, { recursive: true, force: true });
109
+ });
110
+ (0, vitest_1.it)('classifies task types per the spec table', () => {
111
+ const r = new preflight_resolver_1.PreflightResolver(tmpDir);
112
+ (0, vitest_1.expect)(r.classify('Should we restructure the pricing tiers?')).toBe('strategy');
113
+ (0, vitest_1.expect)(r.classify('Design the schema for licensing v2')).toBe('architecture');
114
+ (0, vitest_1.expect)(r.classify('Fix the login timeout')).toBe('implementation');
115
+ (0, vitest_1.expect)(r.classify('Create a new skill for GraphQL audits')).toBe('skill_creation');
116
+ });
117
+ (0, vitest_1.it)('Phase 1: exact skill_id and alias-map matches win with active flags', () => {
118
+ write('registry/skill-aliases.yaml', 'aliases:\n sec-audit: security-audit\n');
119
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('run security-audit on this repo');
120
+ (0, vitest_1.expect)(res.match_phase).toBe('exact');
121
+ (0, vitest_1.expect)(res.matches[0].skill_id).toBe('security-audit');
122
+ (0, vitest_1.expect)(res.matches[0].active).toBe(true);
123
+ });
124
+ (0, vitest_1.it)('Phase 2: weighted keyword scoring crosses the threshold via trigger + description', () => {
125
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('please scan for secrets and vulnerabilities');
126
+ (0, vitest_1.expect)(res.match_phase).toBe('keyword');
127
+ (0, vitest_1.expect)(res.matches[0].skill_id).toBe('security-audit');
128
+ // trigger (10) + description keywords >= threshold 15
129
+ (0, vitest_1.expect)(res.matches[0].score).toBeGreaterThan(15);
130
+ });
131
+ (0, vitest_1.it)('Phase 3: falls back to the semantic category table', () => {
132
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('site went down, total outage right now');
133
+ (0, vitest_1.expect)(res.match_phase).toBe('category');
134
+ (0, vitest_1.expect)(res.category).toBe('incident');
135
+ (0, vitest_1.expect)(res.matches.map(m => m.skill_id)).toContain('incident-response');
136
+ });
137
+ (0, vitest_1.it)('flags matched-but-inactive skills instead of hiding them', () => {
138
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('fix this bug in the parser');
139
+ const bugHunter = res.matches.find(m => m.skill_id === 'bug-hunter');
140
+ (0, vitest_1.expect)(bugHunter).toBeDefined();
141
+ (0, vitest_1.expect)(bugHunter.active).toBe(false);
142
+ (0, vitest_1.expect)(res.warnings.join(' ')).toContain('bug-hunter');
143
+ });
144
+ (0, vitest_1.it)('new-skill gate blocks creation when an overlapping skill matches', () => {
145
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('create a new skill for security audit scanning');
146
+ (0, vitest_1.expect)(res.task_type).toBe('skill_creation');
147
+ (0, vitest_1.expect)(res.new_skill?.allowed).toBe(false);
148
+ (0, vitest_1.expect)(res.new_skill?.overlaps).toContain('security-audit');
149
+ });
150
+ (0, vitest_1.it)('new-skill gate allows creation with rationale when no overlap exists', () => {
151
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('create a new skill for underwater basket telemetry');
152
+ (0, vitest_1.expect)(res.task_type).toBe('skill_creation');
153
+ (0, vitest_1.expect)(res.new_skill?.allowed).toBe(true);
154
+ (0, vitest_1.expect)(res.new_skill?.note).toContain('rationale');
155
+ });
156
+ (0, vitest_1.it)('routes models by task family and lists phase docs with existence', () => {
157
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('fix the flaky retry logic');
158
+ (0, vitest_1.expect)(res.model_family).toBe('implementation');
159
+ (0, vitest_1.expect)(res.model).toBe('model-impl');
160
+ (0, vitest_1.expect)(res.docs).toEqual([
161
+ { path: 'EXISTS.md', required: true, exists: true },
162
+ { path: 'MISSING.md', required: false, exists: false },
163
+ ]);
164
+ });
165
+ (0, vitest_1.it)('warns on required-but-missing docs (do-not-proceed failure mode)', () => {
166
+ write('.project-ai/AUTHORITATIVE_DOCS.yaml', 'before_code_changes:\n - path: GONE.md\n required: true\n');
167
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('fix the parser');
168
+ (0, vitest_1.expect)(res.warnings.join(' ')).toContain('GONE.md');
169
+ });
170
+ (0, vitest_1.it)('falls back to full activation when the authority pack is missing', () => {
171
+ fs.rmSync(path.join(tmpDir, '.project-ai'), { recursive: true, force: true });
172
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('fix this bug in the parser');
173
+ (0, vitest_1.expect)(res.authority_pack).toBe('missing');
174
+ (0, vitest_1.expect)(res.matches.every(m => m.active)).toBe(true);
175
+ });
176
+ (0, vitest_1.it)('warns when no registry is found anywhere', () => {
177
+ fs.rmSync(path.join(tmpDir, 'registry'), { recursive: true, force: true });
178
+ const res = new preflight_resolver_1.PreflightResolver(tmpDir).resolve('fix this bug');
179
+ (0, vitest_1.expect)(res.warnings.join(' ')).toContain('Registry snapshot missing');
180
+ });
181
+ });
182
+ //# sourceMappingURL=preflight-resolver.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-resolver.test.js","sourceRoot":"","sources":["../../src/__tests__/preflight-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workflow-library.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-library.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/workflow-library.test.ts"],"names":[],"mappings":""}