raffel 1.1.5 → 1.1.6

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 (119) hide show
  1. package/dist/core/registry.d.ts +5 -0
  2. package/dist/core/registry.d.ts.map +1 -1
  3. package/dist/core/registry.js +1 -0
  4. package/dist/core/registry.js.map +1 -1
  5. package/dist/docs/markdown-loader.d.ts +2 -1
  6. package/dist/docs/markdown-loader.d.ts.map +1 -1
  7. package/dist/docs/markdown-loader.js +78 -3
  8. package/dist/docs/markdown-loader.js.map +1 -1
  9. package/dist/middleware/policy/bootstrap.d.ts +33 -2
  10. package/dist/middleware/policy/bootstrap.d.ts.map +1 -1
  11. package/dist/middleware/policy/bootstrap.js +40 -9
  12. package/dist/middleware/policy/bootstrap.js.map +1 -1
  13. package/dist/middleware/policy/co-located/loader.d.ts +33 -0
  14. package/dist/middleware/policy/co-located/loader.d.ts.map +1 -0
  15. package/dist/middleware/policy/co-located/loader.js +110 -0
  16. package/dist/middleware/policy/co-located/loader.js.map +1 -0
  17. package/dist/middleware/policy/co-located/resolver.d.ts +83 -0
  18. package/dist/middleware/policy/co-located/resolver.d.ts.map +1 -0
  19. package/dist/middleware/policy/co-located/resolver.js +122 -0
  20. package/dist/middleware/policy/co-located/resolver.js.map +1 -0
  21. package/dist/middleware/policy/engine/compile.d.ts.map +1 -1
  22. package/dist/middleware/policy/engine/compile.js +9 -0
  23. package/dist/middleware/policy/engine/compile.js.map +1 -1
  24. package/dist/middleware/policy/engine/evaluate.d.ts.map +1 -1
  25. package/dist/middleware/policy/engine/evaluate.js +20 -0
  26. package/dist/middleware/policy/engine/evaluate.js.map +1 -1
  27. package/dist/middleware/policy/engine/index.d.ts.map +1 -1
  28. package/dist/middleware/policy/engine/index.js +19 -2
  29. package/dist/middleware/policy/engine/index.js.map +1 -1
  30. package/dist/middleware/policy/index.d.ts +4 -0
  31. package/dist/middleware/policy/index.d.ts.map +1 -1
  32. package/dist/middleware/policy/index.js +3 -0
  33. package/dist/middleware/policy/index.js.map +1 -1
  34. package/dist/middleware/policy/interceptor.d.ts.map +1 -1
  35. package/dist/middleware/policy/interceptor.js +11 -2
  36. package/dist/middleware/policy/interceptor.js.map +1 -1
  37. package/dist/middleware/policy/types.d.ts +41 -0
  38. package/dist/middleware/policy/types.d.ts.map +1 -1
  39. package/dist/ports/outbound/policy-engine.d.ts +7 -0
  40. package/dist/ports/outbound/policy-engine.d.ts.map +1 -1
  41. package/dist/server/builder/execution-http-resources.d.ts.map +1 -1
  42. package/dist/server/builder/execution-http-resources.js +1 -0
  43. package/dist/server/builder/execution-http-resources.js.map +1 -1
  44. package/dist/server/builder/execution-types.d.ts +1 -0
  45. package/dist/server/builder/execution-types.d.ts.map +1 -1
  46. package/dist/server/builder/execution-web-protocols.d.ts.map +1 -1
  47. package/dist/server/builder/execution-web-protocols.js +2 -2
  48. package/dist/server/builder/execution-web-protocols.js.map +1 -1
  49. package/dist/server/builder/lifecycle.d.ts +1 -0
  50. package/dist/server/builder/lifecycle.d.ts.map +1 -1
  51. package/dist/server/builder/lifecycle.js +2 -1
  52. package/dist/server/builder/lifecycle.js.map +1 -1
  53. package/dist/server/builder/operation-registrar.d.ts +1 -0
  54. package/dist/server/builder/operation-registrar.d.ts.map +1 -1
  55. package/dist/server/builder/operation-registrar.js +2 -1
  56. package/dist/server/builder/operation-registrar.js.map +1 -1
  57. package/dist/server/builder.d.ts.map +1 -1
  58. package/dist/server/builder.js +46 -4
  59. package/dist/server/builder.js.map +1 -1
  60. package/dist/server/channel-utils.d.ts +3 -1
  61. package/dist/server/channel-utils.d.ts.map +1 -1
  62. package/dist/server/channel-utils.js +6 -1
  63. package/dist/server/channel-utils.js.map +1 -1
  64. package/dist/server/discovery-bootstrap.d.ts +3 -2
  65. package/dist/server/discovery-bootstrap.d.ts.map +1 -1
  66. package/dist/server/discovery-bootstrap.js +2 -1
  67. package/dist/server/discovery-bootstrap.js.map +1 -1
  68. package/dist/server/discovery-utils.d.ts +11 -1
  69. package/dist/server/discovery-utils.d.ts.map +1 -1
  70. package/dist/server/discovery-utils.js +31 -2
  71. package/dist/server/discovery-utils.js.map +1 -1
  72. package/dist/server/fs-routes/loader.d.ts.map +1 -1
  73. package/dist/server/fs-routes/loader.js +77 -2
  74. package/dist/server/fs-routes/loader.js.map +1 -1
  75. package/dist/server/fs-routes/resources/types.d.ts +5 -0
  76. package/dist/server/fs-routes/resources/types.d.ts.map +1 -1
  77. package/dist/server/fs-routes/rest/types.d.ts +5 -0
  78. package/dist/server/fs-routes/rest/types.d.ts.map +1 -1
  79. package/dist/server/fs-routes/types.d.ts +22 -0
  80. package/dist/server/fs-routes/types.d.ts.map +1 -1
  81. package/dist/server/http-lifecycle/index.d.ts.map +1 -1
  82. package/dist/server/http-lifecycle/index.js +2 -2
  83. package/dist/server/http-lifecycle/index.js.map +1 -1
  84. package/dist/server/orchestration/registration.d.ts +12 -0
  85. package/dist/server/orchestration/registration.d.ts.map +1 -1
  86. package/dist/server/orchestration/registration.js +24 -3
  87. package/dist/server/orchestration/registration.js.map +1 -1
  88. package/dist/server/rest-middleware.d.ts +1 -0
  89. package/dist/server/rest-middleware.d.ts.map +1 -1
  90. package/dist/server/rest-middleware.js +41 -3
  91. package/dist/server/rest-middleware.js.map +1 -1
  92. package/dist/server/types/lifecycle-types.d.ts +8 -0
  93. package/dist/server/types/lifecycle-types.d.ts.map +1 -1
  94. package/dist/server/types/protocol-namespace-types.d.ts +6 -0
  95. package/dist/server/types/protocol-namespace-types.d.ts.map +1 -1
  96. package/dist/types/handlers.d.ts +5 -0
  97. package/dist/types/handlers.d.ts.map +1 -1
  98. package/dist/ui/core/registry.d.ts +5 -0
  99. package/dist/ui/core/registry.d.ts.map +1 -1
  100. package/dist/ui/docs/markdown-loader.d.ts +2 -1
  101. package/dist/ui/docs/markdown-loader.d.ts.map +1 -1
  102. package/dist/ui/middleware/policy/co-located/loader.d.ts +33 -0
  103. package/dist/ui/middleware/policy/co-located/loader.d.ts.map +1 -0
  104. package/dist/ui/middleware/policy/co-located/resolver.d.ts +83 -0
  105. package/dist/ui/middleware/policy/co-located/resolver.d.ts.map +1 -0
  106. package/dist/ui/middleware/policy/types.d.ts +41 -0
  107. package/dist/ui/middleware/policy/types.d.ts.map +1 -1
  108. package/dist/ui/ports/outbound/policy-engine.d.ts +7 -0
  109. package/dist/ui/ports/outbound/policy-engine.d.ts.map +1 -1
  110. package/dist/ui/server/fs-routes/loader.d.ts.map +1 -1
  111. package/dist/ui/server/fs-routes/resources/types.d.ts +5 -0
  112. package/dist/ui/server/fs-routes/resources/types.d.ts.map +1 -1
  113. package/dist/ui/server/fs-routes/rest/types.d.ts +5 -0
  114. package/dist/ui/server/fs-routes/rest/types.d.ts.map +1 -1
  115. package/dist/ui/server/fs-routes/types.d.ts +22 -0
  116. package/dist/ui/server/fs-routes/types.d.ts.map +1 -1
  117. package/dist/ui/types/handlers.d.ts +5 -0
  118. package/dist/ui/types/handlers.d.ts.map +1 -1
  119. package/package.json +1 -1
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Co-located policy resolver — pure module, no I/O.
3
+ *
4
+ * Given a list of discovered route descriptors (handler file paths + procedure
5
+ * names) and a list of parsed policy file descriptors, return the ordered list
6
+ * of policies that apply to each route.
7
+ *
8
+ * Tracer-bullet (#92) supports only the `sibling` kind: a `<handler>.policy.*`
9
+ * file living next to a handler. Folder cascade (#93), resource (#94), channel
10
+ * (#95), and `match` patterns (#96) reuse the same descriptor shape and extend
11
+ * this resolver.
12
+ */
13
+ import type { Policy } from '../types.js';
14
+ export interface RouteDescriptor {
15
+ /** Resolved procedure name (e.g. `users/:id/get`). */
16
+ name: string;
17
+ /** Absolute path of the handler file. */
18
+ filePath: string;
19
+ }
20
+ export type PolicyFileKind = 'sibling' | 'folder';
21
+ export interface PolicyFileDescriptor {
22
+ /** Absolute path of the policy file. */
23
+ filePath: string;
24
+ /** Parsed and validated policies from this file. */
25
+ policies: readonly Policy[];
26
+ /** Source kind for diagnostics and precedence. */
27
+ kind: PolicyFileKind;
28
+ /**
29
+ * For `folder` kind: the directory whose handlers (recursively) the file
30
+ * covers. Sibling files leave this undefined.
31
+ */
32
+ dir?: string;
33
+ }
34
+ export interface PolicySource {
35
+ filePath: string;
36
+ kind: PolicyFileKind;
37
+ }
38
+ export interface RoutePolicyDescriptor {
39
+ /** Procedure name this descriptor applies to. */
40
+ name: string;
41
+ /** Handler file path (1:1 with the route descriptor). */
42
+ filePath: string;
43
+ /** Policies in apply order. Tracer-bullet emits the sibling file's policies. */
44
+ policies: Policy[];
45
+ /** File paths contributing to this descriptor (diagnostics). */
46
+ sources: PolicySource[];
47
+ }
48
+ /**
49
+ * Strip a `.policy.{yaml,yml,json}` suffix from a path. Returns null when the
50
+ * file is not a policy file.
51
+ */
52
+ export declare function policyFileBaseKey(policyPath: string): string | null;
53
+ /**
54
+ * Strip the source extension from a handler path so it can be paired with a
55
+ * policy file. We compare on the extension-less prefix because handlers may
56
+ * be `.ts` or `.js` while sibling policies are `.yaml`/`.yml`/`.json`.
57
+ */
58
+ export declare function handlerBaseKey(handlerPath: string): string;
59
+ /**
60
+ * Walk ancestor directories from a handler file up to (and including) the
61
+ * provided root, returning the chain in broader→closer order. The handler's
62
+ * own directory is the last entry. When `rootDir` is omitted the walk stops
63
+ * at the filesystem root (loop guard via `parent === cur`).
64
+ */
65
+ export declare function ancestorDirs(handlerPath: string, rootDir?: string): string[];
66
+ /**
67
+ * Match policy files to routes. Resolves both sibling files (`<handler>.policy.*`)
68
+ * and folder cascades (`_policy.*` in any ancestor directory). Apply order
69
+ * inside each route descriptor is broader→closer, with the sibling (when
70
+ * present) appended last so deny semantics in the engine still bite.
71
+ */
72
+ export declare function resolveCoLocatedPolicies(routes: readonly RouteDescriptor[], policyFiles: readonly PolicyFileDescriptor[]): RoutePolicyDescriptor[];
73
+ /**
74
+ * Helper for the loader: list every supported policy filename for a given
75
+ * handler. Caller checks each candidate against its discovery source.
76
+ */
77
+ export declare function siblingPolicyCandidates(handlerPath: string): string[];
78
+ /**
79
+ * Helper for the loader: list every supported `_policy.*` filename inside a
80
+ * directory. Caller checks each candidate against its discovery source.
81
+ */
82
+ export declare function folderPolicyCandidates(dir: string): string[];
83
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/co-located/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEjD,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,kDAAkD;IAClD,IAAI,EAAE,cAAc,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,gEAAgE;IAChE,OAAO,EAAE,YAAY,EAAE,CAAA;CACxB;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,eAAe,EAAE,EAClC,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAC3C,qBAAqB,EAAE,CAuCzB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Co-located policy resolver — pure module, no I/O.
3
+ *
4
+ * Given a list of discovered route descriptors (handler file paths + procedure
5
+ * names) and a list of parsed policy file descriptors, return the ordered list
6
+ * of policies that apply to each route.
7
+ *
8
+ * Tracer-bullet (#92) supports only the `sibling` kind: a `<handler>.policy.*`
9
+ * file living next to a handler. Folder cascade (#93), resource (#94), channel
10
+ * (#95), and `match` patterns (#96) reuse the same descriptor shape and extend
11
+ * this resolver.
12
+ */
13
+ import { dirname, extname } from 'node:path';
14
+ const POLICY_EXTENSIONS = ['.yaml', '.yml', '.json'];
15
+ const POLICY_INFIX = '.policy';
16
+ const FOLDER_POLICY_BASENAME = '_policy';
17
+ /**
18
+ * Strip a `.policy.{yaml,yml,json}` suffix from a path. Returns null when the
19
+ * file is not a policy file.
20
+ */
21
+ export function policyFileBaseKey(policyPath) {
22
+ const ext = extname(policyPath);
23
+ if (!POLICY_EXTENSIONS.includes(ext))
24
+ return null;
25
+ const stem = policyPath.slice(0, -ext.length);
26
+ if (!stem.endsWith(POLICY_INFIX))
27
+ return null;
28
+ return stem.slice(0, -POLICY_INFIX.length);
29
+ }
30
+ /**
31
+ * Strip the source extension from a handler path so it can be paired with a
32
+ * policy file. We compare on the extension-less prefix because handlers may
33
+ * be `.ts` or `.js` while sibling policies are `.yaml`/`.yml`/`.json`.
34
+ */
35
+ export function handlerBaseKey(handlerPath) {
36
+ const ext = extname(handlerPath);
37
+ if (!ext)
38
+ return handlerPath;
39
+ return handlerPath.slice(0, -ext.length);
40
+ }
41
+ /**
42
+ * Walk ancestor directories from a handler file up to (and including) the
43
+ * provided root, returning the chain in broader→closer order. The handler's
44
+ * own directory is the last entry. When `rootDir` is omitted the walk stops
45
+ * at the filesystem root (loop guard via `parent === cur`).
46
+ */
47
+ export function ancestorDirs(handlerPath, rootDir) {
48
+ const chain = [];
49
+ let cur = dirname(handlerPath);
50
+ while (true) {
51
+ chain.unshift(cur);
52
+ if (rootDir !== undefined && cur === rootDir)
53
+ break;
54
+ const parent = dirname(cur);
55
+ if (parent === cur)
56
+ break;
57
+ cur = parent;
58
+ }
59
+ return chain;
60
+ }
61
+ /**
62
+ * Match policy files to routes. Resolves both sibling files (`<handler>.policy.*`)
63
+ * and folder cascades (`_policy.*` in any ancestor directory). Apply order
64
+ * inside each route descriptor is broader→closer, with the sibling (when
65
+ * present) appended last so deny semantics in the engine still bite.
66
+ */
67
+ export function resolveCoLocatedPolicies(routes, policyFiles) {
68
+ const siblingByKey = new Map();
69
+ const folderByDir = new Map();
70
+ for (const file of policyFiles) {
71
+ if (file.kind === 'sibling') {
72
+ const key = policyFileBaseKey(file.filePath);
73
+ if (key)
74
+ siblingByKey.set(key, file);
75
+ }
76
+ else if (file.kind === 'folder' && file.dir) {
77
+ folderByDir.set(file.dir, file);
78
+ }
79
+ }
80
+ const out = [];
81
+ for (const route of routes) {
82
+ const policies = [];
83
+ const sources = [];
84
+ for (const dir of ancestorDirs(route.filePath)) {
85
+ const folder = folderByDir.get(dir);
86
+ if (!folder)
87
+ continue;
88
+ policies.push(...folder.policies);
89
+ sources.push({ filePath: folder.filePath, kind: 'folder' });
90
+ }
91
+ const sibling = siblingByKey.get(handlerBaseKey(route.filePath));
92
+ if (sibling) {
93
+ policies.push(...sibling.policies);
94
+ sources.push({ filePath: sibling.filePath, kind: 'sibling' });
95
+ }
96
+ if (sources.length === 0)
97
+ continue;
98
+ out.push({
99
+ name: route.name,
100
+ filePath: route.filePath,
101
+ policies,
102
+ sources,
103
+ });
104
+ }
105
+ return out;
106
+ }
107
+ /**
108
+ * Helper for the loader: list every supported policy filename for a given
109
+ * handler. Caller checks each candidate against its discovery source.
110
+ */
111
+ export function siblingPolicyCandidates(handlerPath) {
112
+ const key = handlerBaseKey(handlerPath);
113
+ return POLICY_EXTENSIONS.map((ext) => `${key}${POLICY_INFIX}${ext}`);
114
+ }
115
+ /**
116
+ * Helper for the loader: list every supported `_policy.*` filename inside a
117
+ * directory. Caller checks each candidate against its discovery source.
118
+ */
119
+ export function folderPolicyCandidates(dir) {
120
+ return POLICY_EXTENSIONS.map((ext) => `${dir}/${FOLDER_POLICY_BASENAME}${ext}`);
121
+ }
122
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../src/middleware/policy/co-located/resolver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAA0B,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAI5E;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAGjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAU3E"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAA0B,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAI5E;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAsB5D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAGjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,MAAM,EAAE,CAU3E"}
@@ -19,6 +19,15 @@ export function compilePolicyPatterns(policy) {
19
19
  actions: policy.actions.map(compileGlob),
20
20
  resources: policy.resources.map(compileGlob),
21
21
  };
22
+ if (policy.scope?.routes && policy.scope.routes.length > 0) {
23
+ compiled.scopeRoutes = policy.scope.routes.map(compileGlob);
24
+ }
25
+ if (policy.scope?.channels && policy.scope.channels.length > 0) {
26
+ compiled.scopeChannels = policy.scope.channels.map(compileGlob);
27
+ }
28
+ if (policy.scope?.protocols && policy.scope.protocols.length > 0) {
29
+ compiled.scopeProtocols = policy.scope.protocols.map(compileGlob);
30
+ }
22
31
  policy._compiled = compiled;
23
32
  }
24
33
  if (policy.match && !policy._compiledMatch) {
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,QAAQ,GAA2B;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;YAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;SAC7C,CAAA;QACD,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,CAAC,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC5D,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,qBAAqB,CAAC,CAAC,CAAC,CAAA;IAClD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,IAAI,SAAS,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC,YAAY,CAAA;IAEzD,MAAM,GAAG,GAAa,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACjE,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IAChE,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACjC,SAAS,CAAC,YAAY,GAAG,MAAM,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/compile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,QAAQ,GAA2B;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;YAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;SAC7C,CAAA;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACjE,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACnE,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,CAAC,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAA2B;IAC5D,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,qBAAqB,CAAC,CAAC,CAAC,CAAA;IAClD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAoB;IACtD,IAAI,SAAS,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC,YAAY,CAAA;IAEzD,MAAM,GAAG,GAAa,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IACjE,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IAChE,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACjC,SAAS,CAAC,YAAY,GAAG,MAAM,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,UAAU,EAEV,QAAQ,EACR,MAAM,EACP,MAAM,aAAa,CAAA;AA2DpB,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5D;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CA4FV"}
1
+ {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,UAAU,EAEV,QAAQ,EACR,MAAM,EACP,MAAM,aAAa,CAAA;AAgFpB,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5D;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CA4FV"}
@@ -15,6 +15,26 @@ import { matchAnyCompiled, matchSetBidirectional } from './match.js';
15
15
  function checkPolicyPatterns(policy, input) {
16
16
  compilePolicyPatterns(policy);
17
17
  const compiled = policy._compiled;
18
+ // Scope filter (protocol/route/channel). When any scope facet is set the
19
+ // policy is short-circuited if the input does not match — this keeps the
20
+ // policy out of `candidatePolicies` diagnostics so reports stay quiet for
21
+ // non-applicable transports.
22
+ if (compiled.scopeProtocols && compiled.scopeProtocols.length > 0) {
23
+ const protocol = input.protocol ?? '';
24
+ if (!matchAnyCompiled(protocol, compiled.scopeProtocols)) {
25
+ return { fullMatch: false, missing: ['scope.protocols'] };
26
+ }
27
+ }
28
+ if (compiled.scopeRoutes && compiled.scopeRoutes.length > 0) {
29
+ if (!matchAnyCompiled(input.action, compiled.scopeRoutes)) {
30
+ return { fullMatch: false, missing: ['scope.routes'] };
31
+ }
32
+ }
33
+ if (compiled.scopeChannels && compiled.scopeChannels.length > 0) {
34
+ if (!matchAnyCompiled(input.action, compiled.scopeChannels)) {
35
+ return { fullMatch: false, missing: ['scope.channels'] };
36
+ }
37
+ }
18
38
  const principalSet = compilePrincipalSet(input.principal);
19
39
  const resourceTag = `${input.resource.type}:${input.resource.id}`;
20
40
  const principalsMatch = matchSetBidirectional(principalSet, policy.principals, compiled.principals);
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/evaluate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/evaluate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,KAAK,EAAwB,MAAM,EAAE,MAAM,aAAa,CAAA;AAI/D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5D;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAA+B,GACvC,gBAAgB,CAYlB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,KAAK,EAAwB,MAAM,EAAE,MAAM,aAAa,CAAA;AAI/D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5D;AAED,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAA+B,GACvC,gBAAgB,CA2BlB"}
@@ -7,14 +7,31 @@
7
7
  import { compileAllPolicies } from './compile.js';
8
8
  import { evaluate } from './evaluate.js';
9
9
  export function createDefaultEngine(options = {}) {
10
- const policies = Object.freeze([...compileAllPolicies(options.policies ?? [])]);
10
+ const policies = [...compileAllPolicies(options.policies ?? [])];
11
+ const seenIds = new Set(policies.map((p) => p.id));
11
12
  const onConditionError = options.onConditionError;
12
13
  return {
13
14
  evaluate(input) {
14
15
  return evaluate(input, policies, { onConditionError });
15
16
  },
16
17
  list() {
17
- return policies;
18
+ return Object.freeze([...policies]);
19
+ },
20
+ addPolicies(extras) {
21
+ if (extras.length === 0)
22
+ return;
23
+ const compiled = compileAllPolicies(extras);
24
+ for (const p of compiled) {
25
+ if (seenIds.has(p.id)) {
26
+ // Replace in-place to preserve list order semantics for duplicates.
27
+ const idx = policies.findIndex((existing) => existing.id === p.id);
28
+ if (idx >= 0)
29
+ policies[idx] = p;
30
+ continue;
31
+ }
32
+ seenIds.add(p.id);
33
+ policies.push(p);
34
+ }
18
35
  },
19
36
  };
20
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAYxC,MAAM,UAAU,mBAAmB,CACjC,UAAsC,EAAE;IAExC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/E,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;IAEjD,OAAO;QACL,QAAQ,CAAC,KAAiB;YACxB,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAA;QACxD,CAAC;QACD,IAAI;YACF,OAAO,QAAQ,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/policy/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAYxC,MAAM,UAAU,mBAAmB,CACjC,UAAsC,EAAE;IAExC,MAAM,QAAQ,GAAa,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;IAEjD,OAAO;QACL,QAAQ,CAAC,KAAiB;YACxB,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAA;QACxD,CAAC;QACD,IAAI;YACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;QACrC,CAAC;QACD,WAAW,CAAC,MAAyB;YACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAC/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;YAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACtB,oEAAoE;oBACpE,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;oBAClE,IAAI,GAAG,IAAI,CAAC;wBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;oBAC/B,SAAQ;gBACV,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBACjB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -36,5 +36,9 @@ export type { PolicyBootstrap, CreatePolicyBootstrapOptions } from './bootstrap.
36
36
  export type { PolicyCtxHelpers } from './ctx-helpers.js';
37
37
  export { loadPoliciesFromDir, mergePolicies } from './loader.js';
38
38
  export type { LoadOptions, LoadResult } from './loader.js';
39
+ export { resolveCoLocatedPolicies, siblingPolicyCandidates, handlerBaseKey, policyFileBaseKey, } from './co-located/resolver.js';
40
+ export type { RouteDescriptor as CoLocatedRouteDescriptor, PolicyFileDescriptor as CoLocatedPolicyFileDescriptor, PolicyFileKind as CoLocatedPolicyFileKind, PolicySource as CoLocatedPolicySource, RoutePolicyDescriptor as CoLocatedRoutePolicyDescriptor, } from './co-located/resolver.js';
41
+ export { loadCoLocatedPolicies } from './co-located/loader.js';
42
+ export type { CoLocatedLoadOptions, CoLocatedLoadResult, } from './co-located/loader.js';
39
43
  export type { AuthzInput, CandidatePolicy, CompiledPolicyPatterns, Decision, DecisionReason, EvalContext, JsonPolicy, MatchLiteral, MatchNode, MatchOperator, MatchValue, Policy, PolicyCondition, PolicyConfig, PolicyEffect, PolicyEnginePortLike, PolicyForbiddenBody, Principal, PrincipalConfig, PrincipalSource, ProcedurePolicyConfig, Resource, ResourceResolver, } from './types.js';
40
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,YAAY,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAMnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,YAAY,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAGnF,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAGxD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG1D,YAAY,EACV,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,MAAM,EACN,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,YAAY,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAMnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,YAAY,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAGnF,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAGxD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG1D,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,eAAe,IAAI,wBAAwB,EAC3C,oBAAoB,IAAI,6BAA6B,EACrD,cAAc,IAAI,uBAAuB,EACzC,YAAY,IAAI,qBAAqB,EACrC,qBAAqB,IAAI,8BAA8B,GACxD,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,YAAY,EACV,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAG/B,YAAY,EACV,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,QAAQ,EACR,cAAc,EACd,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,MAAM,EACN,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,GACjB,MAAM,YAAY,CAAA"}
@@ -38,4 +38,7 @@ export { createDefaultEngine } from './engine/index.js';
38
38
  export { createPolicyBootstrap } from './bootstrap.js';
39
39
  // JSON loader
40
40
  export { loadPoliciesFromDir, mergePolicies } from './loader.js';
41
+ // Co-located policy discovery (sibling `<file>.policy.{yaml,yml,json}`)
42
+ export { resolveCoLocatedPolicies, siblingPolicyCandidates, handlerBaseKey, policyFileBaseKey, } from './co-located/resolver.js';
43
+ export { loadCoLocatedPolicies } from './co-located/loader.js';
41
44
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAGvD,kEAAkE;AAClE,oEAAoE;AACpE,8DAA8D;AAC9D,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAMtD,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAGvD,kEAAkE;AAClE,oEAAoE;AACpE,8DAA8D;AAC9D,2BAA2B;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAMtD,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhE,wEAAwE;AACxE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,GAClB,MAAM,0BAA0B,CAAA;AAQjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../../src/middleware/policy/interceptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AAE7E,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAKV,qBAAqB,EAEtB,MAAM,YAAY,CAAA;AAKnB,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,gBAAgB,CAAA;IACxB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,MAAM,EAAE,qBAAqB,CAAA;IAC7B,4DAA4D;IAC5D,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB;AAwFD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,EACrB,mBAAmB,UAAQ,GAC1B,WAAW,CAYb;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,WAAW,CA+Fb"}
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../../src/middleware/policy/interceptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AAE7E,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAKV,qBAAqB,EAEtB,MAAM,YAAY,CAAA;AAKnB,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,gBAAgB,CAAA;IACxB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,MAAM,EAAE,qBAAqB,CAAA;IAC7B,4DAA4D;IAC5D,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,8CAA8C;IAC9C,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB;AAwFD;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,MAAM,EACrB,mBAAmB,UAAQ,GAC1B,WAAW,CAYb;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,GACtC,WAAW,CAyGb"}
@@ -122,6 +122,8 @@ export function createPolicyInterceptor(options) {
122
122
  }
123
123
  // Attach ctx.policy.{evaluate,filterResources} helpers (idempotent).
124
124
  attachPolicyHelpers(ctx, engine, principal);
125
+ const protocol = ctx.protocol;
126
+ const protocolValue = typeof protocol === 'string' ? protocol : undefined;
125
127
  const resources = await resolveResources(config, envelope, ctx);
126
128
  if (!resources) {
127
129
  // No resource → run a single eval with a synthetic placeholder so
@@ -135,6 +137,7 @@ export function createPolicyInterceptor(options) {
135
137
  principal,
136
138
  action,
137
139
  resource: placeholderResource,
140
+ ...(protocolValue ? { protocol: protocolValue } : {}),
138
141
  });
139
142
  attachDecision(ctx, decision);
140
143
  logDecision(logger, decision, action, principal, placeholderResource);
@@ -148,7 +151,10 @@ export function createPolicyInterceptor(options) {
148
151
  let lastResource;
149
152
  let allowed = false;
150
153
  for (const resource of resources) {
151
- const decision = await engine.evaluate({ principal, action, resource });
154
+ const decision = await engine.evaluate({
155
+ principal, action, resource,
156
+ ...(protocolValue ? { protocol: protocolValue } : {}),
157
+ });
152
158
  lastDecision = decision;
153
159
  lastResource = resource;
154
160
  logDecision(logger, decision, action, principal, resource);
@@ -166,7 +172,10 @@ export function createPolicyInterceptor(options) {
166
172
  }
167
173
  // enforce — every resource must pass
168
174
  for (const resource of resources) {
169
- const decision = await engine.evaluate({ principal, action, resource });
175
+ const decision = await engine.evaluate({
176
+ principal, action, resource,
177
+ ...(protocolValue ? { protocol: protocolValue } : {}),
178
+ });
170
179
  attachDecision(ctx, decision);
171
180
  logDecision(logger, decision, action, principal, resource);
172
181
  if (!decision.allowed) {
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../../src/middleware/policy/interceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../../src/middleware/policy/interceptor.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,31 @@ export interface AuthzInput {
47
47
  action: string;
48
48
  resource: Resource;
49
49
  context?: EvalContext;
50
+ /**
51
+ * Transport that delivered the request: `'http'`, `'ws'`, `'grpc'`,
52
+ * `'jsonrpc'`, `'tcp'`, `'udp'`, etc. When present, policies declaring a
53
+ * `scope.protocols` filter must match this value (glob comparison).
54
+ */
55
+ protocol?: string;
56
+ }
57
+ /**
58
+ * Optional applicability scope. When any field is present, the policy is
59
+ * considered only for inputs whose corresponding facet matches at least one
60
+ * pattern. All declared facets must match (implicit AND); facets that are
61
+ * not declared are not filtered. Patterns are the same glob form used by
62
+ * `principals`/`actions`/`resources`.
63
+ *
64
+ * `routes` and `channels` are sugar over the existing `actions` patterns —
65
+ * they match against `AuthzInput.action`. Declaring both is fine; they OR
66
+ * together within their own facet but each facet still ANDs with the others.
67
+ */
68
+ export interface PolicyScope {
69
+ /** Match against the procedure/route name (i.e. `AuthzInput.action`). */
70
+ routes?: string[];
71
+ /** Match against the channel name (also `AuthzInput.action` for channels). */
72
+ channels?: string[];
73
+ /** Match against the transport name (`AuthzInput.protocol`). */
74
+ protocols?: string[];
50
75
  }
51
76
  export type PolicyEffect = 'allow' | 'deny' | 'audit';
52
77
  /**
@@ -77,6 +102,12 @@ export interface Policy {
77
102
  * BOTH must pass (implicit AND).
78
103
  */
79
104
  match?: MatchNode;
105
+ /**
106
+ * Optional applicability filter (`scope.protocols`, `scope.routes`,
107
+ * `scope.channels`). When set, the policy is skipped entirely for inputs
108
+ * that do not match. See `PolicyScope`.
109
+ */
110
+ scope?: PolicyScope;
80
111
  /** @internal Source path — populated by the loader for diagnostics. */
81
112
  _source?: string;
82
113
  /** @internal Index within source — populated by the loader. */
@@ -93,6 +124,9 @@ export interface CompiledPolicyPatterns {
93
124
  principals: readonly RegExp[];
94
125
  actions: readonly RegExp[];
95
126
  resources: readonly RegExp[];
127
+ scopeRoutes?: readonly RegExp[];
128
+ scopeChannels?: readonly RegExp[];
129
+ scopeProtocols?: readonly RegExp[];
96
130
  }
97
131
  /**
98
132
  * JSON-loadable policy. Same as `Policy` but `condition` is replaced by
@@ -204,6 +238,13 @@ export interface PolicyConfig {
204
238
  engine?: PolicyEnginePortLike;
205
239
  /** Logger override (defaults to the server's `LoggerPort`). */
206
240
  logger?: LoggerPort;
241
+ /**
242
+ * Toggle co-located policy loading (`<handler>.policy.{yaml,yml,json}`,
243
+ * future folder cascades). Defaults to `true` whenever FS discovery is
244
+ * enabled, `false` otherwise. Pass `true` here to opt-in even without
245
+ * discovery (e.g. resolved manually) or `false` to disable globally.
246
+ */
247
+ coLocated?: boolean;
207
248
  }
208
249
  /**
209
250
  * Forward-declared port shape — full interface lives in
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/policy/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/middleware/policy/types.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,13 @@ export interface PolicyEnginePort extends PolicyEnginePortLike {
20
20
  evaluate(input: AuthzInput): Decision | Promise<Decision>;
21
21
  /** Read-only snapshot of all currently loaded policies. */
22
22
  list(): readonly Policy[];
23
+ /**
24
+ * Optional: append policies discovered after engine creation (e.g. from
25
+ * co-located policy files surfaced by FS discovery). Implementations that
26
+ * cannot accept new policies post-construction MAY omit this method; the
27
+ * server logs a warning and skips co-located bridging when absent.
28
+ */
29
+ addPolicies?(policies: readonly Policy[]): void;
23
30
  }
24
31
  export type { AuthzInput, Decision, DecisionReason, Policy, JsonPolicy, PolicyEffect, PolicyCondition, Principal, Resource, EvalContext, CandidatePolicy, MatchNode, MatchValue, MatchOperator, MatchLiteral, PolicyConfig, PrincipalConfig, PrincipalSource, ProcedurePolicyConfig, ResourceResolver, PolicyForbiddenBody, } from '../../middleware/policy/types.js';
25
32
  //# sourceMappingURL=policy-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/policy-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,oBAAoB,EACrB,MAAM,kCAAkC,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzD,2DAA2D;IAC3D,IAAI,IAAI,SAAS,MAAM,EAAE,CAAA;CAC1B;AAED,YAAY,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,MAAM,EACN,UAAU,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,WAAW,EACX,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kCAAkC,CAAA"}
1
+ {"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../../../src/ports/outbound/policy-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,oBAAoB,EACrB,MAAM,kCAAkC,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzD,2DAA2D;IAC3D,IAAI,IAAI,SAAS,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;CAChD;AAED,YAAY,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,MAAM,EACN,UAAU,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,WAAW,EACX,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kCAAkC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"execution-http-resources.d.ts","sourceRoot":"","sources":["../../../src/server/builder/execution-http-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAM5D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AAE3E,KAAK,0BAA0B,GAAG,OAAO,CACvC,+BAA+B,EAC7B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CACnB,CAAA;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,+BAA+B;oCAK3E,0BAA0B,kBAChB,cAAc,EAAE;EAsCnC"}
1
+ {"version":3,"file":"execution-http-resources.d.ts","sourceRoot":"","sources":["../../../src/server/builder/execution-http-resources.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAM5D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAA;AACzE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAA;AAE3E,KAAK,0BAA0B,GAAG,OAAO,CACvC,+BAA+B,EAC7B;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CACnB,CAAA;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,+BAA+B;oCAK3E,0BAA0B,kBAChB,cAAc,EAAE;EAuCnC"}
@@ -20,6 +20,7 @@ export function createExecutionHttpResources(context) {
20
20
  httpMiddleware.push(createRestMiddleware({
21
21
  restResources: restResourceRegistry,
22
22
  router,
23
+ registry,
23
24
  basePath,
24
25
  maxBodySize: step.feature.maxBodySize,
25
26
  contextFactory: step.feature.contextFactory,
@@ -1 +1 @@
1
- {"version":3,"file":"execution-http-resources.js","sourceRoot":"","sources":["../../../src/server/builder/execution-http-resources.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAA;AAU9B,MAAM,UAAU,4BAA4B,CAAC,OAAwC;IACnF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAA;IACzC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAA;IAEvD,SAAS,uBAAuB,CAC9B,IAAgC,EAChC,cAAgC;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,cAAc,CAAC,IAAI,CACjB,4BAA4B,CAAC;oBAC3B,MAAM;oBACN,QAAQ;oBACR,QAAQ;oBACR,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;oBACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC3B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;iBAC5C,CAAC,CACH,CAAA;gBACD,OAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,cAAc,CAAC,IAAI,CACjB,oBAAoB,CAAC;oBACnB,aAAa,EAAE,oBAAoB;oBACnC,MAAM;oBACN,QAAQ;oBACR,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;oBACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC3B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;iBAC5C,CAAC,CACH,CAAA;gBACD,2BAA2B,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,uBAAuB;KACxB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"execution-http-resources.js","sourceRoot":"","sources":["../../../src/server/builder/execution-http-resources.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAA;AAU9B,MAAM,UAAU,4BAA4B,CAAC,OAAwC;IACnF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAA;IACzC,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAA;IAEvD,SAAS,uBAAuB,CAC9B,IAAgC,EAChC,cAAgC;QAEhC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,cAAc,CAAC,IAAI,CACjB,4BAA4B,CAAC;oBAC3B,MAAM;oBACN,QAAQ;oBACR,QAAQ;oBACR,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;oBACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC3B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;iBAC5C,CAAC,CACH,CAAA;gBACD,OAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,cAAc,CAAC,IAAI,CACjB,oBAAoB,CAAC;oBACnB,aAAa,EAAE,oBAAoB;oBACnC,MAAM;oBACN,QAAQ;oBACR,QAAQ;oBACR,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;oBACrC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;oBAC3C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC3B,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;iBAC5C,CAAC,CACH,CAAA;gBACD,2BAA2B,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,uBAAuB;KACxB,CAAA;AACH,CAAC"}