@dsh-enhanced/assistant-policy 0.1.3
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/LICENSE +21 -0
- package/README.md +136 -0
- package/cordis.patch.yml +13 -0
- package/lib/approval-reviewer.d.ts +39 -0
- package/lib/approval-reviewer.d.ts.map +1 -0
- package/lib/approval-reviewer.js +119 -0
- package/lib/approval-reviewer.js.map +1 -0
- package/lib/auto-review.d.ts +22 -0
- package/lib/auto-review.d.ts.map +1 -0
- package/lib/auto-review.js +442 -0
- package/lib/auto-review.js.map +1 -0
- package/lib/evaluator.d.ts +4 -0
- package/lib/evaluator.d.ts.map +1 -0
- package/lib/evaluator.js +127 -0
- package/lib/evaluator.js.map +1 -0
- package/lib/index.d.ts +20 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/ledger.d.ts +253 -0
- package/lib/ledger.d.ts.map +1 -0
- package/lib/ledger.js +891 -0
- package/lib/ledger.js.map +1 -0
- package/lib/redaction.d.ts +2 -0
- package/lib/redaction.d.ts.map +1 -0
- package/lib/redaction.js +21 -0
- package/lib/redaction.js.map +1 -0
- package/lib/service.d.ts +124 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +773 -0
- package/lib/service.js.map +1 -0
- package/lib/session-event-registration.d.ts +23 -0
- package/lib/session-event-registration.d.ts.map +1 -0
- package/lib/session-event-registration.js +384 -0
- package/lib/session-event-registration.js.map +1 -0
- package/lib/settlement.d.ts +30 -0
- package/lib/settlement.d.ts.map +1 -0
- package/lib/settlement.js +54 -0
- package/lib/settlement.js.map +1 -0
- package/lib/sqlite.d.ts +9 -0
- package/lib/sqlite.d.ts.map +1 -0
- package/lib/sqlite.js +276 -0
- package/lib/sqlite.js.map +1 -0
- package/lib/tool-risk.d.ts +10 -0
- package/lib/tool-risk.d.ts.map +1 -0
- package/lib/tool-risk.js +321 -0
- package/lib/tool-risk.js.map +1 -0
- package/lib/types.d.ts +73 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +2 -0
- package/lib/version.js.map +1 -0
- package/package.json +98 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AssistantPolicyService, Config } from './service.js';
|
|
2
|
+
import { version } from './version.js';
|
|
3
|
+
export const name = 'dsh-enhanced-assistant-policy';
|
|
4
|
+
export { AssistantPolicyService, Config, version };
|
|
5
|
+
export { APPROVAL_REVIEWERS, approvalReviewerOf, foldApprovalReviewer, getApprovalReviewer, setApprovalReviewer, } from './approval-reviewer.js';
|
|
6
|
+
export { waitForApprovalReviewerSessionEventReady } from './session-event-registration.js';
|
|
7
|
+
export { isAutoReviewEscalation } from './auto-review.js';
|
|
8
|
+
export { AUTO_REVIEW_APPROVAL_REASON, HUMAN_APPROVAL_REASON } from './tool-risk.js';
|
|
9
|
+
export { APPROVAL_DISPLAY_BUDGET } from './ledger.js';
|
|
10
|
+
export { ApprovalSettlementConflict, validateApprovalSettlement } from './settlement.js';
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export function apply(ctx, config) {
|
|
13
|
+
new AssistantPolicyService(ctx, config);
|
|
14
|
+
}
|
|
15
|
+
export default AssistantPolicyService;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,IAAI,GAAG,+BAA+B,CAAA;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAClD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,wCAAwC,EAAE,MAAM,iCAAiC,CAAA;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAwBxF,cAAc,YAAY,CAAA;AAE1B,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAqC;IACvE,IAAI,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACzC,CAAC;AAED,eAAe,sBAAsB,CAAA"}
|
package/lib/ledger.d.ts
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
export type PolicyLedgerErrorCode = 'budget-exhausted' | 'idempotency-conflict' | 'invalid-input' | 'invalid-path' | 'invalid-state' | 'not-found' | 'schema-too-new' | 'unauthorized' | 'version-conflict';
|
|
2
|
+
export declare class PolicyLedgerError extends Error {
|
|
3
|
+
readonly code: PolicyLedgerErrorCode;
|
|
4
|
+
constructor(code: PolicyLedgerErrorCode, message: string);
|
|
5
|
+
}
|
|
6
|
+
export interface PolicyLedgerOptions {
|
|
7
|
+
path: string;
|
|
8
|
+
now?: () => number;
|
|
9
|
+
}
|
|
10
|
+
/** Shared byte contract for Policy, Delivery, and channel approval rendering. */
|
|
11
|
+
export declare const APPROVAL_DISPLAY_BUDGET: Readonly<{
|
|
12
|
+
maxTextBytes: number;
|
|
13
|
+
maxSummaryBytes: 120;
|
|
14
|
+
renderingReserveBytes: number;
|
|
15
|
+
maxDiffBytes: number;
|
|
16
|
+
}>;
|
|
17
|
+
export interface BudgetReservationInput {
|
|
18
|
+
scope: string;
|
|
19
|
+
metric: string;
|
|
20
|
+
limit: number;
|
|
21
|
+
amount: number;
|
|
22
|
+
periodMs: number;
|
|
23
|
+
idempotencyKey: string;
|
|
24
|
+
}
|
|
25
|
+
export interface BudgetReservationResult {
|
|
26
|
+
reservationId: string;
|
|
27
|
+
status: 'finalized' | 'released' | 'reserved';
|
|
28
|
+
periodStart: number;
|
|
29
|
+
remaining: number;
|
|
30
|
+
replayed: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface EmergencyStopState {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
reason: string | undefined;
|
|
35
|
+
actor: string | undefined;
|
|
36
|
+
updatedAt: number | undefined;
|
|
37
|
+
version: number;
|
|
38
|
+
}
|
|
39
|
+
export interface ApprovalProposalInput {
|
|
40
|
+
idempotencyKey: string;
|
|
41
|
+
requester: string;
|
|
42
|
+
principal: string;
|
|
43
|
+
action: string;
|
|
44
|
+
resource: {
|
|
45
|
+
kind: string;
|
|
46
|
+
id: string;
|
|
47
|
+
};
|
|
48
|
+
diff: string;
|
|
49
|
+
summary: string;
|
|
50
|
+
ttlMs: number;
|
|
51
|
+
dispatch?: Readonly<ApprovalDispatchRoute>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Durable-domain creation input with an absolute deadline. Unlike `ttlMs`, the
|
|
55
|
+
* deadline cannot move forward when a process restarts or loses a cross-database
|
|
56
|
+
* commit acknowledgement.
|
|
57
|
+
*/
|
|
58
|
+
export interface ApprovalProposalRecoveryInput {
|
|
59
|
+
idempotencyKey: string;
|
|
60
|
+
requester: string;
|
|
61
|
+
principal: string;
|
|
62
|
+
action: string;
|
|
63
|
+
resource: {
|
|
64
|
+
kind: string;
|
|
65
|
+
id: string;
|
|
66
|
+
};
|
|
67
|
+
diff: string;
|
|
68
|
+
summary: string;
|
|
69
|
+
notAfter: number;
|
|
70
|
+
dispatch?: Readonly<ApprovalDispatchRoute>;
|
|
71
|
+
}
|
|
72
|
+
export interface ApprovalDispatchRoute {
|
|
73
|
+
sourceId: string;
|
|
74
|
+
bindingId: string;
|
|
75
|
+
workspace: string;
|
|
76
|
+
principal: string;
|
|
77
|
+
}
|
|
78
|
+
export type ApprovalProposalStatus = 'approved' | 'expired' | 'pending' | 'rejected';
|
|
79
|
+
export interface ApprovalProposalResult {
|
|
80
|
+
proposalId: string;
|
|
81
|
+
status: ApprovalProposalStatus;
|
|
82
|
+
diffHash: string;
|
|
83
|
+
expiresAt: number;
|
|
84
|
+
version: number;
|
|
85
|
+
replayed: boolean;
|
|
86
|
+
}
|
|
87
|
+
export type ApprovalProposalRecoveryResult = Readonly<{
|
|
88
|
+
kind: 'proposal';
|
|
89
|
+
proposal: ApprovalProposalResult;
|
|
90
|
+
}> | Readonly<{
|
|
91
|
+
kind: 'abandoned';
|
|
92
|
+
idempotencyKey: string;
|
|
93
|
+
notAfter: number;
|
|
94
|
+
abandonedAt: number;
|
|
95
|
+
replayed: boolean;
|
|
96
|
+
}>;
|
|
97
|
+
export interface ApprovalDecisionInput {
|
|
98
|
+
proposalId: string;
|
|
99
|
+
principal: string;
|
|
100
|
+
expectedVersion: number;
|
|
101
|
+
decision: 'approved' | 'rejected';
|
|
102
|
+
reason: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Terminal-decision snapshot of one proposal, exposed so the domain that owns the
|
|
106
|
+
* pending operation can discover the decision and commit it through its own gate.
|
|
107
|
+
* Policy never calls back into a domain, so this read seam is the only supported
|
|
108
|
+
* way to close that loop.
|
|
109
|
+
*/
|
|
110
|
+
export interface ApprovalProposalSnapshot {
|
|
111
|
+
proposalId: string;
|
|
112
|
+
requester: string;
|
|
113
|
+
principal: string;
|
|
114
|
+
action: string;
|
|
115
|
+
resource: {
|
|
116
|
+
kind: string;
|
|
117
|
+
id: string;
|
|
118
|
+
};
|
|
119
|
+
summary: string;
|
|
120
|
+
status: ApprovalProposalStatus;
|
|
121
|
+
diffHash: string;
|
|
122
|
+
expiresAt: number;
|
|
123
|
+
version: number;
|
|
124
|
+
decidedBy: string | undefined;
|
|
125
|
+
decisionReason: string | undefined;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Exact, authority-scoped identity used by a domain to recover a proposal whose
|
|
129
|
+
* Policy commit may have succeeded before the domain persisted its proposal ID.
|
|
130
|
+
* This lookup is deliberately read-only and does not accept proposal content or
|
|
131
|
+
* TTL, so it can never create, replay, or extend a proposal.
|
|
132
|
+
*/
|
|
133
|
+
export interface ApprovalProposalLookupInput {
|
|
134
|
+
idempotencyKey: string;
|
|
135
|
+
requester: string;
|
|
136
|
+
principal: string;
|
|
137
|
+
action: string;
|
|
138
|
+
resource: {
|
|
139
|
+
kind: string;
|
|
140
|
+
id: string;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
export type ApprovalDispatchState = 'enqueued' | 'pending';
|
|
144
|
+
/** Stable high-water mark for a pending-dispatch scan. */
|
|
145
|
+
export interface ApprovalDispatchCursor {
|
|
146
|
+
createdAt: number;
|
|
147
|
+
proposalId: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Immutable, policy-derived payload and route for one durable approval delivery.
|
|
151
|
+
* Callers can choose when to enqueue it, but cannot substitute display content.
|
|
152
|
+
*/
|
|
153
|
+
export interface ApprovalDispatchSnapshot {
|
|
154
|
+
proposalId: string;
|
|
155
|
+
sourceId: string;
|
|
156
|
+
bindingId: string;
|
|
157
|
+
workspace: string;
|
|
158
|
+
principal: string;
|
|
159
|
+
requester: string;
|
|
160
|
+
action: string;
|
|
161
|
+
resource: {
|
|
162
|
+
kind: string;
|
|
163
|
+
id: string;
|
|
164
|
+
};
|
|
165
|
+
summary: string;
|
|
166
|
+
diff: string;
|
|
167
|
+
diffHash: string;
|
|
168
|
+
payloadHash: string;
|
|
169
|
+
expiresAt: number;
|
|
170
|
+
proposalVersion: number;
|
|
171
|
+
state: ApprovalDispatchState;
|
|
172
|
+
createdAt: number;
|
|
173
|
+
enqueuedAt: number | undefined;
|
|
174
|
+
version: number;
|
|
175
|
+
}
|
|
176
|
+
export interface ApprovalDispatchResult {
|
|
177
|
+
proposalId: string;
|
|
178
|
+
state: 'enqueued';
|
|
179
|
+
payloadHash: string;
|
|
180
|
+
enqueuedAt: number;
|
|
181
|
+
version: number;
|
|
182
|
+
replayed: boolean;
|
|
183
|
+
}
|
|
184
|
+
export interface AuditInput {
|
|
185
|
+
actor: string;
|
|
186
|
+
action: string;
|
|
187
|
+
resource: {
|
|
188
|
+
kind: string;
|
|
189
|
+
id: string;
|
|
190
|
+
};
|
|
191
|
+
outcome: string;
|
|
192
|
+
reasonCode: string;
|
|
193
|
+
details: unknown;
|
|
194
|
+
}
|
|
195
|
+
export interface AuditEvent {
|
|
196
|
+
sequence: number;
|
|
197
|
+
eventId: string;
|
|
198
|
+
occurredAt: number;
|
|
199
|
+
actor: string;
|
|
200
|
+
action: string;
|
|
201
|
+
resourceKind: string;
|
|
202
|
+
resourceHash: string;
|
|
203
|
+
outcome: string;
|
|
204
|
+
reasonCode: string;
|
|
205
|
+
details: unknown;
|
|
206
|
+
}
|
|
207
|
+
export declare class PolicyLedger {
|
|
208
|
+
#private;
|
|
209
|
+
constructor(options: PolicyLedgerOptions);
|
|
210
|
+
close(): void;
|
|
211
|
+
reserve(input: BudgetReservationInput): BudgetReservationResult;
|
|
212
|
+
finalize(reservationId: string, actualAmount: number): BudgetReservationResult;
|
|
213
|
+
release(reservationId: string): BudgetReservationResult;
|
|
214
|
+
getEmergencyStop(): EmergencyStopState;
|
|
215
|
+
setEmergencyStop(input: {
|
|
216
|
+
enabled: boolean;
|
|
217
|
+
actor: string;
|
|
218
|
+
reason: string;
|
|
219
|
+
}): EmergencyStopState;
|
|
220
|
+
propose(input: ApprovalProposalInput): ApprovalProposalResult;
|
|
221
|
+
/**
|
|
222
|
+
* Atomically recover an existing exact proposal, create it under an immutable
|
|
223
|
+
* absolute deadline, or permanently abandon the idempotency key after that
|
|
224
|
+
* deadline. `BEGIN IMMEDIATE` serializes this decision across Policy processes,
|
|
225
|
+
* closing the lookup-then-create orphan-card race.
|
|
226
|
+
*/
|
|
227
|
+
recoverOrCreateProposal(input: ApprovalProposalRecoveryInput): ApprovalProposalRecoveryResult;
|
|
228
|
+
decideProposal(input: ApprovalDecisionInput): ApprovalProposalResult;
|
|
229
|
+
/**
|
|
230
|
+
* Read one proposal's current status without deciding it. A domain reconciler
|
|
231
|
+
* uses this to learn that its own pending operation was already approved or
|
|
232
|
+
* rejected elsewhere, then commits that outcome itself.
|
|
233
|
+
*/
|
|
234
|
+
getProposal(proposalId: string): ApprovalProposalSnapshot | undefined;
|
|
235
|
+
/**
|
|
236
|
+
* Recover an existing proposal by its immutable scoped idempotency identity.
|
|
237
|
+
* A mismatch is indistinguishable from absence; callers may subsequently try
|
|
238
|
+
* `propose`, whose normal idempotency conflict check remains fail-closed.
|
|
239
|
+
*/
|
|
240
|
+
getProposalByIdempotencyKey(input: ApprovalProposalLookupInput): ApprovalProposalSnapshot | undefined;
|
|
241
|
+
listPendingApprovalDispatches(limit?: number, after?: Readonly<ApprovalDispatchCursor>): ApprovalDispatchSnapshot[];
|
|
242
|
+
markApprovalDispatchEnqueued(proposalId: string, expectedVersion: number): ApprovalDispatchResult;
|
|
243
|
+
expireProposals(limit?: number): number;
|
|
244
|
+
appendAudit(input: AuditInput): AuditEvent;
|
|
245
|
+
queryAudit(options?: {
|
|
246
|
+
afterSequence?: number;
|
|
247
|
+
limit?: number;
|
|
248
|
+
}): AuditEvent[];
|
|
249
|
+
health(): {
|
|
250
|
+
lastAuditSequence: number;
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"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"}
|