apcore-js 0.6.0 → 0.7.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 +1 -1
- package/dist/approval.d.ts +85 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +73 -0
- package/dist/approval.js.map +1 -0
- package/dist/errors.d.ts +94 -105
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +145 -27
- package/dist/errors.js.map +1 -1
- package/dist/executor.d.ts +15 -0
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +118 -1
- package/dist/executor.js.map +1 -1
- package/dist/extensions.d.ts +2 -2
- package/dist/extensions.d.ts.map +1 -1
- package/dist/extensions.js +21 -2
- package/dist/extensions.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +17 -2
package/README.md
CHANGED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval system: interfaces, data types, built-in handlers.
|
|
3
|
+
*
|
|
4
|
+
* Provides a pluggable gate at Executor Step 4.5, between ACL enforcement
|
|
5
|
+
* and input validation. When a module declares requiresApproval=true and
|
|
6
|
+
* an ApprovalHandler is configured, the handler is invoked before execution.
|
|
7
|
+
*/
|
|
8
|
+
import type { Context } from './context.js';
|
|
9
|
+
import type { ModuleAnnotations } from './module.js';
|
|
10
|
+
/**
|
|
11
|
+
* Carries invocation context to the approval handler.
|
|
12
|
+
*/
|
|
13
|
+
export interface ApprovalRequest {
|
|
14
|
+
readonly moduleId: string;
|
|
15
|
+
readonly arguments: Record<string, unknown>;
|
|
16
|
+
readonly context: Context;
|
|
17
|
+
readonly annotations: ModuleAnnotations;
|
|
18
|
+
readonly description: string | null;
|
|
19
|
+
readonly tags: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a frozen ApprovalRequest.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createApprovalRequest(options: {
|
|
25
|
+
moduleId: string;
|
|
26
|
+
arguments: Record<string, unknown>;
|
|
27
|
+
context: Context;
|
|
28
|
+
annotations: ModuleAnnotations;
|
|
29
|
+
description?: string | null;
|
|
30
|
+
tags?: string[];
|
|
31
|
+
}): ApprovalRequest;
|
|
32
|
+
/**
|
|
33
|
+
* Carries the approval handler's decision.
|
|
34
|
+
*/
|
|
35
|
+
export interface ApprovalResult {
|
|
36
|
+
readonly status: 'approved' | 'rejected' | 'timeout' | 'pending';
|
|
37
|
+
readonly approvedBy: string | null;
|
|
38
|
+
readonly reason: string | null;
|
|
39
|
+
readonly approvalId: string | null;
|
|
40
|
+
readonly metadata: Record<string, unknown> | null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a frozen ApprovalResult.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createApprovalResult(options: {
|
|
46
|
+
status: 'approved' | 'rejected' | 'timeout' | 'pending';
|
|
47
|
+
approvedBy?: string | null;
|
|
48
|
+
reason?: string | null;
|
|
49
|
+
approvalId?: string | null;
|
|
50
|
+
metadata?: Record<string, unknown> | null;
|
|
51
|
+
}): ApprovalResult;
|
|
52
|
+
/**
|
|
53
|
+
* Protocol for pluggable approval handlers.
|
|
54
|
+
*
|
|
55
|
+
* Implementations receive an ApprovalRequest and return an ApprovalResult.
|
|
56
|
+
* Both methods are asynchronous.
|
|
57
|
+
*/
|
|
58
|
+
export interface ApprovalHandler {
|
|
59
|
+
requestApproval(request: ApprovalRequest): Promise<ApprovalResult>;
|
|
60
|
+
checkApproval(approvalId: string): Promise<ApprovalResult>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Built-in handler that always rejects. Safe default for enforcement.
|
|
64
|
+
*/
|
|
65
|
+
export declare class AlwaysDenyHandler implements ApprovalHandler {
|
|
66
|
+
requestApproval(_request: ApprovalRequest): Promise<ApprovalResult>;
|
|
67
|
+
checkApproval(_approvalId: string): Promise<ApprovalResult>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Built-in handler that always approves. For testing and development.
|
|
71
|
+
*/
|
|
72
|
+
export declare class AutoApproveHandler implements ApprovalHandler {
|
|
73
|
+
requestApproval(_request: ApprovalRequest): Promise<ApprovalResult>;
|
|
74
|
+
checkApproval(_approvalId: string): Promise<ApprovalResult>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Built-in handler that delegates to a user-provided async callback.
|
|
78
|
+
*/
|
|
79
|
+
export declare class CallbackApprovalHandler implements ApprovalHandler {
|
|
80
|
+
private _callback;
|
|
81
|
+
constructor(callback: (request: ApprovalRequest) => Promise<ApprovalResult>);
|
|
82
|
+
requestApproval(request: ApprovalRequest): Promise<ApprovalResult>;
|
|
83
|
+
checkApproval(_approvalId: string): Promise<ApprovalResult>;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
|
package/dist/approval.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval system: interfaces, data types, built-in handlers.
|
|
3
|
+
*
|
|
4
|
+
* Provides a pluggable gate at Executor Step 4.5, between ACL enforcement
|
|
5
|
+
* and input validation. When a module declares requiresApproval=true and
|
|
6
|
+
* an ApprovalHandler is configured, the handler is invoked before execution.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Create a frozen ApprovalRequest.
|
|
10
|
+
*/
|
|
11
|
+
export function createApprovalRequest(options) {
|
|
12
|
+
return Object.freeze({
|
|
13
|
+
moduleId: options.moduleId,
|
|
14
|
+
arguments: options.arguments,
|
|
15
|
+
context: options.context,
|
|
16
|
+
annotations: options.annotations,
|
|
17
|
+
description: options.description ?? null,
|
|
18
|
+
tags: Object.freeze([...(options.tags ?? [])]),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a frozen ApprovalResult.
|
|
23
|
+
*/
|
|
24
|
+
export function createApprovalResult(options) {
|
|
25
|
+
return Object.freeze({
|
|
26
|
+
status: options.status,
|
|
27
|
+
approvedBy: options.approvedBy ?? null,
|
|
28
|
+
reason: options.reason ?? null,
|
|
29
|
+
approvalId: options.approvalId ?? null,
|
|
30
|
+
metadata: options.metadata ?? null,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Built-in handler that always rejects. Safe default for enforcement.
|
|
35
|
+
*/
|
|
36
|
+
export class AlwaysDenyHandler {
|
|
37
|
+
async requestApproval(_request) {
|
|
38
|
+
return createApprovalResult({ status: 'rejected', reason: 'Always denied' });
|
|
39
|
+
}
|
|
40
|
+
async checkApproval(_approvalId) {
|
|
41
|
+
return createApprovalResult({ status: 'rejected', reason: 'Always denied' });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Built-in handler that always approves. For testing and development.
|
|
46
|
+
*/
|
|
47
|
+
export class AutoApproveHandler {
|
|
48
|
+
async requestApproval(_request) {
|
|
49
|
+
return createApprovalResult({ status: 'approved', approvedBy: 'auto' });
|
|
50
|
+
}
|
|
51
|
+
async checkApproval(_approvalId) {
|
|
52
|
+
return createApprovalResult({ status: 'approved', approvedBy: 'auto' });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Built-in handler that delegates to a user-provided async callback.
|
|
57
|
+
*/
|
|
58
|
+
export class CallbackApprovalHandler {
|
|
59
|
+
_callback;
|
|
60
|
+
constructor(callback) {
|
|
61
|
+
this._callback = callback;
|
|
62
|
+
}
|
|
63
|
+
async requestApproval(request) {
|
|
64
|
+
return this._callback(request);
|
|
65
|
+
}
|
|
66
|
+
async checkApproval(_approvalId) {
|
|
67
|
+
return createApprovalResult({
|
|
68
|
+
status: 'rejected',
|
|
69
|
+
reason: 'Phase B not supported by callback handler',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAOrC;IACC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;QACxC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAaD;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAMpC;IACC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACtC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC9B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;KACnC,CAAC,CAAC;AACL,CAAC;AAaD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,eAAe,CAAC,QAAyB;QAC7C,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/E,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,eAAe,CAAC,QAAyB;QAC7C,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,OAAO,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAC1B,SAAS,CAAwD;IAEzE,YAAY,QAA+D;QACzE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAwB;QAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB;QACrC,OAAO,oBAAoB,CAAC;YAC1B,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,2CAA2C;SACpD,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,180 +1,166 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Error hierarchy for the apcore framework.
|
|
3
3
|
*/
|
|
4
|
+
export interface ErrorOptions {
|
|
5
|
+
cause?: Error;
|
|
6
|
+
traceId?: string;
|
|
7
|
+
retryable?: boolean | null;
|
|
8
|
+
aiGuidance?: string | null;
|
|
9
|
+
userFixable?: boolean | null;
|
|
10
|
+
suggestion?: string | null;
|
|
11
|
+
}
|
|
4
12
|
export declare class ModuleError extends Error {
|
|
13
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
5
14
|
readonly code: string;
|
|
6
15
|
readonly details: Record<string, unknown>;
|
|
7
16
|
readonly cause?: Error;
|
|
8
17
|
readonly traceId?: string;
|
|
9
18
|
readonly timestamp: string;
|
|
10
|
-
|
|
19
|
+
readonly retryable: boolean | null;
|
|
20
|
+
readonly aiGuidance: string | null;
|
|
21
|
+
readonly userFixable: boolean | null;
|
|
22
|
+
readonly suggestion: string | null;
|
|
23
|
+
constructor(code: string, message: string, details?: Record<string, unknown>, cause?: Error, traceId?: string, retryable?: boolean | null, aiGuidance?: string | null, userFixable?: boolean | null, suggestion?: string | null);
|
|
11
24
|
toString(): string;
|
|
25
|
+
toJSON(): Record<string, unknown>;
|
|
12
26
|
}
|
|
13
27
|
export declare class ConfigNotFoundError extends ModuleError {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
traceId?: string;
|
|
17
|
-
});
|
|
28
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
29
|
+
constructor(configPath: string, options?: ErrorOptions);
|
|
18
30
|
}
|
|
19
31
|
export declare class ConfigError extends ModuleError {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
traceId?: string;
|
|
23
|
-
});
|
|
32
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
33
|
+
constructor(message: string, options?: ErrorOptions);
|
|
24
34
|
}
|
|
25
35
|
export declare class ACLRuleError extends ModuleError {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
traceId?: string;
|
|
29
|
-
});
|
|
36
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
37
|
+
constructor(message: string, options?: ErrorOptions);
|
|
30
38
|
}
|
|
31
39
|
export declare class ACLDeniedError extends ModuleError {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
traceId?: string;
|
|
35
|
-
});
|
|
40
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
41
|
+
constructor(callerId: string | null, targetId: string, options?: ErrorOptions);
|
|
36
42
|
get callerId(): string | null;
|
|
37
43
|
get targetId(): string;
|
|
38
44
|
}
|
|
39
45
|
export declare class ModuleNotFoundError extends ModuleError {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
traceId?: string;
|
|
43
|
-
});
|
|
46
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
47
|
+
constructor(moduleId: string, options?: ErrorOptions);
|
|
44
48
|
}
|
|
45
49
|
export declare class ModuleTimeoutError extends ModuleError {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
traceId?: string;
|
|
49
|
-
});
|
|
50
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
51
|
+
constructor(moduleId: string, timeoutMs: number, options?: ErrorOptions);
|
|
50
52
|
get moduleId(): string;
|
|
51
53
|
get timeoutMs(): number;
|
|
52
54
|
}
|
|
53
55
|
export declare class SchemaValidationError extends ModuleError {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
traceId?: string;
|
|
57
|
-
});
|
|
56
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
57
|
+
constructor(message?: string, errors?: Array<Record<string, unknown>>, options?: ErrorOptions);
|
|
58
58
|
}
|
|
59
59
|
export declare class SchemaNotFoundError extends ModuleError {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
traceId?: string;
|
|
63
|
-
});
|
|
60
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
61
|
+
constructor(schemaId: string, options?: ErrorOptions);
|
|
64
62
|
}
|
|
65
63
|
export declare class SchemaParseError extends ModuleError {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
traceId?: string;
|
|
69
|
-
});
|
|
64
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
65
|
+
constructor(message: string, options?: ErrorOptions);
|
|
70
66
|
}
|
|
71
67
|
export declare class SchemaCircularRefError extends ModuleError {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
traceId?: string;
|
|
75
|
-
});
|
|
68
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
69
|
+
constructor(refPath: string, options?: ErrorOptions);
|
|
76
70
|
}
|
|
77
71
|
export declare class CallDepthExceededError extends ModuleError {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
traceId?: string;
|
|
81
|
-
});
|
|
72
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
73
|
+
constructor(depth: number, maxDepth: number, callChain: string[], options?: ErrorOptions);
|
|
82
74
|
get currentDepth(): number;
|
|
83
75
|
get maxDepth(): number;
|
|
84
76
|
}
|
|
85
77
|
export declare class CircularCallError extends ModuleError {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
traceId?: string;
|
|
89
|
-
});
|
|
78
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
79
|
+
constructor(moduleId: string, callChain: string[], options?: ErrorOptions);
|
|
90
80
|
get moduleId(): string;
|
|
91
81
|
}
|
|
92
82
|
export declare class CallFrequencyExceededError extends ModuleError {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
traceId?: string;
|
|
96
|
-
});
|
|
83
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
84
|
+
constructor(moduleId: string, count: number, maxRepeat: number, callChain: string[], options?: ErrorOptions);
|
|
97
85
|
get moduleId(): string;
|
|
98
86
|
get count(): number;
|
|
99
87
|
get maxRepeat(): number;
|
|
100
88
|
}
|
|
101
89
|
export declare class InvalidInputError extends ModuleError {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
traceId?: string;
|
|
105
|
-
});
|
|
90
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
91
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
106
92
|
}
|
|
107
93
|
export declare class FuncMissingTypeHintError extends ModuleError {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
traceId?: string;
|
|
111
|
-
});
|
|
94
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
95
|
+
constructor(functionName: string, parameterName: string, options?: ErrorOptions);
|
|
112
96
|
}
|
|
113
97
|
export declare class FuncMissingReturnTypeError extends ModuleError {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
traceId?: string;
|
|
117
|
-
});
|
|
98
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
99
|
+
constructor(functionName: string, options?: ErrorOptions);
|
|
118
100
|
}
|
|
119
101
|
export declare class BindingInvalidTargetError extends ModuleError {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
traceId?: string;
|
|
123
|
-
});
|
|
102
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
103
|
+
constructor(target: string, options?: ErrorOptions);
|
|
124
104
|
}
|
|
125
105
|
export declare class BindingModuleNotFoundError extends ModuleError {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
traceId?: string;
|
|
129
|
-
});
|
|
106
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
107
|
+
constructor(modulePath: string, options?: ErrorOptions);
|
|
130
108
|
}
|
|
131
109
|
export declare class BindingCallableNotFoundError extends ModuleError {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
traceId?: string;
|
|
135
|
-
});
|
|
110
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
111
|
+
constructor(callableName: string, modulePath: string, options?: ErrorOptions);
|
|
136
112
|
}
|
|
137
113
|
export declare class BindingNotCallableError extends ModuleError {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
traceId?: string;
|
|
141
|
-
});
|
|
114
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
115
|
+
constructor(target: string, options?: ErrorOptions);
|
|
142
116
|
}
|
|
143
117
|
export declare class BindingSchemaMissingError extends ModuleError {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
traceId?: string;
|
|
147
|
-
});
|
|
118
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
119
|
+
constructor(target: string, options?: ErrorOptions);
|
|
148
120
|
}
|
|
149
121
|
export declare class BindingFileInvalidError extends ModuleError {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
traceId?: string;
|
|
153
|
-
});
|
|
122
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
123
|
+
constructor(filePath: string, reason: string, options?: ErrorOptions);
|
|
154
124
|
}
|
|
155
125
|
export declare class CircularDependencyError extends ModuleError {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
traceId?: string;
|
|
159
|
-
});
|
|
126
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
127
|
+
constructor(cyclePath: string[], options?: ErrorOptions);
|
|
160
128
|
}
|
|
161
129
|
export declare class ModuleLoadError extends ModuleError {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
traceId?: string;
|
|
165
|
-
});
|
|
130
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
131
|
+
constructor(moduleId: string, reason: string, options?: ErrorOptions);
|
|
166
132
|
}
|
|
167
133
|
export declare class ModuleExecuteError extends ModuleError {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
traceId?: string;
|
|
171
|
-
});
|
|
134
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
135
|
+
constructor(moduleId: string, reason: string, options?: ErrorOptions);
|
|
172
136
|
}
|
|
173
137
|
export declare class InternalError extends ModuleError {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
138
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
139
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Base error for all approval-related errors.
|
|
143
|
+
* Carries the full ApprovalResult for inspection by callers.
|
|
144
|
+
*/
|
|
145
|
+
export declare class ApprovalError extends ModuleError {
|
|
146
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
147
|
+
readonly result: unknown;
|
|
148
|
+
constructor(code: string, message: string, result: unknown, moduleId?: string, options?: ErrorOptions);
|
|
149
|
+
get moduleId(): string | null;
|
|
150
|
+
get reason(): string | null;
|
|
151
|
+
}
|
|
152
|
+
export declare class ApprovalDeniedError extends ApprovalError {
|
|
153
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
154
|
+
constructor(result: unknown, moduleId?: string, options?: ErrorOptions);
|
|
155
|
+
}
|
|
156
|
+
export declare class ApprovalTimeoutError extends ApprovalError {
|
|
157
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
158
|
+
constructor(result: unknown, moduleId?: string, options?: ErrorOptions);
|
|
159
|
+
}
|
|
160
|
+
export declare class ApprovalPendingError extends ApprovalError {
|
|
161
|
+
static readonly DEFAULT_RETRYABLE: boolean | null;
|
|
162
|
+
constructor(result: unknown, moduleId?: string, options?: ErrorOptions);
|
|
163
|
+
get approvalId(): string | null;
|
|
178
164
|
}
|
|
179
165
|
/**
|
|
180
166
|
* All framework error codes as constants.
|
|
@@ -208,6 +194,9 @@ export declare const ErrorCodes: Readonly<{
|
|
|
208
194
|
readonly BINDING_FILE_INVALID: "BINDING_FILE_INVALID";
|
|
209
195
|
readonly CIRCULAR_DEPENDENCY: "CIRCULAR_DEPENDENCY";
|
|
210
196
|
readonly MIDDLEWARE_CHAIN_ERROR: "MIDDLEWARE_CHAIN_ERROR";
|
|
197
|
+
readonly APPROVAL_DENIED: "APPROVAL_DENIED";
|
|
198
|
+
readonly APPROVAL_TIMEOUT: "APPROVAL_TIMEOUT";
|
|
199
|
+
readonly APPROVAL_PENDING: "APPROVAL_PENDING";
|
|
211
200
|
readonly GENERAL_NOT_IMPLEMENTED: "GENERAL_NOT_IMPLEMENTED";
|
|
212
201
|
readonly DEPENDENCY_NOT_FOUND: "DEPENDENCY_NOT_FOUND";
|
|
213
202
|
}>;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,SAAkB,KAAK,CAAC,EAAE,KAAK,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|