@enterprise-skills/orchestrator 3.2.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 (113) hide show
  1. package/dist/__tests__/advisor.test.d.ts +2 -0
  2. package/dist/__tests__/advisor.test.d.ts.map +1 -0
  3. package/dist/__tests__/advisor.test.js +92 -0
  4. package/dist/__tests__/advisor.test.js.map +1 -0
  5. package/dist/__tests__/audit-logger.test.d.ts +2 -0
  6. package/dist/__tests__/audit-logger.test.d.ts.map +1 -0
  7. package/dist/__tests__/audit-logger.test.js +115 -0
  8. package/dist/__tests__/audit-logger.test.js.map +1 -0
  9. package/dist/__tests__/dag-resolver.test.d.ts +2 -0
  10. package/dist/__tests__/dag-resolver.test.d.ts.map +1 -0
  11. package/dist/__tests__/dag-resolver.test.js +297 -0
  12. package/dist/__tests__/dag-resolver.test.js.map +1 -0
  13. package/dist/__tests__/orchestrator.test.d.ts +2 -0
  14. package/dist/__tests__/orchestrator.test.d.ts.map +1 -0
  15. package/dist/__tests__/orchestrator.test.js +152 -0
  16. package/dist/__tests__/orchestrator.test.js.map +1 -0
  17. package/dist/__tests__/policy-enforcer.test.d.ts +2 -0
  18. package/dist/__tests__/policy-enforcer.test.d.ts.map +1 -0
  19. package/dist/__tests__/policy-enforcer.test.js +113 -0
  20. package/dist/__tests__/policy-enforcer.test.js.map +1 -0
  21. package/dist/__tests__/signal-router.test.d.ts +2 -0
  22. package/dist/__tests__/signal-router.test.d.ts.map +1 -0
  23. package/dist/__tests__/signal-router.test.js +96 -0
  24. package/dist/__tests__/signal-router.test.js.map +1 -0
  25. package/dist/__tests__/state-machine.test.d.ts +2 -0
  26. package/dist/__tests__/state-machine.test.d.ts.map +1 -0
  27. package/dist/__tests__/state-machine.test.js +278 -0
  28. package/dist/__tests__/state-machine.test.js.map +1 -0
  29. package/dist/advisor.d.ts +41 -0
  30. package/dist/advisor.d.ts.map +1 -0
  31. package/dist/advisor.js +268 -0
  32. package/dist/advisor.js.map +1 -0
  33. package/dist/api/handlers.d.ts +28 -0
  34. package/dist/api/handlers.d.ts.map +1 -0
  35. package/dist/api/handlers.js +305 -0
  36. package/dist/api/handlers.js.map +1 -0
  37. package/dist/api/index.d.ts +5 -0
  38. package/dist/api/index.d.ts.map +1 -0
  39. package/dist/api/index.js +20 -0
  40. package/dist/api/index.js.map +1 -0
  41. package/dist/api/routes/complete.d.ts +9 -0
  42. package/dist/api/routes/complete.d.ts.map +1 -0
  43. package/dist/api/routes/complete.js +34 -0
  44. package/dist/api/routes/complete.js.map +1 -0
  45. package/dist/api/routes/dashboard.d.ts +9 -0
  46. package/dist/api/routes/dashboard.d.ts.map +1 -0
  47. package/dist/api/routes/dashboard.js +29 -0
  48. package/dist/api/routes/dashboard.js.map +1 -0
  49. package/dist/api/routes/execute.d.ts +10 -0
  50. package/dist/api/routes/execute.d.ts.map +1 -0
  51. package/dist/api/routes/execute.js +35 -0
  52. package/dist/api/routes/execute.js.map +1 -0
  53. package/dist/api/routes/gate.d.ts +9 -0
  54. package/dist/api/routes/gate.d.ts.map +1 -0
  55. package/dist/api/routes/gate.js +34 -0
  56. package/dist/api/routes/gate.js.map +1 -0
  57. package/dist/api/routes/index.d.ts +7 -0
  58. package/dist/api/routes/index.d.ts.map +1 -0
  59. package/dist/api/routes/index.js +19 -0
  60. package/dist/api/routes/index.js.map +1 -0
  61. package/dist/api/routes/middleware.d.ts +13 -0
  62. package/dist/api/routes/middleware.d.ts.map +1 -0
  63. package/dist/api/routes/middleware.js +55 -0
  64. package/dist/api/routes/middleware.js.map +1 -0
  65. package/dist/api/routes/signal.d.ts +9 -0
  66. package/dist/api/routes/signal.d.ts.map +1 -0
  67. package/dist/api/routes/signal.js +34 -0
  68. package/dist/api/routes/signal.js.map +1 -0
  69. package/dist/api/types.d.ts +87 -0
  70. package/dist/api/types.d.ts.map +1 -0
  71. package/dist/api/types.js +3 -0
  72. package/dist/api/types.js.map +1 -0
  73. package/dist/audit-logger.d.ts +20 -0
  74. package/dist/audit-logger.d.ts.map +1 -0
  75. package/dist/audit-logger.js +125 -0
  76. package/dist/audit-logger.js.map +1 -0
  77. package/dist/builtin-triggers.d.ts +3 -0
  78. package/dist/builtin-triggers.d.ts.map +1 -0
  79. package/dist/builtin-triggers.js +235 -0
  80. package/dist/builtin-triggers.js.map +1 -0
  81. package/dist/dag-resolver.d.ts +22 -0
  82. package/dist/dag-resolver.d.ts.map +1 -0
  83. package/dist/dag-resolver.js +250 -0
  84. package/dist/dag-resolver.js.map +1 -0
  85. package/dist/hardening-sensors.d.ts +22 -0
  86. package/dist/hardening-sensors.d.ts.map +1 -0
  87. package/dist/hardening-sensors.js +135 -0
  88. package/dist/hardening-sensors.js.map +1 -0
  89. package/dist/index.d.ts +87 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +269 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/policy-enforcer.d.ts +27 -0
  94. package/dist/policy-enforcer.d.ts.map +1 -0
  95. package/dist/policy-enforcer.js +185 -0
  96. package/dist/policy-enforcer.js.map +1 -0
  97. package/dist/signal-router.d.ts +19 -0
  98. package/dist/signal-router.d.ts.map +1 -0
  99. package/dist/signal-router.js +206 -0
  100. package/dist/signal-router.js.map +1 -0
  101. package/dist/state-machine.d.ts +45 -0
  102. package/dist/state-machine.d.ts.map +1 -0
  103. package/dist/state-machine.js +300 -0
  104. package/dist/state-machine.js.map +1 -0
  105. package/dist/task-contract.d.ts +46 -0
  106. package/dist/task-contract.d.ts.map +1 -0
  107. package/dist/task-contract.js +71 -0
  108. package/dist/task-contract.js.map +1 -0
  109. package/dist/types.d.ts +167 -0
  110. package/dist/types.d.ts.map +1 -0
  111. package/dist/types.js +3 -0
  112. package/dist/types.js.map +1 -0
  113. package/package.json +29 -0
