@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.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -0
  3. package/cordis.patch.yml +13 -0
  4. package/lib/approval-reviewer.d.ts +39 -0
  5. package/lib/approval-reviewer.d.ts.map +1 -0
  6. package/lib/approval-reviewer.js +119 -0
  7. package/lib/approval-reviewer.js.map +1 -0
  8. package/lib/auto-review.d.ts +22 -0
  9. package/lib/auto-review.d.ts.map +1 -0
  10. package/lib/auto-review.js +442 -0
  11. package/lib/auto-review.js.map +1 -0
  12. package/lib/evaluator.d.ts +4 -0
  13. package/lib/evaluator.d.ts.map +1 -0
  14. package/lib/evaluator.js +127 -0
  15. package/lib/evaluator.js.map +1 -0
  16. package/lib/index.d.ts +20 -0
  17. package/lib/index.d.ts.map +1 -0
  18. package/lib/index.js +16 -0
  19. package/lib/index.js.map +1 -0
  20. package/lib/ledger.d.ts +253 -0
  21. package/lib/ledger.d.ts.map +1 -0
  22. package/lib/ledger.js +891 -0
  23. package/lib/ledger.js.map +1 -0
  24. package/lib/redaction.d.ts +2 -0
  25. package/lib/redaction.d.ts.map +1 -0
  26. package/lib/redaction.js +21 -0
  27. package/lib/redaction.js.map +1 -0
  28. package/lib/service.d.ts +124 -0
  29. package/lib/service.d.ts.map +1 -0
  30. package/lib/service.js +773 -0
  31. package/lib/service.js.map +1 -0
  32. package/lib/session-event-registration.d.ts +23 -0
  33. package/lib/session-event-registration.d.ts.map +1 -0
  34. package/lib/session-event-registration.js +384 -0
  35. package/lib/session-event-registration.js.map +1 -0
  36. package/lib/settlement.d.ts +30 -0
  37. package/lib/settlement.d.ts.map +1 -0
  38. package/lib/settlement.js +54 -0
  39. package/lib/settlement.js.map +1 -0
  40. package/lib/sqlite.d.ts +9 -0
  41. package/lib/sqlite.d.ts.map +1 -0
  42. package/lib/sqlite.js +276 -0
  43. package/lib/sqlite.js.map +1 -0
  44. package/lib/tool-risk.d.ts +10 -0
  45. package/lib/tool-risk.d.ts.map +1 -0
  46. package/lib/tool-risk.js +321 -0
  47. package/lib/tool-risk.js.map +1 -0
  48. package/lib/types.d.ts +73 -0
  49. package/lib/types.d.ts.map +1 -0
  50. package/lib/types.js +2 -0
  51. package/lib/types.js.map +1 -0
  52. package/lib/version.d.ts +2 -0
  53. package/lib/version.d.ts.map +1 -0
  54. package/lib/version.js +2 -0
  55. package/lib/version.js.map +1 -0
  56. 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
@@ -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"}
@@ -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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"}