@dsh-enhanced/assistant-delivery 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 +225 -0
  3. package/cordis.patch.yml +29 -0
  4. package/lib/agent-runtime.d.ts +112 -0
  5. package/lib/agent-runtime.d.ts.map +1 -0
  6. package/lib/agent-runtime.js +1866 -0
  7. package/lib/agent-runtime.js.map +1 -0
  8. package/lib/canonical.d.ts +18 -0
  9. package/lib/canonical.d.ts.map +1 -0
  10. package/lib/canonical.js +83 -0
  11. package/lib/canonical.js.map +1 -0
  12. package/lib/coordinator.d.ts +124 -0
  13. package/lib/coordinator.d.ts.map +1 -0
  14. package/lib/coordinator.js +676 -0
  15. package/lib/coordinator.js.map +1 -0
  16. package/lib/inbound-images.d.ts +38 -0
  17. package/lib/inbound-images.d.ts.map +1 -0
  18. package/lib/inbound-images.js +267 -0
  19. package/lib/inbound-images.js.map +1 -0
  20. package/lib/index.d.ts +12 -0
  21. package/lib/index.d.ts.map +1 -0
  22. package/lib/index.js +12 -0
  23. package/lib/index.js.map +1 -0
  24. package/lib/operator.d.ts +23 -0
  25. package/lib/operator.d.ts.map +1 -0
  26. package/lib/operator.js +38 -0
  27. package/lib/operator.js.map +1 -0
  28. package/lib/service.d.ts +269 -0
  29. package/lib/service.d.ts.map +1 -0
  30. package/lib/service.js +1698 -0
  31. package/lib/service.js.map +1 -0
  32. package/lib/session-commands.d.ts +17 -0
  33. package/lib/session-commands.d.ts.map +1 -0
  34. package/lib/session-commands.js +39 -0
  35. package/lib/session-commands.js.map +1 -0
  36. package/lib/sqlite.d.ts +8 -0
  37. package/lib/sqlite.d.ts.map +1 -0
  38. package/lib/sqlite.js +411 -0
  39. package/lib/sqlite.js.map +1 -0
  40. package/lib/store.d.ts +353 -0
  41. package/lib/store.d.ts.map +1 -0
  42. package/lib/store.js +2614 -0
  43. package/lib/store.js.map +1 -0
  44. package/lib/tools.d.ts +4 -0
  45. package/lib/tools.d.ts.map +1 -0
  46. package/lib/tools.js +54 -0
  47. package/lib/tools.js.map +1 -0
  48. package/lib/types.d.ts +329 -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 +122 -0
