@acpus/core 0.4.1 → 0.5.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/index.d.ts CHANGED
@@ -2,10 +2,10 @@ export { DiagnosticBag } from "./diagnostics.js";
2
2
  export { compileWorkflow, lintWorkflow } from "./compiler.js";
3
3
  export { applyAgentOverrides, emptyAgentOverrideResult, optionalSubmissionMetadata, parseAgentOverridesInput, parseWorkflowSpecForOverrides, serializeWorkflowSpecForOverrides, validateAgentOverrides } from "./agent-overrides.js";
4
4
  export { createSchedule } from "./schedule.js";
5
- export { createIncludeResolver, globalWorkflowRoot, workflowSourcePolicy } from "./source-policy.js";
5
+ export { createIncludeResolver, globalWorkflowRoot, realPathOrUndefined, workflowSourceResolver } from "./source-resolver.js";
6
6
  export { compileSchemaDsl } from "./schema/index.js";
7
7
  export type { CompileSchemaDslResult, SchemaDslError, CompileSchemaDslOptions } from "./schema/index.js";
8
- export type { WorkflowSourcePolicy } from "./source-policy.js";
8
+ export type { WorkflowSourceResolver } from "./source-resolver.js";
9
9
  export { EXPRESSION_PATTERN, ALLOWED_ROOTS, ALLOWED_FUNCTIONS, toCelParseSource, createExpressionCollector } from "./expressions.js";
10
10
  export type { ExpressionCollector } from "./expressions.js";
11
11
  export { extractReferences, referenceToString, isStaticReference } from "./cel-ast.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzG,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvF,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EACV,OAAO,EACP,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACzG,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvF,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EACV,OAAO,EACP,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ export { DiagnosticBag } from "./diagnostics.js";
2
2
  export { compileWorkflow, lintWorkflow } from "./compiler.js";
3
3
  export { applyAgentOverrides, emptyAgentOverrideResult, optionalSubmissionMetadata, parseAgentOverridesInput, parseWorkflowSpecForOverrides, serializeWorkflowSpecForOverrides, validateAgentOverrides } from "./agent-overrides.js";
4
4
  export { createSchedule } from "./schedule.js";
5
- export { createIncludeResolver, globalWorkflowRoot, workflowSourcePolicy } from "./source-policy.js";
5
+ export { createIncludeResolver, globalWorkflowRoot, realPathOrUndefined, workflowSourceResolver } from "./source-resolver.js";
6
6
  export { compileSchemaDsl } from "./schema/index.js";
7
7
  export { EXPRESSION_PATTERN, ALLOWED_ROOTS, ALLOWED_FUNCTIONS, toCelParseSource, createExpressionCollector } from "./expressions.js";
8
8
  export { extractReferences, referenceToString, isStaticReference } from "./cel-ast.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9H,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Core helper to resolve Workflow Spec source paths and read include content.
