apcore-js 0.7.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/README.md +11 -2
- package/dist/acl.d.ts +18 -1
- package/dist/acl.d.ts.map +1 -1
- package/dist/acl.js +46 -5
- package/dist/acl.js.map +1 -1
- package/dist/config.d.ts +34 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +251 -9
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +7 -10
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +8 -11
- package/dist/context.js.map +1 -1
- package/dist/error-code-registry.d.ts +26 -0
- package/dist/error-code-registry.d.ts.map +1 -0
- package/dist/error-code-registry.js +91 -0
- package/dist/error-code-registry.js.map +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +5 -3
- package/dist/errors.js.map +1 -1
- package/dist/executor.d.ts +17 -4
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +133 -58
- package/dist/executor.js.map +1 -1
- package/dist/index.d.ts +13 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/index.js.map +1 -1
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/manager.d.ts +1 -0
- package/dist/middleware/manager.d.ts.map +1 -1
- package/dist/middleware/manager.js +1 -0
- package/dist/middleware/manager.js.map +1 -1
- package/dist/middleware/retry.d.ts +31 -0
- package/dist/middleware/retry.d.ts.map +1 -0
- package/dist/middleware/retry.js +67 -0
- package/dist/middleware/retry.js.map +1 -0
- package/dist/module.d.ts +12 -0
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +7 -0
- package/dist/module.js.map +1 -1
- package/dist/observability/context-logger.d.ts +1 -1
- package/dist/observability/context-logger.d.ts.map +1 -1
- package/dist/observability/context-logger.js.map +1 -1
- package/dist/registry/registry.d.ts +49 -0
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +122 -0
- package/dist/registry/registry.js.map +1 -1
- package/dist/schema/exporter.d.ts.map +1 -1
- package/dist/schema/exporter.js +1 -0
- package/dist/schema/exporter.js.map +1 -1
- package/dist/utils/call-chain.d.ts +23 -0
- package/dist/utils/call-chain.d.ts.map +1 -0
- package/dist/utils/call-chain.js +50 -0
- package/dist/utils/call-chain.js.map +1 -0
- package/dist/utils/error-propagation.d.ts +18 -0
- package/dist/utils/error-propagation.d.ts.map +1 -0
- package/dist/utils/error-propagation.js +35 -0
- package/dist/utils/error-propagation.js.map +1 -0
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/normalize.d.ts +18 -0
- package/dist/utils/normalize.d.ts.map +1 -0
- package/dist/utils/normalize.js +61 -0
- package/dist/utils/normalize.js.map +1 -0
- package/dist/utils/pattern.d.ts +15 -0
- package/dist/utils/pattern.d.ts.map +1 -1
- package/dist/utils/pattern.js +31 -0
- package/dist/utils/pattern.js.map +1 -1
- package/dist/version.d.ts +27 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +104 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error propagation (Algorithm A11).
|
|
3
|
+
*/
|
|
4
|
+
import { ModuleError, ModuleExecuteError } from '../errors.js';
|
|
5
|
+
/**
|
|
6
|
+
* Wrap a raw error into a standardized ModuleError (Algorithm A11).
|
|
7
|
+
*
|
|
8
|
+
* If the error is already a ModuleError, enriches it with trace context.
|
|
9
|
+
* Otherwise wraps it as a ModuleExecuteError.
|
|
10
|
+
*
|
|
11
|
+
* @param error - The raw error.
|
|
12
|
+
* @param moduleId - Module ID where the error occurred.
|
|
13
|
+
* @param context - Current execution context.
|
|
14
|
+
* @returns A ModuleError with traceId, moduleId, and callChain attached.
|
|
15
|
+
*/
|
|
16
|
+
export function propagateError(error, moduleId, context) {
|
|
17
|
+
if (error instanceof ModuleError) {
|
|
18
|
+
// Already a ModuleError -- enrich with context if missing
|
|
19
|
+
if (error.traceId === undefined) {
|
|
20
|
+
error.traceId = context.traceId;
|
|
21
|
+
}
|
|
22
|
+
if (!('module_id' in error.details)) {
|
|
23
|
+
error.details['module_id'] = moduleId;
|
|
24
|
+
}
|
|
25
|
+
if (!('call_chain' in error.details)) {
|
|
26
|
+
error.details['call_chain'] = [...context.callChain];
|
|
27
|
+
}
|
|
28
|
+
return error;
|
|
29
|
+
}
|
|
30
|
+
// Wrap raw error as ModuleExecuteError
|
|
31
|
+
const wrapped = new ModuleExecuteError(moduleId, `Module '${moduleId}' raised ${error.constructor.name}: ${error.message}`, { cause: error });
|
|
32
|
+
wrapped.details['call_chain'] = [...context.callChain];
|
|
33
|
+
return wrapped;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=error-propagation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-propagation.js","sourceRoot":"","sources":["../../src/utils/error-propagation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,QAAgB,EAAE,OAAgB;IAC7E,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,0DAA0D;QAC1D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,KAA6B,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uCAAuC;IACvC,MAAM,OAAO,GAAG,IAAI,kBAAkB,CACpC,QAAQ,EACR,WAAW,QAAQ,YAAY,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,EACzE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACF,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export { matchPattern } from './pattern.js';
|
|
1
|
+
export { matchPattern, calculateSpecificity } from './pattern.js';
|
|
2
|
+
export { normalizeToCanonicalId } from './normalize.js';
|
|
3
|
+
export { guardCallChain, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_MODULE_REPEAT } from './call-chain.js';
|
|
4
|
+
export { propagateError } from './error-propagation.js';
|
|
2
5
|
export declare function deepCopy<T>(obj: T): T;
|
|
3
6
|
/**
|
|
4
7
|
* Generate a random hex string of the given byte length.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAMxD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAErC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAYpD"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export { matchPattern } from './pattern.js';
|
|
1
|
+
export { matchPattern, calculateSpecificity } from './pattern.js';
|
|
2
|
+
export { normalizeToCanonicalId } from './normalize.js';
|
|
3
|
+
export { guardCallChain, DEFAULT_MAX_CALL_DEPTH, DEFAULT_MAX_MODULE_REPEAT } from './call-chain.js';
|
|
4
|
+
export { propagateError } from './error-propagation.js';
|
|
2
5
|
// Lazy-load node:crypto for environments without globalThis.crypto (Node.js < 19)
|
|
3
6
|
let _nodeCrypto;
|
|
4
7
|
try {
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,kFAAkF;AAClF,IAAI,WAAqD,CAAC;AAC1D,IAAI,CAAC;IAAC,WAAW,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;AAEtF,MAAM,UAAU,QAAQ,CAAI,GAAM;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,UAAkB;IAC1C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,WAAW,EAAE,SAAS,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC;QACN,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-language module ID normalization (Algorithm A02).
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Convert a language-local module ID to Canonical ID format (Algorithm A02).
|
|
6
|
+
*
|
|
7
|
+
* Steps:
|
|
8
|
+
* 1. Split by language-specific separator.
|
|
9
|
+
* 2. Normalize each segment from PascalCase/camelCase to snake_case.
|
|
10
|
+
* 3. Join with "." and validate against Canonical ID EBNF.
|
|
11
|
+
*
|
|
12
|
+
* @param localId - Language-local format ID (e.g. "executor::validator::DbParams").
|
|
13
|
+
* @param language - Source language ("python" | "rust" | "go" | "java" | "typescript").
|
|
14
|
+
* @returns Dot-separated snake_case Canonical ID.
|
|
15
|
+
* @throws {Error} If language is unsupported or the result is not a valid Canonical ID.
|
|
16
|
+
*/
|
|
17
|
+
export declare function normalizeToCanonicalId(localId: string, language: string): string;
|
|
18
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkCH;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuBhF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-language module ID normalization (Algorithm A02).
|
|
3
|
+
*/
|
|
4
|
+
const SEPARATORS = {
|
|
5
|
+
python: '.',
|
|
6
|
+
rust: '::',
|
|
7
|
+
go: '.',
|
|
8
|
+
java: '.',
|
|
9
|
+
typescript: '.',
|
|
10
|
+
};
|
|
11
|
+
const SUPPORTED_LANGUAGES = new Set(Object.keys(SEPARATORS));
|
|
12
|
+
/**
|
|
13
|
+
* Regex for splitting PascalCase / camelCase into words.
|
|
14
|
+
* Handles transitions like: "Http" | "JSON" | "Parser" | "v2".
|
|
15
|
+
*/
|
|
16
|
+
const CASE_BOUNDARY = /(?<=[a-z0-9])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])/g;
|
|
17
|
+
/** Canonical ID format from PROTOCOL_SPEC section 2.7 EBNF grammar. */
|
|
18
|
+
const CANONICAL_ID_RE = /^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/;
|
|
19
|
+
function toSnakeCase(segment) {
|
|
20
|
+
if (!segment)
|
|
21
|
+
return segment;
|
|
22
|
+
// If already snake_case (all lowercase + underscores), return as-is.
|
|
23
|
+
if (segment === segment.toLowerCase() && /^[a-z_]\w*$/.test(segment)) {
|
|
24
|
+
return segment;
|
|
25
|
+
}
|
|
26
|
+
// Split at case boundaries, join with underscore, lowercase.
|
|
27
|
+
const words = segment.split(CASE_BOUNDARY).filter(Boolean);
|
|
28
|
+
return words.map((w) => w.toLowerCase()).join('_');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Convert a language-local module ID to Canonical ID format (Algorithm A02).
|
|
32
|
+
*
|
|
33
|
+
* Steps:
|
|
34
|
+
* 1. Split by language-specific separator.
|
|
35
|
+
* 2. Normalize each segment from PascalCase/camelCase to snake_case.
|
|
36
|
+
* 3. Join with "." and validate against Canonical ID EBNF.
|
|
37
|
+
*
|
|
38
|
+
* @param localId - Language-local format ID (e.g. "executor::validator::DbParams").
|
|
39
|
+
* @param language - Source language ("python" | "rust" | "go" | "java" | "typescript").
|
|
40
|
+
* @returns Dot-separated snake_case Canonical ID.
|
|
41
|
+
* @throws {Error} If language is unsupported or the result is not a valid Canonical ID.
|
|
42
|
+
*/
|
|
43
|
+
export function normalizeToCanonicalId(localId, language) {
|
|
44
|
+
if (!localId) {
|
|
45
|
+
throw new Error('localId must be a non-empty string');
|
|
46
|
+
}
|
|
47
|
+
if (!SUPPORTED_LANGUAGES.has(language)) {
|
|
48
|
+
const supported = [...SUPPORTED_LANGUAGES].sort().join(', ');
|
|
49
|
+
throw new Error(`Unsupported language '${language}'. Must be one of: ${supported}`);
|
|
50
|
+
}
|
|
51
|
+
const separator = SEPARATORS[language];
|
|
52
|
+
const segments = localId.split(separator);
|
|
53
|
+
const normalized = segments.map(toSnakeCase);
|
|
54
|
+
const canonicalId = normalized.join('.');
|
|
55
|
+
if (!CANONICAL_ID_RE.test(canonicalId)) {
|
|
56
|
+
throw new Error(`Normalized ID '${canonicalId}' (from '${localId}', language='${language}') ` +
|
|
57
|
+
'does not conform to Canonical ID grammar');
|
|
58
|
+
}
|
|
59
|
+
return canonicalId;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,GAA2B;IACzC,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,IAAI;IACV,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAE7D;;;GAGG;AACH,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAEzE,uEAAuE;AACvE,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAEhE,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAE7B,qEAAqE;IACrE,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6DAA6D;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe,EAAE,QAAgB;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,kBAAkB,WAAW,YAAY,OAAO,gBAAgB,QAAQ,KAAK;YAC7E,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/dist/utils/pattern.d.ts
CHANGED
|
@@ -2,4 +2,19 @@
|
|
|
2
2
|
* Wildcard pattern matching for module IDs (Algorithm A08).
|
|
3
3
|
*/
|
|
4
4
|
export declare function matchPattern(pattern: string, moduleId: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Calculate the specificity score of an ACL pattern (Algorithm A10).
|
|
7
|
+
*
|
|
8
|
+
* Higher scores indicate more specific patterns. Scoring per segment:
|
|
9
|
+
* - "*" (pure wildcard) -> 0
|
|
10
|
+
* - Segment containing "*" (partial wildcard) -> +1
|
|
11
|
+
* - Exact segment (no wildcard) -> +2
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* calculateSpecificity("*") // 0
|
|
15
|
+
* calculateSpecificity("api.*") // 2
|
|
16
|
+
* calculateSpecificity("api.handler.*") // 4
|
|
17
|
+
* calculateSpecificity("api.handler.task_submit") // 6
|
|
18
|
+
*/
|
|
19
|
+
export declare function calculateSpecificity(pattern: string): number;
|
|
5
20
|
//# sourceMappingURL=pattern.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/utils/pattern.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAyBvE"}
|
|
1
|
+
{"version":3,"file":"pattern.d.ts","sourceRoot":"","sources":["../../src/utils/pattern.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAyBvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAc5D"}
|
package/dist/utils/pattern.js
CHANGED
|
@@ -28,4 +28,35 @@ export function matchPattern(pattern, moduleId) {
|
|
|
28
28
|
}
|
|
29
29
|
return true;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Calculate the specificity score of an ACL pattern (Algorithm A10).
|
|
33
|
+
*
|
|
34
|
+
* Higher scores indicate more specific patterns. Scoring per segment:
|
|
35
|
+
* - "*" (pure wildcard) -> 0
|
|
36
|
+
* - Segment containing "*" (partial wildcard) -> +1
|
|
37
|
+
* - Exact segment (no wildcard) -> +2
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* calculateSpecificity("*") // 0
|
|
41
|
+
* calculateSpecificity("api.*") // 2
|
|
42
|
+
* calculateSpecificity("api.handler.*") // 4
|
|
43
|
+
* calculateSpecificity("api.handler.task_submit") // 6
|
|
44
|
+
*/
|
|
45
|
+
export function calculateSpecificity(pattern) {
|
|
46
|
+
if (pattern === '*')
|
|
47
|
+
return 0;
|
|
48
|
+
let score = 0;
|
|
49
|
+
for (const segment of pattern.split('.')) {
|
|
50
|
+
if (segment === '*') {
|
|
51
|
+
// +0
|
|
52
|
+
}
|
|
53
|
+
else if (segment.includes('*')) {
|
|
54
|
+
score += 1;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
score += 2;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return score;
|
|
61
|
+
}
|
|
31
62
|
//# sourceMappingURL=pattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/utils/pattern.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,QAAgB;IAC5D,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,KAAK,QAAQ,CAAC;IAExD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"pattern.js","sourceRoot":"","sources":["../../src/utils/pattern.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,QAAgB;IAC5D,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,KAAK,QAAQ,CAAC;IAExD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7B,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,CAAC,CAAC;IAE9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,KAAK;QACP,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version negotiation (Algorithm A14).
|
|
3
|
+
*/
|
|
4
|
+
import { ModuleError } from './errors.js';
|
|
5
|
+
import type { ErrorOptions } from './errors.js';
|
|
6
|
+
export declare class VersionIncompatibleError extends ModuleError {
|
|
7
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
8
|
+
constructor(declared: string, sdk: string, reason: string, options?: ErrorOptions);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Negotiate the effective version between declared and SDK versions (Algorithm A14).
|
|
12
|
+
*
|
|
13
|
+
* Steps:
|
|
14
|
+
* 1. Parse both versions as semver.
|
|
15
|
+
* 2. Major mismatch -> error.
|
|
16
|
+
* 3. Declared minor > SDK minor -> error (SDK too old).
|
|
17
|
+
* 4. Declared minor < SDK minor by >2 -> deprecation warning.
|
|
18
|
+
* 5. Same minor -> effective = max(declared, sdk).
|
|
19
|
+
*
|
|
20
|
+
* @param declaredVersion - Version declared in configuration or schema.
|
|
21
|
+
* @param sdkVersion - Maximum version supported by the current SDK.
|
|
22
|
+
* @returns The effective version string.
|
|
23
|
+
* @throws {VersionIncompatibleError} When versions are incompatible.
|
|
24
|
+
* @throws {Error} When a version string is not valid semver.
|
|
25
|
+
*/
|
|
26
|
+
export declare function negotiateVersion(declaredVersion: string, sdkVersion: string): string;
|
|
27
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiEhD,qBAAa,wBAAyB,SAAQ,WAAW;IACvD,gBAAyB,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAS;gBAEvD,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAclF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CA4BpF"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version negotiation (Algorithm A14).
|
|
3
|
+
*/
|
|
4
|
+
import { ModuleError } from './errors.js';
|
|
5
|
+
/** Regex for parsing semver strings (major.minor.patch with optional pre-release). */
|
|
6
|
+
const SEMVER_RE = /^(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<pre>[0-9A-Za-z\-]+(?:\.[0-9A-Za-z\-]+)*))?$/;
|
|
7
|
+
/** Deprecation warning threshold. */
|
|
8
|
+
const DEPRECATION_THRESHOLD = 2;
|
|
9
|
+
function parseSemver(version) {
|
|
10
|
+
const m = SEMVER_RE.exec(version.trim());
|
|
11
|
+
if (!m || !m.groups) {
|
|
12
|
+
throw new Error(`Invalid semantic version: '${version}'`);
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
major: parseInt(m.groups['major'], 10),
|
|
16
|
+
minor: parseInt(m.groups['minor'], 10),
|
|
17
|
+
patch: parseInt(m.groups['patch'], 10),
|
|
18
|
+
pre: m.groups['pre'] ?? null,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function sortKey(v) {
|
|
22
|
+
if (v.pre === null) {
|
|
23
|
+
return [v.major, v.minor, v.patch, 1, []];
|
|
24
|
+
}
|
|
25
|
+
const parts = [];
|
|
26
|
+
for (const ident of v.pre.split('.')) {
|
|
27
|
+
if (/^\d+$/.test(ident)) {
|
|
28
|
+
parts.push([0, parseInt(ident, 10), '']);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
parts.push([1, 0, ident]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return [v.major, v.minor, v.patch, 0, parts];
|
|
35
|
+
}
|
|
36
|
+
function compareSortKeys(a, b) {
|
|
37
|
+
for (let i = 0; i < 4; i++) {
|
|
38
|
+
if (a[i] !== b[i])
|
|
39
|
+
return a[i] - b[i];
|
|
40
|
+
}
|
|
41
|
+
const ap = a[4];
|
|
42
|
+
const bp = b[4];
|
|
43
|
+
const len = Math.min(ap.length, bp.length);
|
|
44
|
+
for (let i = 0; i < len; i++) {
|
|
45
|
+
if (ap[i][0] !== bp[i][0])
|
|
46
|
+
return ap[i][0] - bp[i][0];
|
|
47
|
+
if (ap[i][1] !== bp[i][1])
|
|
48
|
+
return ap[i][1] - bp[i][1];
|
|
49
|
+
if (ap[i][2] !== bp[i][2])
|
|
50
|
+
return ap[i][2] < bp[i][2] ? -1 : 1;
|
|
51
|
+
}
|
|
52
|
+
return ap.length - bp.length;
|
|
53
|
+
}
|
|
54
|
+
function semverToString(v) {
|
|
55
|
+
const base = `${v.major}.${v.minor}.${v.patch}`;
|
|
56
|
+
return v.pre ? `${base}-${v.pre}` : base;
|
|
57
|
+
}
|
|
58
|
+
export class VersionIncompatibleError extends ModuleError {
|
|
59
|
+
static DEFAULT_RETRYABLE = false;
|
|
60
|
+
constructor(declared, sdk, reason, options) {
|
|
61
|
+
super('VERSION_INCOMPATIBLE', `Version incompatible: declared=${declared}, sdk=${sdk} — ${reason}`, { declaredVersion: declared, sdkVersion: sdk, reason }, options?.cause, options?.traceId, options?.retryable, options?.aiGuidance, options?.userFixable, options?.suggestion);
|
|
62
|
+
this.name = 'VersionIncompatibleError';
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Negotiate the effective version between declared and SDK versions (Algorithm A14).
|
|
67
|
+
*
|
|
68
|
+
* Steps:
|
|
69
|
+
* 1. Parse both versions as semver.
|
|
70
|
+
* 2. Major mismatch -> error.
|
|
71
|
+
* 3. Declared minor > SDK minor -> error (SDK too old).
|
|
72
|
+
* 4. Declared minor < SDK minor by >2 -> deprecation warning.
|
|
73
|
+
* 5. Same minor -> effective = max(declared, sdk).
|
|
74
|
+
*
|
|
75
|
+
* @param declaredVersion - Version declared in configuration or schema.
|
|
76
|
+
* @param sdkVersion - Maximum version supported by the current SDK.
|
|
77
|
+
* @returns The effective version string.
|
|
78
|
+
* @throws {VersionIncompatibleError} When versions are incompatible.
|
|
79
|
+
* @throws {Error} When a version string is not valid semver.
|
|
80
|
+
*/
|
|
81
|
+
export function negotiateVersion(declaredVersion, sdkVersion) {
|
|
82
|
+
const declared = parseSemver(declaredVersion);
|
|
83
|
+
const sdk = parseSemver(sdkVersion);
|
|
84
|
+
// Major version mismatch
|
|
85
|
+
if (declared.major !== sdk.major) {
|
|
86
|
+
throw new VersionIncompatibleError(declaredVersion, sdkVersion, 'Major version mismatch');
|
|
87
|
+
}
|
|
88
|
+
// Declared minor > SDK minor -> SDK too old
|
|
89
|
+
if (declared.minor > sdk.minor) {
|
|
90
|
+
throw new VersionIncompatibleError(declaredVersion, sdkVersion, 'SDK version too low, please upgrade');
|
|
91
|
+
}
|
|
92
|
+
// Declared minor < SDK minor
|
|
93
|
+
if (declared.minor < sdk.minor) {
|
|
94
|
+
const gap = sdk.minor - declared.minor;
|
|
95
|
+
if (gap > DEPRECATION_THRESHOLD) {
|
|
96
|
+
console.warn(`[apcore:version] Declared version ${declaredVersion} is ${gap} minor versions behind SDK ${sdkVersion} — consider upgrading your configuration`);
|
|
97
|
+
}
|
|
98
|
+
return declaredVersion; // Backward compatibility mode
|
|
99
|
+
}
|
|
100
|
+
// Same minor -> effective = max(declared, sdk)
|
|
101
|
+
const cmp = compareSortKeys(sortKey(declared), sortKey(sdk));
|
|
102
|
+
return cmp >= 0 ? semverToString(declared) : semverToString(sdk);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "apcore-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "AI-Perceivable Core — schema-driven module development framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"type": "git",
|
|
32
32
|
"url": "https://github.com/aipartnerup/apcore-typescript.git"
|
|
33
33
|
},
|
|
34
|
-
"homepage": "https://
|
|
34
|
+
"homepage": "https://aipartnerup.com",
|
|
35
35
|
"bugs": {
|
|
36
36
|
"url": "https://github.com/aipartnerup/apcore-typescript/issues"
|
|
37
37
|
},
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@types/node": "^20.0.0",
|
|
62
62
|
"@types/js-yaml": "^4.0.9",
|
|
63
63
|
"@types/uuid": "^9.0.0",
|
|
64
|
-
"apdev-js": "^0.
|
|
64
|
+
"apdev-js": "^0.2.0",
|
|
65
65
|
"vitest": "^2.0.0",
|
|
66
66
|
"@vitest/coverage-v8": "^2.0.0"
|
|
67
67
|
}
|