@polpo-ai/core 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/approval-manager.d.ts +1 -0
- package/dist/approval-manager.d.ts.map +1 -1
- package/dist/approval-manager.js +7 -9
- package/dist/approval-manager.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/loop/contract.test.d.ts +2 -0
- package/dist/loop/contract.test.d.ts.map +1 -0
- package/dist/loop/contract.test.js +55 -0
- package/dist/loop/contract.test.js.map +1 -0
- package/dist/loop/expression.d.ts +29 -0
- package/dist/loop/expression.d.ts.map +1 -0
- package/dist/loop/expression.js +215 -0
- package/dist/loop/expression.js.map +1 -0
- package/dist/loop/expression.test.d.ts +2 -0
- package/dist/loop/expression.test.d.ts.map +1 -0
- package/dist/loop/expression.test.js +55 -0
- package/dist/loop/expression.test.js.map +1 -0
- package/dist/loop/hooks.d.ts +132 -0
- package/dist/loop/hooks.d.ts.map +1 -0
- package/dist/loop/hooks.js +85 -0
- package/dist/loop/hooks.js.map +1 -0
- package/dist/loop/pipeline.d.ts +38 -0
- package/dist/loop/pipeline.d.ts.map +1 -0
- package/dist/loop/pipeline.js +101 -0
- package/dist/loop/pipeline.js.map +1 -0
- package/dist/loop/pipeline.test.d.ts +2 -0
- package/dist/loop/pipeline.test.d.ts.map +1 -0
- package/dist/loop/pipeline.test.js +103 -0
- package/dist/loop/pipeline.test.js.map +1 -0
- package/dist/loop/runner.d.ts +44 -0
- package/dist/loop/runner.d.ts.map +1 -0
- package/dist/loop/runner.js +215 -0
- package/dist/loop/runner.js.map +1 -0
- package/dist/loop/runner.test.d.ts +2 -0
- package/dist/loop/runner.test.d.ts.map +1 -0
- package/dist/loop/runner.test.js +124 -0
- package/dist/loop/runner.test.js.map +1 -0
- package/dist/loop/selector.d.ts +12 -0
- package/dist/loop/selector.d.ts.map +1 -0
- package/dist/loop/selector.js +44 -0
- package/dist/loop/selector.js.map +1 -0
- package/dist/loop/selector.test.d.ts +2 -0
- package/dist/loop/selector.test.d.ts.map +1 -0
- package/dist/loop/selector.test.js +45 -0
- package/dist/loop/selector.test.js.map +1 -0
- package/dist/loop/types.d.ts +98 -0
- package/dist/loop/types.d.ts.map +1 -0
- package/dist/loop/types.js +15 -0
- package/dist/loop/types.js.map +1 -0
- package/dist/schemas.d.ts +55 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +99 -0
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,6 +16,7 @@ export declare class ApprovalManager {
|
|
|
16
16
|
private store;
|
|
17
17
|
private timers;
|
|
18
18
|
private registeredGateRules;
|
|
19
|
+
private evaluator;
|
|
19
20
|
constructor(ctx: OrchestratorContext, store: ApprovalStore);
|
|
20
21
|
/** Initialize: register hooks for all configured approval gates. */
|
|
21
22
|
init(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-manager.d.ts","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAgB,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"approval-manager.d.ts","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAgB,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGhF;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAMxB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK;IANf,OAAO,CAAC,MAAM,CAAoD;IAClE,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,SAAS,CAAiC;gBAGxC,GAAG,EAAE,mBAAmB,EACxB,KAAK,EAAE,aAAa;IAG9B,oEAAoE;IAC9D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,YAAY;IAiDpB,OAAO,CAAC,aAAa;IAgBf,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAI/F,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA8CjG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;YAclG,OAAO;YAsCP,cAAc;IAyBtB,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIxC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAMlE,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,IAAI,IAAI;CAOhB"}
|
package/dist/approval-manager.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { nanoid } from "nanoid";
|
|
2
|
+
import { SafeExpressionEvaluator } from "./loop/expression.js";
|
|
2
3
|
/**
|
|
3
4
|
* Manages approval gates — both automatic (condition-based) and human (blocking).
|
|
4
5
|
*
|
|
@@ -14,6 +15,7 @@ export class ApprovalManager {
|
|
|
14
15
|
store;
|
|
15
16
|
timers = new Map();
|
|
16
17
|
registeredGateRules = new Set();
|
|
18
|
+
evaluator = new SafeExpressionEvaluator();
|
|
17
19
|
constructor(ctx, store) {
|
|
18
20
|
this.ctx = ctx;
|
|
19
21
|
this.store = store;
|
|
@@ -237,15 +239,11 @@ export class ApprovalManager {
|
|
|
237
239
|
}
|
|
238
240
|
}
|
|
239
241
|
evaluateCondition(expression, data) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
catch {
|
|
247
|
-
return false;
|
|
248
|
-
}
|
|
242
|
+
// SAFE: no `new Function`/eval. Expressions can read `data`, `task`,
|
|
243
|
+
// `mission` (the hook payload + its task/mission), combined with
|
|
244
|
+
// comparisons/boolean logic only — nothing else.
|
|
245
|
+
const d = this.isRecord(data) ? data : {};
|
|
246
|
+
return this.evaluator.evaluate(expression, { data: d, task: d.task, mission: d.mission });
|
|
249
247
|
}
|
|
250
248
|
isRecord(v) {
|
|
251
249
|
return typeof v === "object" && v !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-manager.js","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"approval-manager.js","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -60,4 +60,15 @@ export { estimateTokens, estimateMessagesTokens, shouldCompact, pruneToolOutputs
|
|
|
60
60
|
export type { CompactionConfig, CompactionEvent, OnCompactionFn, SummarizeFn, CompactionInput, CompactionResult, } from "./context-compactor.js";
|
|
61
61
|
export { EVENT_CATALOG } from "./events-catalog.js";
|
|
62
62
|
export type { EventCatalogGroup, EventCatalogEntry } from "./events-catalog.js";
|
|
63
|
+
export { evaluateExpression, SafeExpressionEvaluator } from "./loop/expression.js";
|
|
64
|
+
export type { AgentLoopConfig, ContextBag, LoopConfig, Pipeline, Step, SwitchCase, Condition } from "./loop/types.js";
|
|
65
|
+
export { isLoopStep, isParallelStep, isSwitchStep, isHumanStep } from "./loop/types.js";
|
|
66
|
+
export { LoopHookRegistry } from "./loop/hooks.js";
|
|
67
|
+
export type { LoopBeforeHookResult, LoopHook, LoopHookContext, LoopHookHandler, LoopHookPayloads, LoopHookPhase, LoopHookRegistration, LoopRunStatus, LoopRuntimeConfig, LoopStopReason, LoopToolCall, LoopToolResult, } from "./loop/hooks.js";
|
|
68
|
+
export { LoopRunner } from "./loop/runner.js";
|
|
69
|
+
export type { LoopModelInput, LoopModelResult, LoopRunnerOptions, LoopRunResult } from "./loop/runner.js";
|
|
70
|
+
export { resolveLoopSelection, resolveActiveLoopTools } from "./loop/selector.js";
|
|
71
|
+
export type { LoopSelection } from "./loop/selector.js";
|
|
72
|
+
export { PipelineExecutor } from "./loop/pipeline.js";
|
|
73
|
+
export type { PipelineExecutionResult, PipelineExecutorOptions, PipelineHumanResult, PipelineLoopResult, PipelineTraceEvent, } from "./loop/pipeline.js";
|
|
63
74
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -45,4 +45,12 @@ export { withRetry, isTransientError } from "./retry.js";
|
|
|
45
45
|
// ── Context Compaction ──────────────────────────────────────────────────
|
|
46
46
|
export { estimateTokens, estimateMessagesTokens, shouldCompact, pruneToolOutputs, compactIfNeeded, getCompactionPrompt, PRUNE_PROTECT, PRUNE_MINIMUM, TRIGGER_THRESHOLD, TARGET_AFTER, } from "./context-compactor.js";
|
|
47
47
|
export { EVENT_CATALOG } from "./events-catalog.js";
|
|
48
|
+
// Configurable agentic loops (design: loop collection + pipeline + hooks). P0:
|
|
49
|
+
// the safe expression evaluator (replaces the gates' `new Function`) + config types.
|
|
50
|
+
export { evaluateExpression, SafeExpressionEvaluator } from "./loop/expression.js";
|
|
51
|
+
export { isLoopStep, isParallelStep, isSwitchStep, isHumanStep } from "./loop/types.js";
|
|
52
|
+
export { LoopHookRegistry } from "./loop/hooks.js";
|
|
53
|
+
export { LoopRunner } from "./loop/runner.js";
|
|
54
|
+
export { resolveLoopSelection, resolveActiveLoopTools } from "./loop/selector.js";
|
|
55
|
+
export { PipelineExecutor } from "./loop/pipeline.js";
|
|
48
56
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,cAAc,YAAY,CAAC;AAK3B,4EAA4E;AAC5E,cAAc,aAAa,CAAC;AAE5B,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,4EAA4E;AAC5E,cAAc,cAAc,CAAC;AAE7B,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAmB3B,2EAA2E;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,0EAA0E;AAC1E,OAAO,EACL,cAAc,EAAE,eAAe,EAAE,yBAAyB,EAC1D,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,GAC1D,MAAM,oBAAoB,CAAC;AAG5B,0EAA0E;AAC1E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYnE,2EAA2E;AAC3E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEzF,2EAA2E;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,2EAA2E;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2EAA2E;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAW9D,4EAA4E;AAC5E,OAAO,EAAE,sBAAsB,EAAwB,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,KAAK,EAAoE,MAAM,yBAAyB,CAAC;AAC5N,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAK/E,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAA8E,MAAM,eAAe,CAAC;AAC5I,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAA+B,MAAM,yBAAyB,CAAC;AACzJ,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AAE5E,2EAA2E;AAC3E,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,wBAAwB,CAAC;AAUhC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../../src/loop/contract.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { agentLoopConfigSchema } from "../schemas.js";
|
|
3
|
+
describe("agentLoopConfigSchema", () => {
|
|
4
|
+
it("accepts a loop collection with a deterministic pipeline", () => {
|
|
5
|
+
const parsed = agentLoopConfigSchema.parse({
|
|
6
|
+
name: "router-agent",
|
|
7
|
+
runtime: "polpo-runner",
|
|
8
|
+
loops: {
|
|
9
|
+
classify: {
|
|
10
|
+
systemPrompt: "Classify the request.",
|
|
11
|
+
tools: ["read"],
|
|
12
|
+
output: {
|
|
13
|
+
schema: {
|
|
14
|
+
type: "object",
|
|
15
|
+
properties: { route: { type: "string" } },
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
stopWhen: { expression: "output.route != null" },
|
|
19
|
+
},
|
|
20
|
+
answer: {
|
|
21
|
+
systemPrompt: "Answer the request.",
|
|
22
|
+
tools: ["write"],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
pipeline: {
|
|
26
|
+
context: "shared",
|
|
27
|
+
steps: [
|
|
28
|
+
{ loop: "classify" },
|
|
29
|
+
{
|
|
30
|
+
switch: {
|
|
31
|
+
cases: [
|
|
32
|
+
{ when: "output.route == 'answer'", steps: [{ loop: "answer" }] },
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
expect(Object.keys(parsed.loops)).toEqual(["classify", "answer"]);
|
|
40
|
+
expect(parsed.pipeline?.steps).toHaveLength(2);
|
|
41
|
+
});
|
|
42
|
+
it("rejects pipelines that reference unknown loops", () => {
|
|
43
|
+
const parsed = agentLoopConfigSchema.safeParse({
|
|
44
|
+
loops: {
|
|
45
|
+
classify: {},
|
|
46
|
+
},
|
|
47
|
+
pipeline: {
|
|
48
|
+
steps: [{ loop: "missing" }],
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
expect(parsed.success).toBe(false);
|
|
52
|
+
expect(parsed.error?.issues[0]?.message).toContain('unknown loop "missing"');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=contract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../src/loop/contract.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC;YACzC,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE;gBACL,QAAQ,EAAE;oBACR,YAAY,EAAE,uBAAuB;oBACrC,KAAK,EAAE,CAAC,MAAM,CAAC;oBACf,MAAM,EAAE;wBACN,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;yBAC1C;qBACF;oBACD,QAAQ,EAAE,EAAE,UAAU,EAAE,sBAAsB,EAAE;iBACjD;gBACD,MAAM,EAAE;oBACN,YAAY,EAAE,qBAAqB;oBACnC,KAAK,EAAE,CAAC,OAAO,CAAC;iBACjB;aACF;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ;gBACjB,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,UAAU,EAAE;oBACpB;wBACE,MAAM,EAAE;4BACN,KAAK,EAAE;gCACL,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;6BAClE;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC;YAC7C,KAAK,EAAE;gBACL,QAAQ,EAAE,EAAE;aACb;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC7B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SafeExpressionEvaluator — a tiny, SANDBOXED condition evaluator for the
|
|
3
|
+
* declarative config surface (approval gates, and the upcoming loop/pipeline
|
|
4
|
+
* routers). NO `eval`/`new Function`/globals: a recursive-descent parser over a
|
|
5
|
+
* restricted grammar, so a tenant-authored expression can only read fields of
|
|
6
|
+
* the supplied context and combine them with comparisons/boolean logic — it can
|
|
7
|
+
* never reach `process`, call functions, or execute arbitrary code.
|
|
8
|
+
*
|
|
9
|
+
* Grammar (precedence low→high):
|
|
10
|
+
* or := and ('||' and)*
|
|
11
|
+
* and := cmp ('&&' cmp)*
|
|
12
|
+
* cmp := unary (('==='|'!=='|'=='|'!='|'>='|'<='|'>'|'<') unary)?
|
|
13
|
+
* unary:= '!' unary | primary
|
|
14
|
+
* prim := '(' or ')' | number | 'string' | "string" | true | false | null | path
|
|
15
|
+
* path: a.b.c → looked up in the context (missing → undefined).
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Evaluate a condition expression against a context object, returning a boolean.
|
|
19
|
+
* Throws on a malformed expression. An empty/absent expression is `true`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function evaluateExpression(expression: string | undefined, ctx: Record<string, unknown>): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Class wrapper. `evaluate` never throws — a malformed expression returns
|
|
24
|
+
* `false` (safe default), matching how condition gates fail closed.
|
|
25
|
+
*/
|
|
26
|
+
export declare class SafeExpressionEvaluator {
|
|
27
|
+
evaluate(expression: string | undefined, ctx: Record<string, unknown>): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/loop/expression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAsKH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGxG;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAOhF"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SafeExpressionEvaluator — a tiny, SANDBOXED condition evaluator for the
|
|
3
|
+
* declarative config surface (approval gates, and the upcoming loop/pipeline
|
|
4
|
+
* routers). NO `eval`/`new Function`/globals: a recursive-descent parser over a
|
|
5
|
+
* restricted grammar, so a tenant-authored expression can only read fields of
|
|
6
|
+
* the supplied context and combine them with comparisons/boolean logic — it can
|
|
7
|
+
* never reach `process`, call functions, or execute arbitrary code.
|
|
8
|
+
*
|
|
9
|
+
* Grammar (precedence low→high):
|
|
10
|
+
* or := and ('||' and)*
|
|
11
|
+
* and := cmp ('&&' cmp)*
|
|
12
|
+
* cmp := unary (('==='|'!=='|'=='|'!='|'>='|'<='|'>'|'<') unary)?
|
|
13
|
+
* unary:= '!' unary | primary
|
|
14
|
+
* prim := '(' or ')' | number | 'string' | "string" | true | false | null | path
|
|
15
|
+
* path: a.b.c → looked up in the context (missing → undefined).
|
|
16
|
+
*/
|
|
17
|
+
// Longest operators first so `===` matches before `==`.
|
|
18
|
+
const OPS = ["===", "!==", "==", "!=", ">=", "<=", "&&", "||", ">", "<", "!"];
|
|
19
|
+
function tokenize(src) {
|
|
20
|
+
const out = [];
|
|
21
|
+
let i = 0;
|
|
22
|
+
while (i < src.length) {
|
|
23
|
+
const c = src[i];
|
|
24
|
+
if (c === " " || c === "\t" || c === "\n" || c === "\r") {
|
|
25
|
+
i++;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (c === "'" || c === '"') {
|
|
29
|
+
let j = i + 1;
|
|
30
|
+
let s = "";
|
|
31
|
+
while (j < src.length && src[j] !== c) {
|
|
32
|
+
if (src[j] === "\\" && j + 1 < src.length) {
|
|
33
|
+
s += src[j + 1];
|
|
34
|
+
j += 2;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
s += src[j++];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
out.push({ t: "str", v: s });
|
|
41
|
+
i = j + 1;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (/[0-9]/.test(c) || (c === "-" && /[0-9]/.test(src[i + 1] ?? ""))) {
|
|
45
|
+
let j = i + 1;
|
|
46
|
+
while (j < src.length && /[0-9.]/.test(src[j]))
|
|
47
|
+
j++;
|
|
48
|
+
out.push({ t: "num", v: src.slice(i, j) });
|
|
49
|
+
i = j;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (/[A-Za-z_]/.test(c)) {
|
|
53
|
+
let j = i + 1;
|
|
54
|
+
while (j < src.length && /[A-Za-z0-9_.]/.test(src[j]))
|
|
55
|
+
j++;
|
|
56
|
+
out.push({ t: "id", v: src.slice(i, j) });
|
|
57
|
+
i = j;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (c === "(" || c === ")") {
|
|
61
|
+
out.push({ t: "punc", v: c });
|
|
62
|
+
i++;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const op = OPS.find((o) => src.startsWith(o, i));
|
|
66
|
+
if (op) {
|
|
67
|
+
out.push({ t: "op", v: op });
|
|
68
|
+
i += op.length;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
throw new Error(`Unexpected character "${c}" at ${i}`);
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
function lookup(path, ctx) {
|
|
76
|
+
if (path === "true")
|
|
77
|
+
return true;
|
|
78
|
+
if (path === "false")
|
|
79
|
+
return false;
|
|
80
|
+
if (path === "null")
|
|
81
|
+
return null;
|
|
82
|
+
let cur = ctx;
|
|
83
|
+
for (const part of path.split(".")) {
|
|
84
|
+
if (cur == null || typeof cur !== "object")
|
|
85
|
+
return undefined;
|
|
86
|
+
cur = cur[part];
|
|
87
|
+
}
|
|
88
|
+
return cur;
|
|
89
|
+
}
|
|
90
|
+
function compare(op, a, b) {
|
|
91
|
+
if (op === "===")
|
|
92
|
+
return a === b;
|
|
93
|
+
if (op === "!==")
|
|
94
|
+
return a !== b;
|
|
95
|
+
const an = typeof a === "number" ? a : Number(a);
|
|
96
|
+
const bn = typeof b === "number" ? b : Number(b);
|
|
97
|
+
const numeric = !Number.isNaN(an) && !Number.isNaN(bn) && a !== "" && b !== "" && a != null && b != null;
|
|
98
|
+
// null/undefined treated as equal ("not set"), so `x == null` works as expected.
|
|
99
|
+
const nullish = (v) => v === null || v === undefined;
|
|
100
|
+
// Ordering against null/undefined is never true (can't order "not set").
|
|
101
|
+
if ((op === ">" || op === "<" || op === ">=" || op === "<=") && (nullish(a) || nullish(b)))
|
|
102
|
+
return false;
|
|
103
|
+
const eq = nullish(a) || nullish(b) ? nullish(a) && nullish(b) : a === b || (numeric ? an === bn : String(a) === String(b));
|
|
104
|
+
switch (op) {
|
|
105
|
+
case "==":
|
|
106
|
+
return eq;
|
|
107
|
+
case "!=":
|
|
108
|
+
return !eq;
|
|
109
|
+
case ">":
|
|
110
|
+
return numeric ? an > bn : String(a) > String(b);
|
|
111
|
+
case "<":
|
|
112
|
+
return numeric ? an < bn : String(a) < String(b);
|
|
113
|
+
case ">=":
|
|
114
|
+
return numeric ? an >= bn : String(a) >= String(b);
|
|
115
|
+
case "<=":
|
|
116
|
+
return numeric ? an <= bn : String(a) <= String(b);
|
|
117
|
+
default:
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
class Parser {
|
|
122
|
+
toks;
|
|
123
|
+
ctx;
|
|
124
|
+
p = 0;
|
|
125
|
+
constructor(toks, ctx) {
|
|
126
|
+
this.toks = toks;
|
|
127
|
+
this.ctx = ctx;
|
|
128
|
+
}
|
|
129
|
+
peek() {
|
|
130
|
+
return this.toks[this.p];
|
|
131
|
+
}
|
|
132
|
+
eat() {
|
|
133
|
+
return this.toks[this.p++];
|
|
134
|
+
}
|
|
135
|
+
parse() {
|
|
136
|
+
const v = this.or();
|
|
137
|
+
if (this.p < this.toks.length)
|
|
138
|
+
throw new Error("Trailing tokens");
|
|
139
|
+
return v;
|
|
140
|
+
}
|
|
141
|
+
or() {
|
|
142
|
+
let l = this.and();
|
|
143
|
+
while (this.peek()?.v === "||") {
|
|
144
|
+
this.eat();
|
|
145
|
+
l = Boolean(l) || Boolean(this.and());
|
|
146
|
+
}
|
|
147
|
+
return l;
|
|
148
|
+
}
|
|
149
|
+
and() {
|
|
150
|
+
let l = this.cmp();
|
|
151
|
+
while (this.peek()?.v === "&&") {
|
|
152
|
+
this.eat();
|
|
153
|
+
l = Boolean(l) && Boolean(this.cmp());
|
|
154
|
+
}
|
|
155
|
+
return l;
|
|
156
|
+
}
|
|
157
|
+
cmp() {
|
|
158
|
+
const l = this.unary();
|
|
159
|
+
const op = this.peek();
|
|
160
|
+
if (op?.t === "op" && ["===", "!==", "==", "!=", ">", "<", ">=", "<="].includes(op.v)) {
|
|
161
|
+
this.eat();
|
|
162
|
+
return compare(op.v, l, this.unary());
|
|
163
|
+
}
|
|
164
|
+
return l;
|
|
165
|
+
}
|
|
166
|
+
unary() {
|
|
167
|
+
if (this.peek()?.v === "!") {
|
|
168
|
+
this.eat();
|
|
169
|
+
return !this.unary();
|
|
170
|
+
}
|
|
171
|
+
return this.primary();
|
|
172
|
+
}
|
|
173
|
+
primary() {
|
|
174
|
+
const tok = this.eat();
|
|
175
|
+
if (!tok)
|
|
176
|
+
throw new Error("Unexpected end of expression");
|
|
177
|
+
if (tok.t === "punc" && tok.v === "(") {
|
|
178
|
+
const v = this.or();
|
|
179
|
+
if (this.eat()?.v !== ")")
|
|
180
|
+
throw new Error("Expected )");
|
|
181
|
+
return v;
|
|
182
|
+
}
|
|
183
|
+
if (tok.t === "num")
|
|
184
|
+
return Number(tok.v);
|
|
185
|
+
if (tok.t === "str")
|
|
186
|
+
return tok.v;
|
|
187
|
+
if (tok.t === "id")
|
|
188
|
+
return lookup(tok.v, this.ctx);
|
|
189
|
+
throw new Error(`Unexpected token "${tok.v}"`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Evaluate a condition expression against a context object, returning a boolean.
|
|
194
|
+
* Throws on a malformed expression. An empty/absent expression is `true`.
|
|
195
|
+
*/
|
|
196
|
+
export function evaluateExpression(expression, ctx) {
|
|
197
|
+
if (!expression || !expression.trim())
|
|
198
|
+
return true;
|
|
199
|
+
return Boolean(new Parser(tokenize(expression), ctx).parse());
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Class wrapper. `evaluate` never throws — a malformed expression returns
|
|
203
|
+
* `false` (safe default), matching how condition gates fail closed.
|
|
204
|
+
*/
|
|
205
|
+
export class SafeExpressionEvaluator {
|
|
206
|
+
evaluate(expression, ctx) {
|
|
207
|
+
try {
|
|
208
|
+
return evaluateExpression(expression, ctx);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/loop/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.test.d.ts","sourceRoot":"","sources":["../../src/loop/expression.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { evaluateExpression, SafeExpressionEvaluator } from "./expression.js";
|
|
3
|
+
const ctx = {
|
|
4
|
+
data: { task: { assignTo: "deployer", status: "done" }, mission: { allPassed: true } },
|
|
5
|
+
task: { assignTo: "deployer", status: "done" },
|
|
6
|
+
mission: { allPassed: true },
|
|
7
|
+
assess: { riskClass: "substandard", score: 0.42 },
|
|
8
|
+
build: { passed: true, attempts: 3 },
|
|
9
|
+
};
|
|
10
|
+
describe("evaluateExpression", () => {
|
|
11
|
+
it("empty → true (unconditional)", () => {
|
|
12
|
+
expect(evaluateExpression(undefined, ctx)).toBe(true);
|
|
13
|
+
expect(evaluateExpression(" ", ctx)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it("strict === / !== (gate-style)", () => {
|
|
16
|
+
expect(evaluateExpression("task.assignTo === 'deployer'", ctx)).toBe(true);
|
|
17
|
+
expect(evaluateExpression("task.assignTo !== 'coder'", ctx)).toBe(true);
|
|
18
|
+
expect(evaluateExpression("task.status === 'pending'", ctx)).toBe(false);
|
|
19
|
+
});
|
|
20
|
+
it("loose == / != with nullish (x != null = 'is set')", () => {
|
|
21
|
+
expect(evaluateExpression("assess.riskClass != null", ctx)).toBe(true);
|
|
22
|
+
expect(evaluateExpression("assess.missing != null", ctx)).toBe(false);
|
|
23
|
+
expect(evaluateExpression("assess.missing == null", ctx)).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it("numeric comparisons + boolean precedence + parens", () => {
|
|
26
|
+
expect(evaluateExpression("build.attempts >= 5", ctx)).toBe(false);
|
|
27
|
+
expect(evaluateExpression("assess.score <= 0.5 && build.passed == true", ctx)).toBe(true);
|
|
28
|
+
expect(evaluateExpression("build.passed == false || assess.riskClass == 'substandard'", ctx)).toBe(true);
|
|
29
|
+
expect(evaluateExpression("false || true && false", {})).toBe(false);
|
|
30
|
+
expect(evaluateExpression("(false || true) && true", {})).toBe(true);
|
|
31
|
+
expect(evaluateExpression("!(task.status === 'pending')", ctx)).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
it("nested data paths (gate payload shape)", () => {
|
|
34
|
+
expect(evaluateExpression("data.task.assignTo === 'deployer'", ctx)).toBe(true);
|
|
35
|
+
expect(evaluateExpression("data.mission.allPassed == true", ctx)).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it("is NOT eval — no globals, no function calls", () => {
|
|
38
|
+
expect(evaluateExpression("process != null", ctx)).toBe(false); // path miss, not the Node global
|
|
39
|
+
expect(() => evaluateExpression("constructor('return process')", ctx)).toThrow();
|
|
40
|
+
expect(() => evaluateExpression("task.assignTo.length > 0", ctx)).not.toThrow(); // .length is just a path → undefined
|
|
41
|
+
expect(evaluateExpression("task.assignTo.length > 0", ctx)).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
it("throws on malformed expressions", () => {
|
|
44
|
+
expect(() => evaluateExpression("build.passed ==", ctx)).toThrow();
|
|
45
|
+
expect(() => evaluateExpression("&&&", ctx)).toThrow();
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe("SafeExpressionEvaluator (fail-closed wrapper)", () => {
|
|
49
|
+
const ev = new SafeExpressionEvaluator();
|
|
50
|
+
it("malformed → false (never throws)", () => {
|
|
51
|
+
expect(ev.evaluate("build.passed ==", ctx)).toBe(false);
|
|
52
|
+
expect(ev.evaluate("task.assignTo === 'deployer'", ctx)).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=expression.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.test.js","sourceRoot":"","sources":["../../src/loop/expression.test.ts"],"names":[],"mappings":"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"}
|