@@ -0,0 +1,278 @@
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 yaml = __importStar(require("js-yaml"));
41
+ const state_machine_1 = require("../state-machine");
42
+ (0, vitest_1.describe)('StateMachine', () => {
43
+ let tmpDir;
44
+ let config;
45
+ let sm;
46
+ (0, vitest_1.beforeEach)(() => {
47
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sm-test-'));
48
+ config = {
49
+ project_root: tmpDir,
50
+ state_dir: path.join(tmpDir, '.project-ai'),
51
+ audit_log_path: path.join(tmpDir, '.project-ai', 'audit.jsonl'),
52
+ session_id: 'test-session-001',
53
+ };
54
+ sm = new state_machine_1.StateMachine(config);
55
+ });
56
+ (0, vitest_1.afterEach)(() => {
57
+ fs.rmSync(tmpDir, { recursive: true, force: true });
58
+ });
59
+ (0, vitest_1.it)('initializes a session with correct fields', () => {
60
+ const ctx = sm.initSession('my-project', 'main');
61
+ (0, vitest_1.expect)(ctx.session_id).toBe('test-session-001');
62
+ (0, vitest_1.expect)(ctx.project).toBe('my-project');
63
+ (0, vitest_1.expect)(ctx.branch).toBe('main');
64
+ (0, vitest_1.expect)(ctx.skills_executed).toHaveLength(0);
65
+ (0, vitest_1.expect)(ctx.workflow_active).toBeNull();
66
+ (0, vitest_1.expect)(ctx.pending_signals).toHaveLength(0);
67
+ });
68
+ (0, vitest_1.it)('persists session context to YAML', () => {
69
+ sm.initSession('proj', 'dev');
70
+ const loaded = sm.getSessionContext();
71
+ (0, vitest_1.expect)(loaded).not.toBeNull();
72
+ (0, vitest_1.expect)(loaded.project).toBe('proj');
73
+ });
74
+ (0, vitest_1.it)('records skill completion and downstream signals', () => {
75
+ sm.initSession('proj', 'main');
76
+ const output = {
77
+ skill_id: 'security-audit',
78
+ executed_at: new Date().toISOString(),
79
+ status: 'completed',
80
+ duration_seconds: 12,
81
+ summary: '3 findings',
82
+ grade: 'B',
83
+ findings: [
84
+ { id: 'SEC-001', severity: 'high', type: 'auth_gap', description: 'missing auth', resolved: false },
85
+ ],
86
+ metrics: { files_scanned: 50, issues_found: 3 },
87
+ downstream_signals: [
88
+ { target_skill: 'incident-response', signal: 'suggest', condition: 'High severity finding' },
89
+ ],
90
+ };
91
+ const ctx = sm.recordSkillComplete(output);
92
+ (0, vitest_1.expect)(ctx.skills_executed).toHaveLength(1);
93
+ (0, vitest_1.expect)(ctx.skills_executed[0].skill_id).toBe('security-audit');
94
+ (0, vitest_1.expect)(ctx.pending_signals).toHaveLength(1);
95
+ (0, vitest_1.expect)(ctx.pending_signals[0].to).toBe('incident-response');
96
+ });
97
+ (0, vitest_1.it)('appends each completion to EXECUTION_LOG.yaml in the state dir', () => {
98
+ sm.initSession('proj', 'main');
99
+ const makeOutput = (skillId, status) => ({
100
+ skill_id: skillId,
101
+ executed_at: '2026-01-02T00:00:00Z',
102
+ status,
103
+ duration_seconds: 5,
104
+ summary: `${skillId} ran`,
105
+ findings: [],
106
+ metrics: {},
107
+ downstream_signals: skillId === 'bug-hunter'
108
+ ? [{ target_skill: 'agent-post-mortem', signal: 'suggest', condition: 'bug found' }]
109
+ : [],
110
+ });
111
+ sm.recordSkillComplete(makeOutput('bug-hunter', 'completed'));
112
+ sm.recordSkillComplete(makeOutput('code-review', 'failed'));
113
+ const logPath = path.join(config.state_dir, 'EXECUTION_LOG.yaml');
114
+ (0, vitest_1.expect)(fs.existsSync(logPath)).toBe(true);
115
+ const doc = yaml.load(fs.readFileSync(logPath, 'utf-8'));
116
+ (0, vitest_1.expect)(doc.schema_version).toBe('1.0');
117
+ (0, vitest_1.expect)(doc.entries).toHaveLength(2);
118
+ (0, vitest_1.expect)(doc.entries[0].skill_id).toBe('bug-hunter');
119
+ (0, vitest_1.expect)(doc.entries[0].result).toBe('success');
120
+ (0, vitest_1.expect)(doc.entries[0].session_id).toBe('test-session-001');
121
+ (0, vitest_1.expect)(doc.entries[0].delegated_to).toEqual(['agent-post-mortem']);
122
+ (0, vitest_1.expect)(doc.entries[1].result).toBe('failure');
123
+ });
124
+ (0, vitest_1.it)('reads/writes skill output YAML', () => {
125
+ sm.initSession('proj', 'main');
126
+ const output = {
127
+ skill_id: 'code-review',
128
+ executed_at: '2026-01-01T00:00:00Z',
129
+ status: 'completed',
130
+ duration_seconds: 5,
131
+ summary: 'ok',
132
+ findings: [],
133
+ metrics: {},
134
+ downstream_signals: [],
135
+ };
136
+ sm.writeSkillOutput(output);
137
+ const loaded = sm.readSkillOutput('code-review');
138
+ (0, vitest_1.expect)(loaded).not.toBeNull();
139
+ (0, vitest_1.expect)(loaded.skill_id).toBe('code-review');
140
+ });
141
+ (0, vitest_1.it)('consumes pending signals', () => {
142
+ sm.initSession('proj', 'main');
143
+ const output = {
144
+ skill_id: 'a',
145
+ executed_at: new Date().toISOString(),
146
+ status: 'completed',
147
+ duration_seconds: 1,
148
+ summary: '',
149
+ findings: [],
150
+ metrics: {},
151
+ downstream_signals: [
152
+ { target_skill: 'b', signal: 'suggest', condition: 'test' },
153
+ { target_skill: 'c', signal: 'require', condition: 'test2' },
154
+ ],
155
+ };
156
+ sm.recordSkillComplete(output);
157
+ (0, vitest_1.expect)(sm.getPendingSignals()).toHaveLength(2);
158
+ (0, vitest_1.expect)(sm.getPendingSignals('b')).toHaveLength(1);
159
+ const consumed = sm.consumeSignal('a', 'b');
160
+ (0, vitest_1.expect)(consumed).not.toBeNull();
161
+ (0, vitest_1.expect)(consumed.signal).toBe('suggest');
162
+ (0, vitest_1.expect)(sm.getPendingSignals()).toHaveLength(1);
163
+ });
164
+ (0, vitest_1.it)('returns blocking signals', () => {
165
+ sm.initSession('proj', 'main');
166
+ const output = {
167
+ skill_id: 'x',
168
+ executed_at: new Date().toISOString(),
169
+ status: 'completed',
170
+ duration_seconds: 1,
171
+ summary: '',
172
+ findings: [],
173
+ metrics: {},
174
+ downstream_signals: [
175
+ { target_skill: 'y', signal: 'block', condition: 'blocked' },
176
+ { target_skill: 'z', signal: 'suggest', condition: 'optional' },
177
+ ],
178
+ };
179
+ sm.recordSkillComplete(output);
180
+ const blocking = sm.getBlockingSignals();
181
+ (0, vitest_1.expect)(blocking).toHaveLength(1);
182
+ (0, vitest_1.expect)(blocking[0].signal).toBe('block');
183
+ });
184
+ (0, vitest_1.it)('clears session state', () => {
185
+ sm.initSession('proj', 'main');
186
+ sm.clearSession();
187
+ (0, vitest_1.expect)(sm.getSessionContext()).toBeNull();
188
+ });
189
+ (0, vitest_1.describe)('telemetry queue append (shared format with cli/src/telemetry.ts)', () => {
190
+ let tmpHome;
191
+ const savedEnv = {};
192
+ const queueFile = () => path.join(tmpHome, '.enterprise-skills', '.telemetry-queue.json');
193
+ const readQueue = () => JSON.parse(fs.readFileSync(queueFile(), 'utf-8'));
194
+ const makeOutput = (skillId, status) => ({
195
+ skill_id: skillId,
196
+ executed_at: '2026-01-02T00:00:00Z',
197
+ status,
198
+ duration_seconds: 5,
199
+ summary: `${skillId} ran`,
200
+ findings: [],
201
+ metrics: {},
202
+ downstream_signals: [],
203
+ });
204
+ (0, vitest_1.beforeEach)(() => {
205
+ tmpHome = fs.mkdtempSync(path.join(os.tmpdir(), 'sm-telemetry-home-'));
206
+ for (const key of ['USERPROFILE', 'HOME', 'ENTERPRISE_SKILLS_TELEMETRY']) {
207
+ savedEnv[key] = process.env[key];
208
+ delete process.env[key];
209
+ }
210
+ process.env.USERPROFILE = tmpHome;
211
+ process.env.HOME = tmpHome;
212
+ sm.initSession('proj', 'main');
213
+ });
214
+ (0, vitest_1.afterEach)(() => {
215
+ for (const [key, value] of Object.entries(savedEnv)) {
216
+ if (value === undefined)
217
+ delete process.env[key];
218
+ else
219
+ process.env[key] = value;
220
+ }
221
+ fs.rmSync(tmpHome, { recursive: true, force: true });
222
+ });
223
+ (0, vitest_1.it)('appends a skill_completed event on completion', () => {
224
+ sm.recordSkillComplete(makeOutput('security-audit', 'completed'));
225
+ const queue = readQueue();
226
+ (0, vitest_1.expect)(queue).toHaveLength(1);
227
+ (0, vitest_1.expect)(queue[0]).toEqual({
228
+ event_type: 'skill_completed',
229
+ skill_id: 'security-audit',
230
+ duration_ms: 5000,
231
+ success: true,
232
+ session_id: 'test-session-001',
233
+ });
234
+ });
235
+ (0, vitest_1.it)('maps failed to skill_failed and other statuses to skill_executed', () => {
236
+ sm.recordSkillComplete(makeOutput('a', 'failed'));
237
+ sm.recordSkillComplete(makeOutput('b', 'partial'));
238
+ sm.recordSkillComplete(makeOutput('c', 'skipped'));
239
+ const queue = readQueue();
240
+ (0, vitest_1.expect)(queue.map((e) => e.event_type)).toEqual([
241
+ 'skill_failed',
242
+ 'skill_executed',
243
+ 'skill_executed',
244
+ ]);
245
+ (0, vitest_1.expect)(queue[0].success).toBe(false);
246
+ (0, vitest_1.expect)(queue[1].success).toBe(false);
247
+ });
248
+ (0, vitest_1.it)('appends to an existing queue and caps it at 200', () => {
249
+ fs.mkdirSync(path.dirname(queueFile()), { recursive: true });
250
+ const existing = Array.from({ length: 199 }, (_, i) => ({
251
+ event_type: 'session_started',
252
+ skill_id: 'cli',
253
+ metadata: { i },
254
+ }));
255
+ fs.writeFileSync(queueFile(), JSON.stringify(existing));
256
+ sm.recordSkillComplete(makeOutput('x', 'completed'));
257
+ sm.recordSkillComplete(makeOutput('y', 'completed'));
258
+ const queue = readQueue();
259
+ (0, vitest_1.expect)(queue).toHaveLength(200);
260
+ (0, vitest_1.expect)(queue[queue.length - 1].skill_id).toBe('y');
261
+ // Oldest entry dropped once past the cap.
262
+ (0, vitest_1.expect)(queue[0].metadata?.i).toBe(1);
263
+ });
264
+ (0, vitest_1.it)('respects the ENTERPRISE_SKILLS_TELEMETRY=off opt-out', () => {
265
+ process.env.ENTERPRISE_SKILLS_TELEMETRY = 'off';
266
+ sm.recordSkillComplete(makeOutput('quiet', 'completed'));
267
+ (0, vitest_1.expect)(fs.existsSync(queueFile())).toBe(false);
268
+ });
269
+ (0, vitest_1.it)('never fails the execution on a corrupt queue file', () => {
270
+ fs.mkdirSync(path.dirname(queueFile()), { recursive: true });
271
+ fs.writeFileSync(queueFile(), '{corrupt');
272
+ const ctx = sm.recordSkillComplete(makeOutput('resilient', 'completed'));
273
+ (0, vitest_1.expect)(ctx.skills_executed).toHaveLength(1);
274
+ (0, vitest_1.expect)(readQueue()).toHaveLength(1);
275
+ });
276
+ });
277
+ });
278
+ //# sourceMappingURL=state-machine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-machine.test.js","sourceRoot":"","sources":["../../src/__tests__/state-machine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type HardeningFinding } from './hardening-sensors';
2
+ import { type StructuredTaskContract, type SubscriptionTier, type TaskDecision, type TaskRiskLevel } from './task-contract';
3
+ export interface SkillCatalogEntry {
4
+ skill_id: string;
5
+ display_name?: string;
6
+ description?: string;
7
+ category?: string;
8
+ trigger_phrases?: string[];
9
+ aliases?: string[];
10
+ }
11
+ export interface AdvisorInput {
12
+ request: string;
13
+ tier?: SubscriptionTier;
14
+ projectType?: string;
15
+ hasActiveSession: boolean;
16
+ hasAuthorityPack: boolean;
17
+ pendingSignals?: Array<{
18
+ signal: string;
19
+ condition: string;
20
+ }>;
21
+ }
22
+ export interface AdvisorDecision {
23
+ request: string;
24
+ intent: string;
25
+ risk_level: TaskRiskLevel;
26
+ tier: SubscriptionTier;
27
+ decision: TaskDecision;
28
+ recommended_skills: string[];
29
+ required_skills: string[];
30
+ blocked_by: string[];
31
+ reasoning: string[];
32
+ sensors: HardeningFinding[];
33
+ task_contract: StructuredTaskContract;
34
+ }
35
+ export declare class OrchestrationAdvisor {
36
+ private catalog;
37
+ constructor(catalog?: SkillCatalogEntry[]);
38
+ static fromRegistry(registryPath?: string): OrchestrationAdvisor;
39
+ advise(input: AdvisorInput): AdvisorDecision;
40
+ }
41
+ //# sourceMappingURL=advisor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisor.d.ts","sourceRoot":"","sources":["../src/advisor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,aAAa,CAAC;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAiJD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAsB;gBAEzB,OAAO,GAAE,iBAAiB,EAAoB;IAI1D,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,oBAAoB;IAMhE,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe;CAqE7C"}
@@ -0,0 +1,268 @@
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.OrchestrationAdvisor = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const yaml = __importStar(require("js-yaml"));
39
+ const hardening_sensors_1 = require("./hardening-sensors");
40
+ const task_contract_1 = require("./task-contract");
41
+ const DEFAULT_CATALOG = [
42
+ {
43
+ skill_id: 'session-start',
44
+ category: 'lifecycle',
45
+ trigger_phrases: ['start session', 'load context', 'begin session'],
46
+ },
47
+ {
48
+ skill_id: 'governance-enforcement',
49
+ category: 'governance',
50
+ trigger_phrases: ['governance', 'pre-code', 'policy', 'authority'],
51
+ },
52
+ {
53
+ skill_id: 'feature-builder',
54
+ category: 'agentic',
55
+ trigger_phrases: ['build feature', 'add feature', 'implement feature', 'new feature'],
56
+ },
57
+ {
58
+ skill_id: 'bug-hunter',
59
+ category: 'agentic',
60
+ trigger_phrases: ['bug', 'broken', 'debug', 'not working', 'fix issue'],
61
+ },
62
+ {
63
+ skill_id: 'refactor-agent',
64
+ category: 'agentic',
65
+ trigger_phrases: ['refactor', 'clean up', 'restructure', 'simplify'],
66
+ },
67
+ {
68
+ skill_id: 'code-review',
69
+ category: 'audit',
70
+ trigger_phrases: ['review', 'code review', 'check changes'],
71
+ },
72
+ {
73
+ skill_id: 'security-audit',
74
+ category: 'audit',
75
+ trigger_phrases: ['security', 'secret', 'auth', 'vulnerability', 'credential'],
76
+ },
77
+ {
78
+ skill_id: 'test-orchestrator',
79
+ category: 'agentic',
80
+ trigger_phrases: ['test', 'tests', 'coverage', 'test suite'],
81
+ },
82
+ {
83
+ skill_id: 'pre-deploy-check',
84
+ category: 'audit',
85
+ trigger_phrases: ['deploy', 'release', 'ship', 'production', 'publish'],
86
+ },
87
+ {
88
+ skill_id: 'anti-hallucination-agent',
89
+ category: 'audit',
90
+ trigger_phrases: ['verify', 'grounding', 'citations', 'hallucination', 'claims'],
91
+ },
92
+ {
93
+ skill_id: 'report-verifier',
94
+ category: 'governance',
95
+ trigger_phrases: ['report', 'statistics', 'numbers', 'audit result'],
96
+ },
97
+ {
98
+ skill_id: 'rollback-manager',
99
+ category: 'agentic',
100
+ trigger_phrases: ['rollback', 'revert', 'undo', 'restore'],
101
+ },
102
+ {
103
+ skill_id: 'project-manager',
104
+ category: 'agentic',
105
+ trigger_phrases: [
106
+ 'project status',
107
+ 'project manager',
108
+ 'what should I work on',
109
+ 'project health',
110
+ 'skill dashboard',
111
+ 'project overview',
112
+ 'health check',
113
+ ],
114
+ },
115
+ {
116
+ skill_id: 'project-initiator',
117
+ category: 'lifecycle',
118
+ trigger_phrases: [
119
+ 'new project',
120
+ 'start new project',
121
+ 'project initiator',
122
+ 'greenfield',
123
+ 'what am I building',
124
+ 'initiator',
125
+ ],
126
+ },
127
+ ];
128
+ function unique(values) {
129
+ return Array.from(new Set(values.filter(Boolean)));
130
+ }
131
+ function scoreSkill(skill, request) {
132
+ const text = request.toLowerCase();
133
+ const haystack = [
134
+ skill.skill_id,
135
+ skill.display_name ?? '',
136
+ skill.description ?? '',
137
+ ...(skill.trigger_phrases ?? []),
138
+ ...(skill.aliases ?? []),
139
+ ].join(' ').toLowerCase();
140
+ let score = 0;
141
+ for (const token of text.split(/[^a-z0-9-]+/).filter(t => t.length > 2)) {
142
+ if (haystack.includes(token))
143
+ score += 1;
144
+ }
145
+ for (const trigger of skill.trigger_phrases ?? []) {
146
+ if (text.includes(trigger.toLowerCase()))
147
+ score += 5;
148
+ }
149
+ return score;
150
+ }
151
+ function deriveIntent(request) {
152
+ const text = request.toLowerCase();
153
+ if (/(bug|broken|debug|not working|error|failed)/.test(text))
154
+ return 'bugfix';
155
+ if (/(build|add|implement|create|feature)/.test(text))
156
+ return 'feature_build';
157
+ if (/(refactor|clean up|restructure|simplify)/.test(text))
158
+ return 'refactor';
159
+ if (/(deploy|release|ship|publish|production)/.test(text))
160
+ return 'release';
161
+ if (/(security|auth|secret|credential|vulnerability)/.test(text))
162
+ return 'security';
163
+ if (/(test|coverage|qa|verify)/.test(text))
164
+ return 'verification';
165
+ if (/(strategy|architecture|schema|design)/.test(text))
166
+ return 'architecture_or_strategy';
167
+ return 'general_engineering';
168
+ }
169
+ function deriveRisk(request, sensors) {
170
+ if (sensors.some(sensor => sensor.severity === 'critical'))
171
+ return 'critical';
172
+ if (/(deploy|release|production|auth|payment|secret|schema|migration)/i.test(request))
173
+ return 'high';
174
+ if (/(refactor|test|verify|security|review)/i.test(request))
175
+ return 'medium';
176
+ return 'low';
177
+ }
178
+ function decisionFromRiskAndSensors(tier, risk, sensors) {
179
+ if (sensors.some(sensor => sensor.action === 'block'))
180
+ return 'block';
181
+ if (tier === 'enterprise' && (risk === 'high' || risk === 'critical'))
182
+ return 'needs_approval';
183
+ if (sensors.some(sensor => sensor.action === 'require'))
184
+ return 'require';
185
+ if (tier === 'team' && risk === 'high')
186
+ return 'require';
187
+ return risk === 'low' ? 'suggest' : 'require';
188
+ }
189
+ class OrchestrationAdvisor {
190
+ catalog;
191
+ constructor(catalog = DEFAULT_CATALOG) {
192
+ this.catalog = catalog.length > 0 ? catalog : DEFAULT_CATALOG;
193
+ }
194
+ static fromRegistry(registryPath) {
195
+ if (!registryPath || !fs.existsSync(registryPath))
196
+ return new OrchestrationAdvisor();
197
+ const parsed = yaml.load(fs.readFileSync(registryPath, 'utf-8'));
198
+ return new OrchestrationAdvisor(parsed.skills ?? DEFAULT_CATALOG);
199
+ }
200
+ advise(input) {
201
+ const tier = input.tier ?? 'community';
202
+ const sensors = (0, hardening_sensors_1.runHardeningSensors)({
203
+ request: input.request,
204
+ hasActiveSession: input.hasActiveSession,
205
+ hasAuthorityPack: input.hasAuthorityPack,
206
+ recentSignals: input.pendingSignals,
207
+ });
208
+ const intent = deriveIntent(input.request);
209
+ const riskLevel = deriveRisk(input.request, sensors);
210
+ const ranked = this.catalog
211
+ .map(skill => ({ skill, score: scoreSkill(skill, input.request) }))
212
+ .filter(item => item.score > 0)
213
+ .sort((a, b) => b.score - a.score)
214
+ .map(item => item.skill.skill_id);
215
+ const sensorSkills = sensors.map(sensor => sensor.recommended_skill ?? '');
216
+ const requiredSkills = unique([
217
+ ...sensors.filter(sensor => sensor.action === 'require' || sensor.action === 'block').map(sensor => sensor.recommended_skill ?? ''),
218
+ riskLevel === 'high' || riskLevel === 'critical' ? 'governance-enforcement' : '',
219
+ ]);
220
+ const recommendedSkills = unique([
221
+ ...requiredSkills,
222
+ ...sensorSkills,
223
+ ...ranked.slice(0, 5),
224
+ intent === 'feature_build' ? 'feature-builder' : '',
225
+ intent === 'bugfix' ? 'bug-hunter' : '',
226
+ intent === 'refactor' ? 'refactor-agent' : '',
227
+ intent === 'release' ? 'pre-deploy-check' : '',
228
+ intent === 'security' ? 'security-audit' : '',
229
+ intent === 'verification' ? 'test-orchestrator' : '',
230
+ ]);
231
+ const decision = decisionFromRiskAndSensors(tier, riskLevel, sensors);
232
+ const blockedBy = sensors.filter(sensor => sensor.action === 'block').map(sensor => sensor.message);
233
+ const reasoning = [
234
+ `Intent classified as ${intent}.`,
235
+ `Risk classified as ${riskLevel}.`,
236
+ `Tier policy evaluated as ${tier}.`,
237
+ `${sensors.length} hardening sensor(s) fired.`,
238
+ recommendedSkills.length > 0
239
+ ? `Recommended harness modules: ${recommendedSkills.join(', ')}.`
240
+ : 'No direct skill match found; default to governance-enforcement and session-start.',
241
+ ];
242
+ const taskContract = (0, task_contract_1.buildStructuredTaskContract)({
243
+ request: input.request,
244
+ intent,
245
+ riskLevel,
246
+ tier,
247
+ decision,
248
+ recommendedSkills: recommendedSkills.length > 0 ? recommendedSkills : ['governance-enforcement', 'session-start'],
249
+ requiredSkills,
250
+ sensors,
251
+ });
252
+ return {
253
+ request: input.request,
254
+ intent,
255
+ risk_level: riskLevel,
256
+ tier,
257
+ decision,
258
+ recommended_skills: taskContract.recommended_skills,
259
+ required_skills: taskContract.required_skills,
260
+ blocked_by: blockedBy,
261
+ reasoning,
262
+ sensors,
263
+ task_contract: taskContract,
264
+ };
265
+ }
266
+ }
267
+ exports.OrchestrationAdvisor = OrchestrationAdvisor;
268
+ //# sourceMappingURL=advisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisor.js","sourceRoot":"","sources":["../src/advisor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ApiResponse, ExecuteRequest, CompleteRequest, GateRequest, SignalRequest, DashboardResponse } from './types';
2
+ export interface SupabaseClient {
3
+ from(table: string): SupabaseQuery;
4
+ }
5
+ interface SupabaseQuery {
6
+ insert(data: Record<string, unknown> | Record<string, unknown>[]): SupabaseQuery;
7
+ select(columns?: string): SupabaseQuery;
8
+ update(data: Record<string, unknown>): SupabaseQuery;
9
+ eq(column: string, value: unknown): SupabaseQuery;
10
+ in(column: string, values: unknown[]): SupabaseQuery;
11
+ order(column: string, options?: {
12
+ ascending?: boolean;
13
+ }): SupabaseQuery;
14
+ limit(count: number): SupabaseQuery;
15
+ gte(column: string, value: unknown): SupabaseQuery;
16
+ single(): SupabaseQuery;
17
+ then(resolve: (result: {
18
+ data: unknown;
19
+ error: unknown;
20
+ }) => void): void;
21
+ }
22
+ export declare function handleExecute(supabase: SupabaseClient, licenseKey: string, body: ExecuteRequest): Promise<ApiResponse>;
23
+ export declare function handleComplete(supabase: SupabaseClient, licenseKey: string, body: CompleteRequest): Promise<ApiResponse>;
24
+ export declare function handleGate(supabase: SupabaseClient, licenseKey: string, body: GateRequest): Promise<ApiResponse>;
25
+ export declare function handleSignal(supabase: SupabaseClient, licenseKey: string, body: SignalRequest): Promise<ApiResponse>;
26
+ export declare function handleDashboard(supabase: SupabaseClient, licenseKey: string, sessionId?: string): Promise<ApiResponse<DashboardResponse>>;
27
+ export {};
28
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/api/handlers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,WAAW,EACX,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;CACpC;AAED,UAAU,aAAa;IACrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,aAAa,CAAC;IACjF,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC;IACrD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC;IAClD,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;IACrD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC;IACxE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IACpC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,CAAC;IACnD,MAAM,IAAI,aAAa,CAAC;IACxB,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAC1E;AAgBD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,WAAW,CAAC,CA4CtB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,WAAW,CAAC,CA+EtB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,WAAW,CAAC,CA+DtB;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAiDtB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CA6DzC"}