@x12i/analytix-functions 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,105 @@
1
+ import { AnalytixRunResult } from "@x12i/analytix-contracts";
2
+ export interface JsFunctionSecurityPolicy {
3
+ allowSourceDbAccess: boolean;
4
+ allowedSourceRefs?: string[];
5
+ allowAnalytixDataAccess: boolean;
6
+ allowNetwork: boolean;
7
+ allowFileSystem: boolean;
8
+ allowDynamicImport: boolean;
9
+ allowedImports?: string[];
10
+ }
11
+ export interface JsAnalyticFunctionDefinition {
12
+ analyticFunctionId: string;
13
+ version: number;
14
+ status: string;
15
+ execution: {
16
+ type: "js";
17
+ language: "javascript" | "typescript";
18
+ runtime: string;
19
+ entry: string;
20
+ timeoutMs: number;
21
+ memoryMb: number;
22
+ outputMaxBytes: number;
23
+ };
24
+ input: {
25
+ analyticRefs?: string[];
26
+ schema?: any;
27
+ };
28
+ code: {
29
+ sourceMode: "inline" | "registry";
30
+ source: string;
31
+ fingerprint: string;
32
+ };
33
+ output: {
34
+ shape: "scalar" | "table" | "object" | "series" | "matrix" | "markdown" | "text" | "reportSection";
35
+ keyFields?: string[];
36
+ numericFields?: string[];
37
+ schema?: any;
38
+ };
39
+ security: JsFunctionSecurityPolicy;
40
+ }
41
+ export interface FuncxAnalyticFunctionDefinition {
42
+ analyticFunctionId: string;
43
+ version: number;
44
+ status: string;
45
+ execution: {
46
+ type: "funcx";
47
+ funcxFunctionId: string;
48
+ responseFormat: "markdown" | "json" | "text";
49
+ model: string;
50
+ includeUsage?: boolean;
51
+ estimateValue?: boolean;
52
+ timeoutMs?: number;
53
+ retries?: number;
54
+ };
55
+ input: {
56
+ fromAnalyticRefs?: string[];
57
+ template?: {
58
+ goal: string;
59
+ [key: string]: any;
60
+ };
61
+ };
62
+ dataReduction?: {
63
+ mode: "topN" | "summary" | "schemaOnly" | "sampling" | "none";
64
+ topN?: number;
65
+ sampleRate?: number;
66
+ maxFieldsPerRow?: number;
67
+ redactFields?: string[];
68
+ maxInputBytes: number;
69
+ };
70
+ output: {
71
+ shape: "scalar" | "table" | "object" | "series" | "matrix" | "markdown" | "text" | "reportSection";
72
+ };
73
+ }
74
+ export type AnalytixFunctionContext = {
75
+ params: Record<string, any>;
76
+ input: any;
77
+ analytix: {
78
+ run: (id: string, params?: Record<string, any>) => Promise<AnalytixRunResult>;
79
+ getCachedResult: (id: string, params?: Record<string, any>) => Promise<AnalytixRunResult | null>;
80
+ getTierOutput: (tierId: string, params?: Record<string, any>) => Promise<any>;
81
+ getTrend: (id: string, params?: any) => Promise<any>;
82
+ runMatrix: (matrixId: string, params?: Record<string, any>) => Promise<any>;
83
+ };
84
+ source?: {
85
+ aggregate: (collection: string, pipeline: any[]) => Promise<any[]>;
86
+ find: (collection: string, filter: any, options?: any) => Promise<any[]>;
87
+ };
88
+ logger: {
89
+ info: (msg: string, data?: any) => void;
90
+ warn: (msg: string, data?: any) => void;
91
+ error: (msg: string, data?: any) => void;
92
+ };
93
+ utils: {
94
+ hash: (value: any) => string;
95
+ now: () => string;
96
+ };
97
+ };
98
+ export declare class AnalytixFunctionRunner {
99
+ static runJs(definition: JsAnalyticFunctionDefinition, context: Omit<AnalytixFunctionContext, "source"> & {
100
+ source?: any;
101
+ }, callStack?: string[], mockMode?: boolean): Promise<any>;
102
+ static validateShape(value: any, output: JsAnalyticFunctionDefinition["output"]): void;
103
+ static runFuncx(definition: FuncxAnalyticFunctionDefinition, context: any, envelopeInput: any, mockMode?: boolean): Promise<any>;
104
+ }
105
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,375 @@
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.AnalytixFunctionRunner = void 0;
37
+ const vm = __importStar(require("node:vm"));
38
+ class AnalytixFunctionRunner {
39
+ static async runJs(definition, context, callStack = [], mockMode = false) {
40
+ // 1. Recursion guard
41
+ if (callStack.includes(definition.analyticFunctionId)) {
42
+ throw new Error("TIER_CYCLE_DETECTED");
43
+ }
44
+ const newStack = [...callStack, definition.analyticFunctionId];
45
+ if (newStack.length > 8) {
46
+ throw new Error("TIMEOUT_EXCEEDED");
47
+ }
48
+ // 2. Capabilities Check
49
+ const security = definition.security;
50
+ let sourceAccess = undefined;
51
+ if (security?.allowSourceDbAccess) {
52
+ sourceAccess = {
53
+ aggregate: async (collection, pipeline) => {
54
+ if (context.source) {
55
+ return context.source.aggregate(collection, pipeline);
56
+ }
57
+ throw new Error("SOURCE_CONNECTION_FAILED");
58
+ },
59
+ find: async (collection, filter, options) => {
60
+ if (context.source) {
61
+ return context.source.find(collection, filter, options);
62
+ }
63
+ throw new Error("SOURCE_CONNECTION_FAILED");
64
+ },
65
+ };
66
+ }
67
+ const logs = [];
68
+ const sandboxLogger = {
69
+ info: (m, d) => {
70
+ logs.push({ level: "info", message: m, data: d, at: new Date().toISOString() });
71
+ context.logger.info(m, d);
72
+ },
73
+ warn: (m, d) => {
74
+ logs.push({ level: "warn", message: m, data: d, at: new Date().toISOString() });
75
+ context.logger.warn(m, d);
76
+ },
77
+ error: (m, d) => {
78
+ logs.push({ level: "error", message: m, data: d, at: new Date().toISOString() });
79
+ context.logger.error(m, d);
80
+ },
81
+ };
82
+ const sandboxCtx = {
83
+ params: context.params,
84
+ input: context.input,
85
+ analytix: {
86
+ run: async (id, params) => {
87
+ // Wrapped run with recursion checking
88
+ const analytic = await context.analytix.run(id, params);
89
+ return analytic;
90
+ },
91
+ getCachedResult: context.analytix.getCachedResult,
92
+ getTierOutput: context.analytix.getTierOutput,
93
+ getTrend: context.analytix.getTrend,
94
+ runMatrix: context.analytix.runMatrix,
95
+ },
96
+ logger: sandboxLogger,
97
+ utils: context.utils,
98
+ };
99
+ if (sourceAccess) {
100
+ sandboxCtx.source = sourceAccess;
101
+ }
102
+ // 3. VM Sandbox Execution
103
+ if (mockMode) {
104
+ console.warn("[mock:sandbox] JS function executed with node:vm — not a production security boundary (mock mode only)");
105
+ }
106
+ // Process source code to find entry function if written as export default async function
107
+ const normalizedSource = definition.code.source
108
+ .replace(/export\s+default\s+async\s+function\s+(\w*)/, "async function run")
109
+ .replace(/export\s+default\s+function\s+(\w*)/, "function run");
110
+ const executableCode = `
111
+ ${normalizedSource}
112
+ const runFn = typeof run !== 'undefined' ? run : null;
113
+ if (!runFn) {
114
+ throw new Error("No run function found.");
115
+ }
116
+ runFn(ctx);
117
+ `;
118
+ const sandbox = {
119
+ ctx: sandboxCtx,
120
+ console: {
121
+ log: (m, ...a) => sandboxLogger.info(String(m) + a.join(" ")),
122
+ warn: (m, ...a) => sandboxLogger.warn(String(m) + a.join(" ")),
123
+ error: (m, ...a) => sandboxLogger.error(String(m) + a.join(" ")),
124
+ },
125
+ };
126
+ // Strict validation check for dynamic imports and forbidden globals
127
+ if (normalizedSource.includes("import(") && !security?.allowDynamicImport) {
128
+ throw new Error("SANDBOX_VIOLATION");
129
+ }
130
+ try {
131
+ vm.createContext(sandbox);
132
+ const script = new vm.Script(executableCode);
133
+ let result = script.runInContext(sandbox, {
134
+ timeout: definition.execution.timeoutMs || 5000,
135
+ });
136
+ if (result != null && typeof result.then === "function") {
137
+ result = await result;
138
+ }
139
+ // Validate Output Size
140
+ const serialized = JSON.stringify(result);
141
+ if (serialized && serialized.length > (definition.execution.outputMaxBytes || 2000000)) {
142
+ throw new Error("OUTPUT_SIZE_EXCEEDED");
143
+ }
144
+ // Validate Output Shape
145
+ this.validateShape(result, definition.output);
146
+ return result;
147
+ }
148
+ catch (e) {
149
+ if (e.message === "Script execution timed out.") {
150
+ throw new Error("TIMEOUT_EXCEEDED");
151
+ }
152
+ if (e.message === "TIER_CYCLE_DETECTED" ||
153
+ e.message === "OUTPUT_SIZE_EXCEEDED" ||
154
+ e.message === "OUTPUT_VALIDATION_FAILED") {
155
+ throw e;
156
+ }
157
+ // Any capability sandbox violations destructuring ctx.source
158
+ if (e.message.includes("Cannot destructure property") || e.message.includes("undefined")) {
159
+ throw new Error("SANDBOX_VIOLATION");
160
+ }
161
+ throw e;
162
+ }
163
+ }
164
+ static validateShape(value, output) {
165
+ const shape = output.shape;
166
+ if (shape === "scalar") {
167
+ if (typeof value !== "number" &&
168
+ typeof value !== "string" &&
169
+ typeof value !== "boolean" &&
170
+ value !== null) {
171
+ throw new Error("OUTPUT_VALIDATION_FAILED");
172
+ }
173
+ }
174
+ else if (shape === "table") {
175
+ if (!Array.isArray(value)) {
176
+ throw new Error("OUTPUT_VALIDATION_FAILED");
177
+ }
178
+ for (const row of value) {
179
+ if (typeof row !== "object" || row === null) {
180
+ throw new Error("OUTPUT_VALIDATION_FAILED");
181
+ }
182
+ if (output.keyFields) {
183
+ for (const key of output.keyFields) {
184
+ if (!(key in row)) {
185
+ throw new Error("OUTPUT_VALIDATION_FAILED");
186
+ }
187
+ }
188
+ }
189
+ if (output.numericFields) {
190
+ for (const num of output.numericFields) {
191
+ if (num in row && typeof row[num] !== "number" && row[num] !== null) {
192
+ throw new Error("OUTPUT_VALIDATION_FAILED");
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+ else if (shape === "series") {
199
+ if (!Array.isArray(value)) {
200
+ throw new Error("OUTPUT_VALIDATION_FAILED");
201
+ }
202
+ for (const item of value) {
203
+ if (typeof item !== "object" || item === null || typeof item.t !== "string" || typeof item.v !== "number") {
204
+ throw new Error("OUTPUT_VALIDATION_FAILED");
205
+ }
206
+ }
207
+ }
208
+ else if (shape === "object" || shape === "reportSection") {
209
+ if (typeof value !== "object" || value === null) {
210
+ throw new Error("OUTPUT_VALIDATION_FAILED");
211
+ }
212
+ }
213
+ }
214
+ static async runFuncx(definition, context, envelopeInput, mockMode = false) {
215
+ const warnings = [];
216
+ // Apply data reduction policy
217
+ let reducedInput = JSON.parse(JSON.stringify(envelopeInput));
218
+ const policy = definition.dataReduction;
219
+ if (policy) {
220
+ // 1. RedactFields
221
+ if (policy.redactFields) {
222
+ for (const key of Object.keys(reducedInput)) {
223
+ if (policy.redactFields.includes(key)) {
224
+ delete reducedInput[key];
225
+ }
226
+ else if (typeof reducedInput[key] === "object" && reducedInput[key] !== null) {
227
+ for (const redact of policy.redactFields) {
228
+ if (redact in reducedInput[key]) {
229
+ delete reducedInput[key][redact];
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ // 2. Reduce modes
236
+ for (const key of Object.keys(reducedInput)) {
237
+ const val = reducedInput[key];
238
+ if (Array.isArray(val)) {
239
+ if (policy.mode === "topN" && policy.topN !== undefined) {
240
+ const originalCount = val.length;
241
+ reducedInput[key] = val.slice(0, policy.topN);
242
+ if (originalCount > policy.topN) {
243
+ warnings.push("input-truncated-to-fit-budget");
244
+ }
245
+ }
246
+ else if (policy.mode === "summary") {
247
+ const sum = val.reduce((acc, item) => acc + (typeof item === "number" ? item : 0), 0);
248
+ reducedInput[key] = { count: val.length, sum, avg: val.length ? sum / val.length : 0 };
249
+ }
250
+ else if (policy.mode === "schemaOnly") {
251
+ reducedInput[key] = { _schemaOnly: true, rowCount: val.length };
252
+ }
253
+ else if (policy.mode === "sampling" && policy.sampleRate !== undefined) {
254
+ const originalCount = val.length;
255
+ const sampled = val.filter((_, idx) => (idx % Math.round(1 / policy.sampleRate)) === 0);
256
+ reducedInput[key] = { sampled: true, sampleRate: policy.sampleRate, originalCount, data: sampled };
257
+ }
258
+ }
259
+ }
260
+ // Check maxInputBytes limits
261
+ const sizeBytes = Buffer.byteLength(JSON.stringify(reducedInput));
262
+ if (sizeBytes > policy.maxInputBytes) {
263
+ warnings.push("input-truncated-to-fit-budget");
264
+ // Truncate fallback
265
+ for (const key of Object.keys(reducedInput)) {
266
+ if (Array.isArray(reducedInput[key])) {
267
+ reducedInput[key] = reducedInput[key].slice(0, 1);
268
+ }
269
+ }
270
+ }
271
+ }
272
+ const envelope = {
273
+ goal: definition.input?.template?.goal || "Goal",
274
+ input: reducedInput,
275
+ context: {
276
+ tenantId: context.tenantId,
277
+ domainId: context.domainId,
278
+ agentId: context.agentId,
279
+ },
280
+ args: {},
281
+ attribution: {
282
+ projectId: "analytix",
283
+ analyticFunctionId: definition.analyticFunctionId,
284
+ traceId: context.traceId || "trace-id",
285
+ },
286
+ };
287
+ // Live FuncX via @x12i/funcx when enabled
288
+ if (!mockMode && (process.env.FUNCX_LIVE_TESTS === "1" || process.env.FUNCX_ACTIVIX_ENABLED === "1")) {
289
+ try {
290
+ const { createClient } = await import("@x12i/funcx");
291
+ const { run: runFuncxSkill } = await import("@x12i/funcx/functions");
292
+ const backend = process.env.USE_OPENROUTER === "true" ||
293
+ process.env.OPENROUTER_API_KEY ||
294
+ process.env.OPEN_ROUTER_KEY
295
+ ? "openrouter"
296
+ : "llama-cpp";
297
+ const client = createClient({
298
+ backend,
299
+ openrouter: backend === "openrouter"
300
+ ? { apiKey: (process.env.OPENROUTER_API_KEY || process.env.OPEN_ROUTER_KEY) }
301
+ : undefined,
302
+ });
303
+ const liveResult = await runFuncxSkill(definition.execution.funcxFunctionId, {
304
+ goal: envelope.goal,
305
+ input: reducedInput,
306
+ context: envelope.context,
307
+ }, {
308
+ client,
309
+ model: definition.execution.model,
310
+ includeUsage: definition.execution.includeUsage ?? true,
311
+ });
312
+ const payload = liveResult;
313
+ const output = payload?.result ?? liveResult;
314
+ console.info("[analytix:funcx] live FuncX execution completed", {
315
+ funcxFunctionId: definition.execution.funcxFunctionId,
316
+ });
317
+ return {
318
+ output,
319
+ trace: {
320
+ funcxFunctionId: definition.execution.funcxFunctionId,
321
+ model: definition.execution.model,
322
+ usage: payload.usage
323
+ ? {
324
+ inputTokens: payload.usage.promptTokens ?? 0,
325
+ outputTokens: payload.usage.completionTokens ?? 0,
326
+ totalTokens: payload.usage.totalTokens ?? 0,
327
+ }
328
+ : undefined,
329
+ retries: definition.execution.retries ?? 0,
330
+ },
331
+ warnings,
332
+ };
333
+ }
334
+ catch (err) {
335
+ console.warn("[analytix:funcx] live FuncX failed, falling back to mock:", err.message);
336
+ }
337
+ }
338
+ // Simulated FuncX runtime execution call (mock mode or live fallback)
339
+ if (mockMode) {
340
+ console.warn("[mock:funcx] FuncX call simulated — @x12i/funcx SDK not connected (mock mode only)", {
341
+ funcxFunctionId: definition.execution.funcxFunctionId,
342
+ model: definition.execution.model,
343
+ });
344
+ }
345
+ if (definition.execution.funcxFunctionId === "missing-func") {
346
+ throw new Error("FUNCX_FUNCTION_NOT_FOUND");
347
+ }
348
+ // Simulate standard response format
349
+ let mockOutput = "Narrative text generated by FuncX";
350
+ if (definition.output.shape === "object") {
351
+ mockOutput = { summary: "Prompt result", metrics: { total: 42 } };
352
+ }
353
+ else if (definition.output.shape === "reportSection") {
354
+ mockOutput = {
355
+ title: definition.analyticFunctionId,
356
+ blocks: [{ type: "markdown", content: "Generative summary report block" }],
357
+ };
358
+ }
359
+ return {
360
+ output: mockOutput,
361
+ trace: {
362
+ funcxFunctionId: definition.execution.funcxFunctionId,
363
+ model: definition.execution.model,
364
+ usage: { inputTokens: 120, outputTokens: 80, totalTokens: 200 },
365
+ cost: { amount: 0.004, currency: "USD", estimated: true },
366
+ retries: 0,
367
+ durationMs: 350,
368
+ validation: { valid: true },
369
+ },
370
+ warnings,
371
+ };
372
+ }
373
+ }
374
+ exports.AnalytixFunctionRunner = AnalytixFunctionRunner;
375
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@x12i/analytix-functions",
3
+ "version": "1.0.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "dependencies": {
7
+ "@x12i/funcx": "^4.9.13",
8
+ "@x12i/analytix-contracts": "^1.0.0"
9
+ },
10
+ "optionalDependencies": {
11
+ "@x12i/funcx": "^4.9.13"
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public",
18
+ "registry": "https://registry.npmjs.org/"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.json"
22
+ }
23
+ }