@@ -0,0 +1,269 @@
1
+ import { Context, Service } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ import Schema from '@deepseek-ai/schemastery';
4
+ import { type ApprovalDispatchRoute, type AssistantPolicyService } from '@dsh-enhanced/assistant-policy';
5
+ import { type InboundMessageProcessor } from './coordinator.js';
6
+ import { DeliveryStore } from './store.js';
7
+ import type { ConversationBinding, DeliveryAdapter, ExternalPrincipalKey, InboundEnvelope, InboxRecord, ModelPickerIntent, ModelPickerState, ModelRouteRef, OutboxRecord, PairingChallenge, PermissionPickerIntent } from './types.js';
8
+ export interface Config {
9
+ databasePath: string;
10
+ spoolPath: string;
11
+ schedulerEnabled?: boolean;
12
+ tickIntervalMs?: number;
13
+ leaseMs?: number;
14
+ maxAttempts?: number;
15
+ maxConcurrency?: number;
16
+ maxTextBytes?: number;
17
+ retryBaseMs?: number;
18
+ retryMaxMs?: number;
19
+ pairingTtlMs?: number;
20
+ pairingMaxAttempts?: number;
21
+ defaultWorkspace?: string;
22
+ defaultAgentPreset?: string;
23
+ policyRef?: string;
24
+ agentProvider?: string;
25
+ agentModel?: string;
26
+ /** Audited native-tool routes whose upstream adapters do not publish registry metadata yet. */
27
+ toolCapableProviders?: string[];
28
+ /**
29
+ * How to admit a route that publishes no tool-call capability at all. The DSH
30
+ * `generate` contract accepts `tools` for every adapter, so `allow` matches
31
+ * that baseline; `deny` opts a deployment into strict allowlisting. A
32
+ * provider-owned `none` declaration always fails closed either way.
33
+ */
34
+ unknownRouteToolCalls?: 'allow' | 'deny';
35
+ agentMaxOutputTokens?: number;
36
+ modelPickerTtlMs?: number;
37
+ permissionPickerTtlMs?: number;
38
+ toolApprovalTtlMs?: number;
39
+ }
40
+ export interface DeliveryInboundRuntime extends InboundMessageProcessor {
41
+ createSession(input: {
42
+ envelope: Readonly<InboundEnvelope>;
43
+ generation: number;
44
+ previous?: Readonly<ConversationBinding>;
45
+ signal: AbortSignal;
46
+ }): Promise<{
47
+ sessionId: string;
48
+ workspace: string;
49
+ agentPreset: string;
50
+ policyRef: string;
51
+ }>;
52
+ /** Immediate, process-local control path; it must never wait behind the binding's Inbox lane. */
53
+ cancelActive?(binding: Readonly<ConversationBinding>, cause: 'new' | 'stop'): boolean | Promise<boolean>;
54
+ }
55
+ export type AssistantDeliveryErrorCode = 'disposed' | 'missing-binding' | 'policy-denied' | 'runtime-conflict' | 'runtime-unavailable';
56
+ export declare class AssistantDeliveryError extends Error {
57
+ readonly code: AssistantDeliveryErrorCode;
58
+ constructor(code: AssistantDeliveryErrorCode, message: string);
59
+ }
60
+ declare module '@deepseek-ai/cordis' {
61
+ interface Context {
62
+ assistantDelivery: AssistantDeliveryService;
63
+ }
64
+ }
65
+ type ModelSelectionResult = {
66
+ status: 'pending';
67
+ } | {
68
+ status: 'rejected';
69
+ reason: 'authorization-revoked' | 'invalid-effort' | 'model-unavailable' | 'provider-model-mismatch' | 'provider-unavailable' | 'selection-superseded';
70
+ } | {
71
+ status: 'selected';
72
+ selection: ModelRouteRef;
73
+ };
74
+ interface ApprovalSettlementInput {
75
+ operationId: string;
76
+ callbackEventId: string;
77
+ callbackChatId: string;
78
+ bindingId: string;
79
+ principal: ExternalPrincipalKey;
80
+ proposalId: string;
81
+ expectedVersion: number;
82
+ diffHash: string;
83
+ decision: 'approved' | 'rejected';
84
+ reason: string;
85
+ }
86
+ export declare class AssistantDeliveryService extends Service {
87
+ static Config: Schema<Config>;
88
+ private readonly deliveryStore;
89
+ private readonly policy;
90
+ private readonly registry;
91
+ private readonly outbound;
92
+ private readonly inbound;
93
+ private readonly config;
94
+ private readonly ownerId;
95
+ private readonly bindingFlights;
96
+ private readonly conversationTransitions;
97
+ private readonly agentApprovalBindings;
98
+ private readonly toolApprovalControllers;
99
+ private modelSelectionFlight;
100
+ private modelSelectionRetryTimer;
101
+ private runtime;
102
+ private timer;
103
+ private active;
104
+ constructor(ctx: Context, input: Config);
105
+ issuePairing(operatorId: string, principal: ExternalPrincipalKey): {
106
+ challenge: PairingChallenge;
107
+ code: string;
108
+ };
109
+ confirmPairing(input: {
110
+ challengeId: string;
111
+ principal: ExternalPrincipalKey;
112
+ code: string;
113
+ }): import("./types.js").DeliveryPrincipal;
114
+ linkPrincipal(input: {
115
+ operatorId: string;
116
+ owner: ExternalPrincipalKey;
117
+ linked: ExternalPrincipalKey;
118
+ expectedLinkedVersion: number;
119
+ }): import("./types.js").DeliveryPrincipal;
120
+ private validateApprovalSettlement;
121
+ settleApproval(input: ApprovalSettlementInput): ReturnType<AssistantPolicyService['decideProposal']>;
122
+ recoverApprovalSettlement(input: ApprovalSettlementInput): ReturnType<AssistantPolicyService['decideProposal']> | undefined;
123
+ settleModelSelection(input: {
124
+ operationId: string;
125
+ callbackEventId: string;
126
+ callbackChatId: string;
127
+ bindingId: string;
128
+ principal: ExternalPrincipalKey;
129
+ provider: string;
130
+ modelProvider: string;
131
+ model: string;
132
+ reasoningEffort?: string;
133
+ expectedRevision: number;
134
+ }): ModelSelectionResult;
135
+ advanceModelPickerForCallback(input: {
136
+ operationId: string;
137
+ callbackChatId: string;
138
+ bindingId: string;
139
+ principal: ExternalPrincipalKey;
140
+ expected: ModelPickerState;
141
+ next: ModelRouteRef;
142
+ }): {
143
+ applied: boolean;
144
+ state: ModelPickerState;
145
+ };
146
+ getModelPickerForCallback(input: {
147
+ operationId: string;
148
+ callbackChatId: string;
149
+ bindingId: string;
150
+ principal: ExternalPrincipalKey;
151
+ }): ModelPickerIntent | undefined;
152
+ settlePermissionSelection(input: {
153
+ operationId: string;
154
+ callbackEventId: string;
155
+ callbackChatId: string;
156
+ cardMessageId: string;
157
+ bindingId: string;
158
+ bindingVersion: number;
159
+ sessionId: string;
160
+ principal: ExternalPrincipalKey;
161
+ issuedAt: number;
162
+ expiresAt: number;
163
+ expectedStateHash: string;
164
+ emergencyStopVersion: number;
165
+ targetLevel: 'ask' | 'auto' | 'full';
166
+ }): Promise<{
167
+ duplicate: boolean;
168
+ inboxId: string;
169
+ status: InboxRecord['status'];
170
+ }>;
171
+ resolveDeadLetter(input: {
172
+ operatorId: string;
173
+ kind: 'inbox' | 'outbox';
174
+ id: string;
175
+ expectedAttemptCount: number;
176
+ resolution: 'cancel' | 'retry';
177
+ }): InboxRecord | OutboxRecord;
178
+ registerInboundRuntime(runtime: DeliveryInboundRuntime): () => void;
179
+ registerAdapter(adapter: DeliveryAdapter): Promise<() => Promise<void>>;
180
+ health(): ReturnType<DeliveryStore['health']> & {
181
+ adapters: number;
182
+ };
183
+ private isInboundAuthorized;
184
+ private isPermissionController;
185
+ private authorizePermissionReply;
186
+ /**
187
+ * Provider event ids are scoped to an adapter account, while Outbox and the
188
+ * Policy ledger share one database-wide idempotency namespace. Anchor every
189
+ * command reply to the accepted Inbox row, whose id is stable across reopen.
190
+ */
191
+ private inboundReplyIdempotencyKey;
192
+ private hasActivePrincipal;
193
+ private toolApprovalRoute;
194
+ private resolveToolApprovalAuthority;
195
+ private requestToolApproval;
196
+ acceptInbound(envelope: InboundEnvelope): Promise<{
197
+ duplicate: boolean;
198
+ inboxId: string;
199
+ status: InboxRecord['status'];
200
+ }>;
201
+ enqueueBackground(input: {
202
+ sourceId: string;
203
+ workspace: string;
204
+ bindingId: string;
205
+ idempotencyKey: string;
206
+ text: string;
207
+ format?: 'markdown' | 'plain';
208
+ }): OutboxRecord;
209
+ enqueueApproval(input: {
210
+ sourceId: string;
211
+ workspace: string;
212
+ bindingId: string;
213
+ idempotencyKey: string;
214
+ text: string;
215
+ approval: NonNullable<import('./types.js').OutboundIntent['approval']>;
216
+ }): OutboxRecord;
217
+ private replyCommand;
218
+ /**
219
+ * Answers are authored as Markdown, but the coordinator drops an intent whose format the adapter
220
+ * does not declare (`unsupported-format`). Ask for Markdown only where the channel renders it and
221
+ * degrade to plain text elsewhere, so a reply is never lost to a capability mismatch.
222
+ */
223
+ private replyFormat;
224
+ reply(agent: Agent | undefined, input: {
225
+ idempotencyKey: string;
226
+ text: string;
227
+ format?: 'markdown' | 'model-picker' | 'permission-picker' | 'plain';
228
+ modelPicker?: ModelPickerIntent;
229
+ permissionPicker?: PermissionPickerIntent;
230
+ replyToEventId?: string;
231
+ }): OutboxRecord;
232
+ history(agent: Agent | undefined, input: {
233
+ limit?: number;
234
+ }): {
235
+ binding: ConversationBinding;
236
+ inbox: InboxRecord[];
237
+ outbox: OutboxRecord[];
238
+ };
239
+ bindAgentApprovalRoute(agent: Agent | undefined, input: {
240
+ bindingId: string;
241
+ }): () => void;
242
+ prepareAgentApproval(agent: Agent | undefined, input: {
243
+ sourceId: string;
244
+ }): ApprovalDispatchRoute;
245
+ tick(): Promise<void>;
246
+ whenIdle(): Promise<void>;
247
+ start(): void;
248
+ stop(): Promise<void>;
249
+ private ensureBinding;
250
+ private bindingForInbound;
251
+ /**
252
+ * Finish admissions that survived a process exit before their queue/rotate
253
+ * commit. The provider need not retransmit them: any later message in the
254
+ * same conversation first drives every older received row forward in its
255
+ * original durable Inbox order. This includes ordinary messages that were
256
+ * already persisted behind a blocked `/stop` or `/new` transition.
257
+ */
258
+ private recoverPendingInbound;
259
+ private runConversationTransition;
260
+ private rotateBinding;
261
+ private stopInternal;
262
+ private drainApprovalDispatches;
263
+ private drainModelSelectionSettlements;
264
+ private runModelSelectionSettlements;
265
+ private assertActive;
266
+ }
267
+ export declare const Config: Schema<Config>;
268
+ export {};
269
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}