@sensigo/realm 0.1.0 → 0.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.
- package/dist/adapters/gorgias-adapter.d.ts.map +1 -1
- package/dist/adapters/gorgias-adapter.js +24 -9
- package/dist/adapters/gorgias-adapter.js.map +1 -1
- package/dist/engine/eligibility.d.ts +8 -1
- package/dist/engine/eligibility.d.ts.map +1 -1
- package/dist/engine/eligibility.js +39 -0
- package/dist/engine/eligibility.js.map +1 -1
- package/dist/engine/execution-loop.d.ts.map +1 -1
- package/dist/engine/execution-loop.js +221 -9
- package/dist/engine/execution-loop.js.map +1 -1
- package/dist/engine/lifecycle.d.ts +7 -0
- package/dist/engine/lifecycle.d.ts.map +1 -1
- package/dist/engine/lifecycle.js +8 -1
- package/dist/engine/lifecycle.js.map +1 -1
- package/dist/engine/precondition.d.ts +32 -0
- package/dist/engine/precondition.d.ts.map +1 -1
- package/dist/engine/precondition.js +63 -1
- package/dist/engine/precondition.js.map +1 -1
- package/dist/engine/render-template.d.ts.map +1 -1
- package/dist/engine/render-template.js +8 -2
- package/dist/engine/render-template.js.map +1 -1
- package/dist/extensions/service-adapter.d.ts +7 -0
- package/dist/extensions/service-adapter.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/store/json-file-store.d.ts.map +1 -1
- package/dist/store/json-file-store.js +9 -0
- package/dist/store/json-file-store.js.map +1 -1
- package/dist/store/store-interface.d.ts +4 -0
- package/dist/store/store-interface.d.ts.map +1 -1
- package/dist/types/run-record.d.ts +27 -2
- package/dist/types/run-record.d.ts.map +1 -1
- package/dist/types/workflow-definition.d.ts +40 -5
- package/dist/types/workflow-definition.d.ts.map +1 -1
- package/dist/types/workflow-error.d.ts +1 -1
- package/dist/types/workflow-error.d.ts.map +1 -1
- package/dist/types/workflow-error.js.map +1 -1
- package/dist/workflow/yaml-loader.d.ts +3 -2
- package/dist/workflow/yaml-loader.d.ts.map +1 -1
- package/dist/workflow/yaml-loader.js +106 -5
- package/dist/workflow/yaml-loader.js.map +1 -1
- package/package.json +1 -1
- package/dist/engine/prompt-template.d.ts +0 -25
- package/dist/engine/prompt-template.d.ts.map +0 -1
- package/dist/engine/prompt-template.js +0 -66
- package/dist/engine/prompt-template.js.map +0 -1
- package/dist/engine/state-guard.d.ts +0 -15
- package/dist/engine/state-guard.d.ts.map +0 -1
- package/dist/engine/state-guard.js +0 -40
- package/dist/engine/state-guard.js.map +0 -1
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves a dot-path like "context.resources.review_security.findings"
|
|
3
|
-
* against the given root object. Returns undefined if any segment is missing.
|
|
4
|
-
*/
|
|
5
|
-
export function resolvePath(path, root) {
|
|
6
|
-
const parts = path.trim().split('.');
|
|
7
|
-
let current = root;
|
|
8
|
-
for (const part of parts) {
|
|
9
|
-
if (typeof current !== 'object' || current === null)
|
|
10
|
-
return undefined;
|
|
11
|
-
current = current[part];
|
|
12
|
-
}
|
|
13
|
-
return current;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Renders all {{ ... }} expressions in a template string against the provided context.
|
|
17
|
-
* - Strings: inserted as-is
|
|
18
|
-
* - Objects/arrays: JSON.stringify with 2-space indent
|
|
19
|
-
* - undefined/unresolvable: left as {{ expression }}
|
|
20
|
-
*
|
|
21
|
-
* Handles the workflow.context.* namespace when workflowContext is provided.
|
|
22
|
-
* workflowContext is optional so all existing call sites compile without change.
|
|
23
|
-
*/
|
|
24
|
-
export function renderTemplate(template, context) {
|
|
25
|
-
return template.replace(/\{\{\s*([\w.-]+)\s*\}\}/g, (_match, path) => {
|
|
26
|
-
// Workflow context namespace — handled before the generic path resolver.
|
|
27
|
-
if (path.startsWith('workflow.context.') && context.workflowContext) {
|
|
28
|
-
return resolveWorkflowContextRef(path, context.workflowContext) ?? `{{ ${path} }}`;
|
|
29
|
-
}
|
|
30
|
-
// Existing logic: context.resources.* and run.params.*
|
|
31
|
-
const root = {
|
|
32
|
-
context: { resources: context.evidenceByStep },
|
|
33
|
-
run: { params: context.runParams },
|
|
34
|
-
};
|
|
35
|
-
const value = resolvePath(path, root);
|
|
36
|
-
if (value === undefined)
|
|
37
|
-
return `{{ ${path} }}`;
|
|
38
|
-
if (typeof value === 'string')
|
|
39
|
-
return value;
|
|
40
|
-
return JSON.stringify(value, null, 2);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
function resolveWorkflowContextRef(path, ctx) {
|
|
44
|
-
// path format: "workflow.context.NAME" or "workflow.context.NAME.raw"
|
|
45
|
-
const segments = path.split('.');
|
|
46
|
-
if (segments.length < 3)
|
|
47
|
-
return undefined;
|
|
48
|
-
const isRaw = segments[segments.length - 1] === 'raw';
|
|
49
|
-
// Name is everything between "workflow.context." and the optional ".raw"
|
|
50
|
-
const name = isRaw ? segments.slice(2, -1).join('.') : segments.slice(2).join('.');
|
|
51
|
-
const snapshot = ctx.snapshots[name];
|
|
52
|
-
if (!snapshot || snapshot.error !== undefined)
|
|
53
|
-
return undefined;
|
|
54
|
-
return isRaw ? snapshot.content : wrapContent(name, snapshot.content, ctx.wrapper);
|
|
55
|
-
}
|
|
56
|
-
function wrapContent(name, content, wrapper) {
|
|
57
|
-
switch (wrapper) {
|
|
58
|
-
case 'xml':
|
|
59
|
-
return `<${name}>\n${content}\n</${name}>`;
|
|
60
|
-
case 'brackets':
|
|
61
|
-
return `[${name}]\n${content}\n[/${name}]`;
|
|
62
|
-
case 'none':
|
|
63
|
-
return content;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=prompt-template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-template.js","sourceRoot":"","sources":["../../src/engine/prompt-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { WorkflowDefinition } from '../types/workflow-definition.js';
|
|
2
|
-
import type { BlockedReason } from '../types/response-envelope.js';
|
|
3
|
-
export declare class StateGuard {
|
|
4
|
-
private readonly allowed;
|
|
5
|
-
constructor(definition: WorkflowDefinition);
|
|
6
|
-
isAllowed(stepName: string, currentState: string): boolean;
|
|
7
|
-
getBlockedReason(stepName: string, currentState: string): BlockedReason;
|
|
8
|
-
getAllowedStates(stepName: string): string[];
|
|
9
|
-
/**
|
|
10
|
-
* Returns the names of all steps that are allowed from the given state.
|
|
11
|
-
* Used by the CLI to find which step to execute next.
|
|
12
|
-
*/
|
|
13
|
-
getAllowedSteps(state: string): string[];
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=state-guard.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-guard.d.ts","sourceRoot":"","sources":["../../src/engine/state-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;gBAEvC,UAAU,EAAE,kBAAkB;IAO1C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAM1D,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa;IAQvE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAK5C;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CASzC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export class StateGuard {
|
|
2
|
-
allowed;
|
|
3
|
-
constructor(definition) {
|
|
4
|
-
this.allowed = new Map();
|
|
5
|
-
for (const [stepName, step] of Object.entries(definition.steps)) {
|
|
6
|
-
this.allowed.set(stepName, new Set(step.allowed_from_states));
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
isAllowed(stepName, currentState) {
|
|
10
|
-
const states = this.allowed.get(stepName);
|
|
11
|
-
if (states === undefined)
|
|
12
|
-
return false;
|
|
13
|
-
return states.has(currentState);
|
|
14
|
-
}
|
|
15
|
-
getBlockedReason(stepName, currentState) {
|
|
16
|
-
return {
|
|
17
|
-
current_state: currentState,
|
|
18
|
-
allowed_states: this.getAllowedStates(stepName),
|
|
19
|
-
suggestion: `Step '${stepName}' cannot execute from state '${currentState}'.`,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
getAllowedStates(stepName) {
|
|
23
|
-
const states = this.allowed.get(stepName);
|
|
24
|
-
return states !== undefined ? [...states] : [];
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns the names of all steps that are allowed from the given state.
|
|
28
|
-
* Used by the CLI to find which step to execute next.
|
|
29
|
-
*/
|
|
30
|
-
getAllowedSteps(state) {
|
|
31
|
-
const allowed = [];
|
|
32
|
-
for (const [stepName, allowedSet] of this.allowed) {
|
|
33
|
-
if (allowedSet.has(state)) {
|
|
34
|
-
allowed.push(stepName);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return allowed;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=state-guard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state-guard.js","sourceRoot":"","sources":["../../src/engine/state-guard.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,UAAU;IACJ,OAAO,CAA2B;IAEnD,YAAY,UAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAgB,EAAE,YAAoB;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB,CAAC,QAAgB,EAAE,YAAoB;QACrD,OAAO;YACL,aAAa,EAAE,YAAY;YAC3B,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC/C,UAAU,EAAE,SAAS,QAAQ,gCAAgC,YAAY,IAAI;SAC9E,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,KAAa;QAC3B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|