3
+ *
4
+ * Validates that source and include paths exist and are readable by resolving
5
+ * real filesystem paths (including symlink resolution). The resolved real paths
6
+ * are returned so callers can use them for subsequent operations (cycle guards,
7
+ * compilation, etc.).
8
+ *
9
+ * Unlike the previous `WorkflowSourcePolicy`, this resolver does not restrict
10
+ * paths to workspace or global catalog roots — any readable filesystem path is
11
+ * accepted. Catalog discovery scope remains constrained; file references from
12
+ * discovered specs are not constrained by those roots.
13
+ */
14
+ export interface WorkflowSourceResolver {
15
+ createIncludeResolver: (defaultSourcePath?: string) => (path: string, fromPath?: string) => string;
16
+ validateSourcePath: (path: string) => string;
17
+ }
18
+ export declare function globalWorkflowRoot(): string;
19
+ export declare function createIncludeResolver(defaultSourcePath?: string): (path: string, fromPath?: string) => string;
20
+ export declare function workflowSourceResolver(workspace?: string): WorkflowSourceResolver;
21
+ export declare function realPathOrUndefined(path: string): string | undefined;
22
+ //# sourceMappingURL=source-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../src/source-resolver.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,EAAE,CAAC,iBAAiB,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACnG,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,qBAAqB,CACnC,iBAAiB,CAAC,EAAE,MAAM,GACzB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAG7C;AAED,wBAAgB,sBAAsB,CAAC,SAAS,SAAgB,GAAG,sBAAsB,CAcxF;AAgBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMpE"}
@@ -0,0 +1,43 @@
1
+ import { readFileSync, realpathSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, resolve } from "node:path";
4
+ export function globalWorkflowRoot() {
5
+ return resolve(homedir(), ".acpus", "workflows");
6
+ }
7
+ export function createIncludeResolver(defaultSourcePath) {
8
+ const defaultBaseDir = defaultSourcePath ? dirname(resolve(defaultSourcePath)) : process.cwd();
9
+ return createIncludeResolverFromBase(defaultBaseDir);
10
+ }
11
+ export function workflowSourceResolver(workspace = process.cwd()) {
12
+ return {
13
+ createIncludeResolver: (defaultSourcePath) => createIncludeResolverFromBase(defaultSourcePath ? dirname(resolve(defaultSourcePath)) : resolve(workspace)),
14
+ validateSourcePath: (path) => {
15
+ const resolved = resolve(path);
16
+ const realPath = realPathOrUndefined(resolved);
17
+ if (realPath === undefined) {
18
+ throw new Error("sourcePath does not exist or is not readable");
19
+ }
20
+ return realPath;
21
+ }
22
+ };
23
+ }
24
+ function createIncludeResolverFromBase(defaultBaseDir) {
25
+ return (includePath, fromPath) => {
26
+ const baseDir = fromPath ? dirname(resolve(fromPath)) : defaultBaseDir;
27
+ const resolved = resolve(baseDir, includePath);
28
+ const realPath = realPathOrUndefined(resolved);
29
+ if (realPath === undefined) {
30
+ throw new Error(`Include path '${includePath}' does not exist or is not readable`);
31
+ }
32
+ return readFileSync(realPath, "utf8");
33
+ };
34
+ }
35
+ export function realPathOrUndefined(path) {
36
+ try {
37
+ return realpathSync.native(path);
38
+ }
39
+ catch {
40
+ return undefined;
41
+ }
42
+ }
43
+ //# sourceMappingURL=source-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../src/source-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoB7C,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,iBAA0B;IAE1B,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/F,OAAO,6BAA6B,CAAC,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9D,OAAO;QACL,qBAAqB,EAAE,CAAC,iBAAiB,EAAE,EAAE,CAAC,6BAA6B,CACzE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAC7E;QACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,cAAsB;IAEtB,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,qCAAqC,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acpus/core",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Workflow Spec compiler and validation core for Acpus",
5
5
  "keywords": [
6
6
  "acp",
@@ -1,10 +0,0 @@
1
- export interface WorkflowSourcePolicy {
2
- allowedSourceRoots: string[];
3
- createIncludeResolver: (defaultSourcePath?: string) => (path: string, fromPath?: string) => string;
4
- isAllowedSourcePath: (path: string) => boolean;
5
- validateSourcePath: (path: string) => string;
6
- }
7
- export declare function globalWorkflowRoot(): string;
8
- export declare function createIncludeResolver(allowedSourceRoots?: string[], defaultSourcePath?: string): (path: string, fromPath?: string) => string;
9
- export declare function workflowSourcePolicy(workspace?: string): WorkflowSourcePolicy;
10
- //# sourceMappingURL=source-policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-policy.d.ts","sourceRoot":"","sources":["../src/source-policy.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,qBAAqB,EAAE,CAAC,iBAAiB,CAAC,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACnG,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,qBAAqB,CACnC,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAC7B,iBAAiB,CAAC,EAAE,MAAM,GACzB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAI7C;AAED,wBAAgB,oBAAoB,CAAC,SAAS,SAAgB,GAAG,oBAAoB,CA0BpF"}
@@ -1,69 +0,0 @@
1
- import { readFileSync, realpathSync } from "node:fs";
2
- import { homedir } from "node:os";
3
- import { dirname, isAbsolute, relative, resolve } from "node:path";
4
- export function globalWorkflowRoot() {
5
- return resolve(homedir(), ".acpus", "workflows");
6
- }
7
- export function createIncludeResolver(allowedSourceRoots, defaultSourcePath) {
8
- const allowedRoots = realExistingRoots(allowedSourceRoots?.map((root) => resolve(root)) ?? []);
9
- const defaultBaseDir = defaultSourcePath ? dirname(resolve(defaultSourcePath)) : process.cwd();
10
- return createIncludeResolverFromBase(allowedRoots, defaultBaseDir);
11
- }
12
- export function workflowSourcePolicy(workspace = process.cwd()) {
13
- const workspaceRoot = resolve(workspace);
14
- const allowedSourceRoots = [workspaceRoot, globalWorkflowRoot()];
15
- return {
16
- allowedSourceRoots,
17
- createIncludeResolver: (defaultSourcePath) => createIncludeResolverFromBase(realExistingRoots(allowedSourceRoots), defaultSourcePath ? dirname(resolve(defaultSourcePath)) : workspaceRoot),
18
- isAllowedSourcePath: (path) => {
19
- const realPath = realPathOrUndefined(resolve(path));
20
- return realPath !== undefined && isInsideAnyRoot(realPath, realExistingRoots(allowedSourceRoots));
21
- },
22
- validateSourcePath: (path) => {
23
- const resolved = resolve(path);
24
- const realPath = realPathOrUndefined(resolved);
25
- if (realPath === undefined) {
26
- throw new Error("sourcePath must exist and be readable");
27
- }
28
- if (!isInsideAnyRoot(realPath, realExistingRoots(allowedSourceRoots))) {
29
- throw new Error("sourcePath must be within the workspace or global Workflow Catalog");
30
- }
31
- return realPath;
32
- }
33
- };
34
- }
35
- function createIncludeResolverFromBase(allowedRoots, defaultBaseDir) {
36
- return (includePath, fromPath) => {
37
- const baseDir = fromPath ? dirname(resolve(fromPath)) : defaultBaseDir;
38
- const resolved = resolve(baseDir, includePath);
39
- const realPath = realPathOrUndefined(resolved);
40
- if (realPath === undefined) {
41
- throw new Error(`Include path '${includePath}' does not exist or is not readable`);
42
- }
43
- if (allowedRoots.length > 0 && !isInsideAnyRoot(realPath, allowedRoots)) {
44
- throw new Error(`Include path '${includePath}' resolves outside allowed Workflow Spec roots`);
45
- }
46
- return readFileSync(realPath, "utf8");
47
- };
48
- }
49
- function isInsideAnyRoot(path, roots) {
50
- return roots.some((root) => {
51
- const rel = relative(root, path);
52
- return rel === "" || (!rel.startsWith("..") && !isAbsolute(rel));
53
- });
54
- }
55
- function realExistingRoots(roots) {
56
- return roots.flatMap((root) => {
57
- const realRoot = realPathOrUndefined(root);
58
- return realRoot === undefined ? [] : [realRoot];
59
- });
60
- }
61
- function realPathOrUndefined(path) {
62
- try {
63
- return realpathSync.native(path);
64
- }
65
- catch {
66
- return undefined;
67
- }
68
- }
69
- //# sourceMappingURL=source-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"source-policy.js","sourceRoot":"","sources":["../src/source-policy.ts"],"names":[],"mappings":"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"}