@dsh-enhanced/assistant-automations 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 +135 -0
- package/cordis.patch.yml +36 -0
- package/lib/artifacts.d.ts +15 -0
- package/lib/artifacts.d.ts.map +1 -0
- package/lib/artifacts.js +68 -0
- package/lib/artifacts.js.map +1 -0
- package/lib/coordinator.d.ts +126 -0
- package/lib/coordinator.d.ts.map +1 -0
- package/lib/coordinator.js +374 -0
- package/lib/coordinator.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +11 -0
- package/lib/index.js.map +1 -0
- package/lib/operator.d.ts +4 -0
- package/lib/operator.d.ts.map +1 -0
- package/lib/operator.js +12 -0
- package/lib/operator.js.map +1 -0
- package/lib/proposals.d.ts +89 -0
- package/lib/proposals.d.ts.map +1 -0
- package/lib/proposals.js +499 -0
- package/lib/proposals.js.map +1 -0
- package/lib/runner.d.ts +34 -0
- package/lib/runner.d.ts.map +1 -0
- package/lib/runner.js +272 -0
- package/lib/runner.js.map +1 -0
- package/lib/schedule.d.ts +32 -0
- package/lib/schedule.d.ts.map +1 -0
- package/lib/schedule.js +245 -0
- package/lib/schedule.js.map +1 -0
- package/lib/service.d.ts +159 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +445 -0
- package/lib/service.js.map +1 -0
- package/lib/sqlite.d.ts +8 -0
- package/lib/sqlite.d.ts.map +1 -0
- package/lib/sqlite.js +281 -0
- package/lib/sqlite.js.map +1 -0
- package/lib/store.d.ts +169 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +1002 -0
- package/lib/store.js.map +1 -0
- package/lib/tools.d.ts +4 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +226 -0
- package/lib/tools.js.map +1 -0
- package/lib/types.d.ts +182 -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 +106 -0
package/lib/service.d.ts
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
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 { AutomationStore } from './store.js';
|
|
5
|
+
import type { AutomationMutation, AutomationDefinition, AutomationOccurrence, AutomationProposalDecisionInput, AutomationProposalResult, AutomationRecord, AutomationRun, MisfirePolicy, OverlapPolicy, RetrySafety } from './types.js';
|
|
6
|
+
export interface AutomationProposalDefaults {
|
|
7
|
+
provider: string;
|
|
8
|
+
model: string;
|
|
9
|
+
/** Maximum tool set from which a model may request an immutable subset. */
|
|
10
|
+
allowedTools: string[];
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
maxOutputTokens: number;
|
|
13
|
+
maxToolCalls: number;
|
|
14
|
+
misfireKind: MisfirePolicy['kind'];
|
|
15
|
+
misfireLimit: number;
|
|
16
|
+
overlap: OverlapPolicy;
|
|
17
|
+
retrySafety: RetrySafety;
|
|
18
|
+
maxRetries: number;
|
|
19
|
+
budgetId: string;
|
|
20
|
+
budgetAmount: number;
|
|
21
|
+
}
|
|
22
|
+
export type AutomationProposalMutation = {
|
|
23
|
+
op: 'create';
|
|
24
|
+
automationId: string;
|
|
25
|
+
definition: Pick<AutomationDefinition, 'allowedTools' | 'name' | 'prompt' | 'schedule'> & Partial<AutomationDefinition>;
|
|
26
|
+
} | Exclude<AutomationMutation, {
|
|
27
|
+
op: 'create';
|
|
28
|
+
}>;
|
|
29
|
+
export interface Config {
|
|
30
|
+
databasePath: string;
|
|
31
|
+
runsPath: string;
|
|
32
|
+
schedulerEnabled?: boolean;
|
|
33
|
+
tickIntervalMs?: number;
|
|
34
|
+
dutyLeaseMs?: number;
|
|
35
|
+
taskLeaseMs?: number;
|
|
36
|
+
misfireGraceMs?: number;
|
|
37
|
+
maxCatchUp?: number;
|
|
38
|
+
maxConcurrency?: number;
|
|
39
|
+
maxArtifactBytes?: number;
|
|
40
|
+
defaultProposalTtlMs?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Poll interval for committing proposals that were approved out of band, for
|
|
43
|
+
* example on an approval card after the originating turn ended. This runs even
|
|
44
|
+
* when `schedulerEnabled` is false, because approving a paused automation must
|
|
45
|
+
* still take effect. `0` disables the timer.
|
|
46
|
+
*/
|
|
47
|
+
reconcileIntervalMs?: number;
|
|
48
|
+
/** Maximum locally pending proposals inspected per reconcile pass. */
|
|
49
|
+
reconcileLimit?: number;
|
|
50
|
+
/** Safe default: every unattended occurrence must reserve a configured Policy budget. */
|
|
51
|
+
allowUnbudgetedExecution?: boolean;
|
|
52
|
+
/** Trusted authority and execution bounds used for model-proposed definitions. */
|
|
53
|
+
proposalDefaults?: AutomationProposalDefaults;
|
|
54
|
+
/** Audited native-tool routes whose upstream adapters do not publish registry metadata yet. */
|
|
55
|
+
toolCapableProviders?: string[];
|
|
56
|
+
/**
|
|
57
|
+
* How to admit a route that publishes no tool-call capability at all. The DSH
|
|
58
|
+
* `generate` contract accepts `tools` for every adapter, so `allow` matches
|
|
59
|
+
* that baseline; `deny` opts a deployment into strict allowlisting. A
|
|
60
|
+
* provider-owned `none` declaration always fails closed either way.
|
|
61
|
+
*/
|
|
62
|
+
unknownRouteToolCalls?: 'allow' | 'deny';
|
|
63
|
+
}
|
|
64
|
+
export interface AutomationServiceProposalInput {
|
|
65
|
+
idempotencyKey: string;
|
|
66
|
+
/** Headless-only compatibility. When Delivery is present this must exactly match its owner. */
|
|
67
|
+
principal?: string;
|
|
68
|
+
mutation: AutomationProposalMutation;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Bounded view of one proposal awaiting a decision. Deliberately excludes the
|
|
72
|
+
* prompt, principal, and any host path so it is safe to surface to a model.
|
|
73
|
+
*/
|
|
74
|
+
export interface PendingAutomationProposal {
|
|
75
|
+
proposalId: string;
|
|
76
|
+
automationId: string;
|
|
77
|
+
operation: AutomationMutation['op'];
|
|
78
|
+
expiresAt: number;
|
|
79
|
+
version: number;
|
|
80
|
+
attachedToPolicy: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface SystemAutomationReconcileInput {
|
|
83
|
+
owner: string;
|
|
84
|
+
automationId: string;
|
|
85
|
+
idempotencyKey: string;
|
|
86
|
+
desiredStatus?: 'active' | 'paused';
|
|
87
|
+
definition: AutomationDefinition;
|
|
88
|
+
}
|
|
89
|
+
export type AssistantAutomationsErrorCode = 'disposed' | 'invalid-proposal' | 'missing-identity' | 'missing-approval-route' | 'policy-denied' | 'unauthorized-principal';
|
|
90
|
+
export declare class AssistantAutomationsError extends Error {
|
|
91
|
+
readonly code: AssistantAutomationsErrorCode;
|
|
92
|
+
constructor(code: AssistantAutomationsErrorCode, message: string);
|
|
93
|
+
}
|
|
94
|
+
declare module '@deepseek-ai/cordis' {
|
|
95
|
+
interface Context {
|
|
96
|
+
assistantAutomations: AssistantAutomationsService;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export declare class AssistantAutomationsService extends Service {
|
|
100
|
+
static Config: Schema<Config>;
|
|
101
|
+
private readonly store;
|
|
102
|
+
private readonly proposalStore;
|
|
103
|
+
private readonly proposals;
|
|
104
|
+
private readonly policy;
|
|
105
|
+
private readonly coordinator;
|
|
106
|
+
private readonly config;
|
|
107
|
+
private approvalDelivery;
|
|
108
|
+
private active;
|
|
109
|
+
constructor(ctx: Context, input: Config);
|
|
110
|
+
propose(agent: Agent | undefined, input: AutomationServiceProposalInput): AutomationProposalResult;
|
|
111
|
+
decideProposal(input: AutomationProposalDecisionInput): AutomationProposalResult;
|
|
112
|
+
/**
|
|
113
|
+
* Commit proposals whose policy decision settled after the originating turn.
|
|
114
|
+
* Without this, an approval granted on a chat card would leave the automation
|
|
115
|
+
* proposal pending forever. Safe to call repeatedly.
|
|
116
|
+
*/
|
|
117
|
+
reconcileProposals(limit?: number): AutomationProposalResult[];
|
|
118
|
+
/**
|
|
119
|
+
* List proposals still awaiting a decision, so a turn can tell the owner what
|
|
120
|
+
* it already asked for instead of silently re-proposing the same change.
|
|
121
|
+
*
|
|
122
|
+
* Bounded metadata only: no prompts, principals, or host paths.
|
|
123
|
+
*/
|
|
124
|
+
listPendingProposals(agent: Agent | undefined, limit?: number): PendingAutomationProposal[];
|
|
125
|
+
getProposal(proposalId: string, principal: string): AutomationProposalResult | undefined;
|
|
126
|
+
list(agent: Agent | undefined): AutomationRecord[];
|
|
127
|
+
history(agent: Agent | undefined, input?: {
|
|
128
|
+
automationId?: string;
|
|
129
|
+
limit?: number;
|
|
130
|
+
}): {
|
|
131
|
+
occurrences: AutomationOccurrence[];
|
|
132
|
+
runs: AutomationRun[];
|
|
133
|
+
};
|
|
134
|
+
runDry(agent: Agent | undefined, input: {
|
|
135
|
+
automationId: string;
|
|
136
|
+
idempotencyKey: string;
|
|
137
|
+
}): Promise<{
|
|
138
|
+
occurrence: AutomationOccurrence;
|
|
139
|
+
run: AutomationRun;
|
|
140
|
+
}>;
|
|
141
|
+
ingestExternal(input: {
|
|
142
|
+
sourceId: string;
|
|
143
|
+
automationId: string;
|
|
144
|
+
eventId: string;
|
|
145
|
+
occurredAt: number;
|
|
146
|
+
}): AutomationOccurrence;
|
|
147
|
+
reconcileSystem(input: SystemAutomationReconcileInput): AutomationRecord;
|
|
148
|
+
tick(): Promise<void>;
|
|
149
|
+
whenIdle(): Promise<void>;
|
|
150
|
+
health(): ReturnType<AutomationStore['health']>;
|
|
151
|
+
start(): void;
|
|
152
|
+
stop(): Promise<void>;
|
|
153
|
+
cancel(taskId: string): Promise<void>;
|
|
154
|
+
private authorizeAgent;
|
|
155
|
+
private resolveApprovalRoute;
|
|
156
|
+
private assertActive;
|
|
157
|
+
}
|
|
158
|
+
export declare const Config: Schema<Config>;
|
|
159
|
+
//# 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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"}
|
package/lib/service.js
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import { isAbsolute } from 'node:path';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { Context, Service } from '@deepseek-ai/cordis';
|
|
4
|
+
import Schema from '@deepseek-ai/schemastery';
|
|
5
|
+
import { AutomationArtifactStore } from './artifacts.js';
|
|
6
|
+
import { AutomationCoordinator, } from './coordinator.js';
|
|
7
|
+
import { AutomationProposalManager, AutomationProposalStore } from './proposals.js';
|
|
8
|
+
import { DshAutomationRunner } from './runner.js';
|
|
9
|
+
import { AutomationStore } from './store.js';
|
|
10
|
+
import { registerAutomationTools } from './tools.js';
|
|
11
|
+
export class AssistantAutomationsError extends Error {
|
|
12
|
+
code;
|
|
13
|
+
constructor(code, message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.code = code;
|
|
16
|
+
this.name = 'AssistantAutomationsError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const proposalDefaults = Object.freeze({
|
|
20
|
+
provider: 'deepseek-official',
|
|
21
|
+
model: 'deepseek-chat',
|
|
22
|
+
allowedTools: [],
|
|
23
|
+
timeoutMs: 60_000,
|
|
24
|
+
maxOutputTokens: 512,
|
|
25
|
+
maxToolCalls: 0,
|
|
26
|
+
misfireKind: 'latest',
|
|
27
|
+
misfireLimit: 1,
|
|
28
|
+
overlap: 'skip',
|
|
29
|
+
retrySafety: 'never',
|
|
30
|
+
maxRetries: 0,
|
|
31
|
+
budgetId: 'assistant-automations-proposals',
|
|
32
|
+
budgetAmount: 1,
|
|
33
|
+
});
|
|
34
|
+
const routeText = Schema.string().pattern(/^[^\s\p{Cc}]{1,500}$/u);
|
|
35
|
+
const boundedId = Schema.string().pattern(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$/u);
|
|
36
|
+
const proposalDefaultsSchema = Schema.object({
|
|
37
|
+
provider: routeText.required(),
|
|
38
|
+
model: routeText.required(),
|
|
39
|
+
allowedTools: Schema.array(boundedId).max(100).required(),
|
|
40
|
+
timeoutMs: Schema.number().step(1).min(1_000).max(86_400_000).required(),
|
|
41
|
+
maxOutputTokens: Schema.number().step(1).min(1).max(1_000_000).required(),
|
|
42
|
+
maxToolCalls: Schema.number().step(1).min(0).max(10_000).required(),
|
|
43
|
+
misfireKind: Schema.union([
|
|
44
|
+
Schema.const('skip'), Schema.const('latest'), Schema.const('bounded-replay'),
|
|
45
|
+
]).required(),
|
|
46
|
+
misfireLimit: Schema.number().step(1).min(1).max(100).required(),
|
|
47
|
+
overlap: Schema.union([
|
|
48
|
+
Schema.const('skip'), Schema.const('queue-one'), Schema.const('cancel-previous'),
|
|
49
|
+
]).required(),
|
|
50
|
+
retrySafety: Schema.union([Schema.const('never'), Schema.const('idempotent')]).required(),
|
|
51
|
+
maxRetries: Schema.number().step(1).min(0).max(10).required(),
|
|
52
|
+
budgetId: boundedId.required(),
|
|
53
|
+
budgetAmount: Schema.number().step(1).min(1).max(10_000_000).required(),
|
|
54
|
+
}).default(proposalDefaults);
|
|
55
|
+
const configSchema = Schema.object({
|
|
56
|
+
databasePath: Schema.string().required(),
|
|
57
|
+
runsPath: Schema.string().required(),
|
|
58
|
+
schedulerEnabled: Schema.boolean().default(false),
|
|
59
|
+
tickIntervalMs: Schema.number().step(1).min(1_000).default(5_000),
|
|
60
|
+
dutyLeaseMs: Schema.number().step(1).min(3_000).default(15_000),
|
|
61
|
+
taskLeaseMs: Schema.number().step(1).min(3_000).default(30_000),
|
|
62
|
+
misfireGraceMs: Schema.number().step(1).min(0).default(60_000),
|
|
63
|
+
maxCatchUp: Schema.number().step(1).min(1).max(1_000).default(100),
|
|
64
|
+
maxConcurrency: Schema.number().step(1).min(1).max(100).default(1),
|
|
65
|
+
maxArtifactBytes: Schema.number().step(1).min(128).max(16 * 1024 * 1024).default(1_048_576),
|
|
66
|
+
defaultProposalTtlMs: Schema.number().step(1).min(1).default(900_000),
|
|
67
|
+
reconcileIntervalMs: Schema.number().step(1).min(0).default(15_000),
|
|
68
|
+
reconcileLimit: Schema.number().step(1).min(1).max(1_000).default(50),
|
|
69
|
+
allowUnbudgetedExecution: Schema.boolean().default(false),
|
|
70
|
+
proposalDefaults: proposalDefaultsSchema,
|
|
71
|
+
toolCapableProviders: Schema.array(Schema.string().pattern(/^[A-Za-z0-9][A-Za-z0-9._-]{0,255}$/u)).default(['deepseek-official']),
|
|
72
|
+
unknownRouteToolCalls: Schema.union(['allow', 'deny']).default('allow'),
|
|
73
|
+
});
|
|
74
|
+
function policyError(decision) {
|
|
75
|
+
return new AssistantAutomationsError('policy-denied', `assistant-automations policy denied operation: ${decision.reasonCode}`);
|
|
76
|
+
}
|
|
77
|
+
class PolicyBoundRunner {
|
|
78
|
+
policy;
|
|
79
|
+
delegate;
|
|
80
|
+
constructor(policy, delegate) {
|
|
81
|
+
this.policy = policy;
|
|
82
|
+
this.delegate = delegate;
|
|
83
|
+
}
|
|
84
|
+
run(input) {
|
|
85
|
+
const decision = this.policy.authorize({
|
|
86
|
+
subject: {
|
|
87
|
+
kind: 'background',
|
|
88
|
+
id: input.automation.id,
|
|
89
|
+
workspace: input.automation.definition.workspace,
|
|
90
|
+
principal: input.automation.definition.principal,
|
|
91
|
+
},
|
|
92
|
+
action: 'execute',
|
|
93
|
+
resource: { kind: 'automation', id: input.automation.id },
|
|
94
|
+
context: { initiator: 'background' },
|
|
95
|
+
}, { idempotencyKey: `automation-execute:${input.occurrence.id}` });
|
|
96
|
+
if (decision.effect !== 'allow') {
|
|
97
|
+
return Promise.resolve({
|
|
98
|
+
outcome: 'cancelled',
|
|
99
|
+
output: `policy denied background execution: ${decision.reasonCode}`,
|
|
100
|
+
usage: {},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return this.delegate.run(input);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export class AssistantAutomationsService extends Service {
|
|
107
|
+
static Config = configSchema;
|
|
108
|
+
store;
|
|
109
|
+
proposalStore;
|
|
110
|
+
proposals;
|
|
111
|
+
policy;
|
|
112
|
+
coordinator;
|
|
113
|
+
config;
|
|
114
|
+
approvalDelivery;
|
|
115
|
+
active = true;
|
|
116
|
+
constructor(ctx, input) {
|
|
117
|
+
super(ctx, 'assistantAutomations');
|
|
118
|
+
let config;
|
|
119
|
+
try {
|
|
120
|
+
config = AssistantAutomationsService.Config(input);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
throw new Error(`assistant-automations: invalid configuration: ${String(error)}`, { cause: error });
|
|
124
|
+
}
|
|
125
|
+
if (!isAbsolute(config.databasePath) || !isAbsolute(config.runsPath)) {
|
|
126
|
+
throw new Error('assistant-automations: databasePath and runsPath must be absolute paths');
|
|
127
|
+
}
|
|
128
|
+
if (new Set(config.proposalDefaults.allowedTools).size !== config.proposalDefaults.allowedTools.length) {
|
|
129
|
+
throw new Error('assistant-automations: invalid configuration: proposalDefaults.allowedTools contains a duplicate');
|
|
130
|
+
}
|
|
131
|
+
const policy = ctx.get('assistantPolicy');
|
|
132
|
+
if (policy === undefined)
|
|
133
|
+
throw new Error('assistant-automations: assistantPolicy service is required');
|
|
134
|
+
this.config = config;
|
|
135
|
+
this.policy = policy;
|
|
136
|
+
this.approvalDelivery = ctx.get('assistantDelivery');
|
|
137
|
+
this.store = new AutomationStore({ path: config.databasePath });
|
|
138
|
+
this.proposalStore = new AutomationProposalStore({ path: config.databasePath });
|
|
139
|
+
this.proposals = new AutomationProposalManager(this.store, this.proposalStore, policy);
|
|
140
|
+
const artifacts = new AutomationArtifactStore({ rootPath: config.runsPath, maxBytes: config.maxArtifactBytes });
|
|
141
|
+
const runner = new PolicyBoundRunner(policy, new DshAutomationRunner(ctx, policy, {
|
|
142
|
+
allowUnbudgetedExecution: config.allowUnbudgetedExecution,
|
|
143
|
+
toolCapableProviders: config.toolCapableProviders,
|
|
144
|
+
unknownRouteToolCalls: config.unknownRouteToolCalls ?? 'allow',
|
|
145
|
+
}));
|
|
146
|
+
this.coordinator = new AutomationCoordinator({
|
|
147
|
+
store: this.store,
|
|
148
|
+
artifacts,
|
|
149
|
+
runner,
|
|
150
|
+
ownerId: `assistant-automations-${randomUUID()}`,
|
|
151
|
+
dutyLeaseMs: config.dutyLeaseMs,
|
|
152
|
+
taskLeaseMs: config.taskLeaseMs,
|
|
153
|
+
misfireGraceMs: config.misfireGraceMs,
|
|
154
|
+
maxCatchUp: config.maxCatchUp,
|
|
155
|
+
maxConcurrency: config.maxConcurrency,
|
|
156
|
+
tickIntervalMs: config.tickIntervalMs,
|
|
157
|
+
});
|
|
158
|
+
ctx.inject(['assistantDelivery'], deliveryCtx => {
|
|
159
|
+
const delivery = deliveryCtx.get('assistantDelivery');
|
|
160
|
+
this.approvalDelivery = delivery;
|
|
161
|
+
this.coordinator.setDeliveryDispatcher(delivery);
|
|
162
|
+
return () => {
|
|
163
|
+
if (this.approvalDelivery === delivery)
|
|
164
|
+
this.approvalDelivery = undefined;
|
|
165
|
+
this.coordinator.setDeliveryDispatcher(undefined);
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
// Optional: when a learning plugin is composed, finished runs become evidence.
|
|
169
|
+
// The binding is one-way and structural, so the scheduler works identically
|
|
170
|
+
// whether or not assistant-evolution is installed.
|
|
171
|
+
ctx.inject(['assistantEvolution'], evolutionCtx => {
|
|
172
|
+
const recorder = evolutionCtx.get('assistantEvolution');
|
|
173
|
+
this.coordinator.setOutcomeRecorder(recorder);
|
|
174
|
+
return () => this.coordinator.setOutcomeRecorder(undefined);
|
|
175
|
+
});
|
|
176
|
+
if (config.schedulerEnabled)
|
|
177
|
+
this.coordinator.start();
|
|
178
|
+
if (config.reconcileIntervalMs > 0) {
|
|
179
|
+
ctx.effect(() => {
|
|
180
|
+
const timer = setInterval(() => {
|
|
181
|
+
// A reconcile pass must never take the service down; the next tick retries.
|
|
182
|
+
try {
|
|
183
|
+
this.reconcileProposals();
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Intentionally ignored: the authoritative state stays in the ledger.
|
|
187
|
+
}
|
|
188
|
+
}, config.reconcileIntervalMs);
|
|
189
|
+
timer.unref?.();
|
|
190
|
+
return () => clearInterval(timer);
|
|
191
|
+
}, 'assistant-automations.reconcile');
|
|
192
|
+
}
|
|
193
|
+
ctx.inject(['tools'], toolsCtx => registerAutomationTools(toolsCtx, this));
|
|
194
|
+
ctx.effect(() => async () => {
|
|
195
|
+
this.active = false;
|
|
196
|
+
await this.coordinator.stop();
|
|
197
|
+
this.proposalStore.close();
|
|
198
|
+
this.store.close();
|
|
199
|
+
}, 'assistant-automations.runtime');
|
|
200
|
+
}
|
|
201
|
+
propose(agent, input) {
|
|
202
|
+
const identity = this.authorizeAgent(agent, 'propose', input.mutation.automationId, `automation-propose:${input.idempotencyKey}`);
|
|
203
|
+
const approval = this.resolveApprovalRoute(agent, identity, input.principal);
|
|
204
|
+
let mutation;
|
|
205
|
+
if (input.mutation.op === 'create') {
|
|
206
|
+
const requestedTools = input.mutation.definition.allowedTools;
|
|
207
|
+
if (!Array.isArray(requestedTools)
|
|
208
|
+
|| requestedTools.some(tool => typeof tool !== 'string'
|
|
209
|
+
|| !this.config.proposalDefaults.allowedTools.includes(tool))
|
|
210
|
+
|| new Set(requestedTools).size !== requestedTools.length) {
|
|
211
|
+
throw new AssistantAutomationsError('invalid-proposal', 'automation proposal allowed tools must be a unique subset of proposalDefaults.allowedTools');
|
|
212
|
+
}
|
|
213
|
+
const defaults = this.config.proposalDefaults;
|
|
214
|
+
const misfire = defaults.misfireKind === 'bounded-replay'
|
|
215
|
+
? { kind: 'bounded-replay', limit: defaults.misfireLimit }
|
|
216
|
+
: { kind: defaults.misfireKind };
|
|
217
|
+
mutation = {
|
|
218
|
+
op: 'create',
|
|
219
|
+
automationId: input.mutation.automationId,
|
|
220
|
+
definition: {
|
|
221
|
+
name: input.mutation.definition.name,
|
|
222
|
+
prompt: input.mutation.definition.prompt,
|
|
223
|
+
schedule: input.mutation.definition.schedule,
|
|
224
|
+
workspace: identity.workspace,
|
|
225
|
+
agentPreset: identity.agentPreset,
|
|
226
|
+
provider: defaults.provider,
|
|
227
|
+
model: defaults.model,
|
|
228
|
+
allowedTools: requestedTools,
|
|
229
|
+
timeoutMs: defaults.timeoutMs,
|
|
230
|
+
maxOutputTokens: defaults.maxOutputTokens,
|
|
231
|
+
maxToolCalls: defaults.maxToolCalls,
|
|
232
|
+
misfire,
|
|
233
|
+
overlap: defaults.overlap,
|
|
234
|
+
retrySafety: defaults.retrySafety,
|
|
235
|
+
maxRetries: defaults.maxRetries,
|
|
236
|
+
principal: approval.principal,
|
|
237
|
+
budgetId: defaults.budgetId,
|
|
238
|
+
budgetAmount: defaults.budgetAmount,
|
|
239
|
+
...(approval.dispatch === undefined ? {} : { deliveryBindingId: approval.dispatch.bindingId }),
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
const current = this.store.get(input.mutation.automationId);
|
|
245
|
+
if (current !== undefined && (current.definition.workspace !== identity.workspace
|
|
246
|
+
|| current.definition.agentPreset !== identity.agentPreset
|
|
247
|
+
|| current.definition.principal !== approval.principal
|
|
248
|
+
|| current.definition.deliveryBindingId !== approval.dispatch?.bindingId)) {
|
|
249
|
+
throw new AssistantAutomationsError('missing-approval-route', 'automation lifecycle proposal does not match the immutable owner route');
|
|
250
|
+
}
|
|
251
|
+
mutation = input.mutation;
|
|
252
|
+
}
|
|
253
|
+
return this.proposals.propose({
|
|
254
|
+
idempotencyKey: input.idempotencyKey,
|
|
255
|
+
requester: `agent:${identity.agentPreset}`,
|
|
256
|
+
principal: approval.principal,
|
|
257
|
+
...(approval.dispatch === undefined ? {} : { dispatch: approval.dispatch }),
|
|
258
|
+
ttlMs: this.config.defaultProposalTtlMs,
|
|
259
|
+
mutation,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
decideProposal(input) {
|
|
263
|
+
this.assertActive();
|
|
264
|
+
return this.proposals.decide(input);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Commit proposals whose policy decision settled after the originating turn.
|
|
268
|
+
* Without this, an approval granted on a chat card would leave the automation
|
|
269
|
+
* proposal pending forever. Safe to call repeatedly.
|
|
270
|
+
*/
|
|
271
|
+
reconcileProposals(limit) {
|
|
272
|
+
this.assertActive();
|
|
273
|
+
return this.proposals.reconcile(limit ?? this.config.reconcileLimit);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* List proposals still awaiting a decision, so a turn can tell the owner what
|
|
277
|
+
* it already asked for instead of silently re-proposing the same change.
|
|
278
|
+
*
|
|
279
|
+
* Bounded metadata only: no prompts, principals, or host paths.
|
|
280
|
+
*/
|
|
281
|
+
listPendingProposals(agent, limit) {
|
|
282
|
+
this.authorizeAgent(agent, 'inspect', 'pending-proposals');
|
|
283
|
+
const bounded = Math.min(limit ?? this.config.reconcileLimit, this.config.reconcileLimit);
|
|
284
|
+
return this.proposalStore.listPending(bounded).map(proposal => Object.freeze({
|
|
285
|
+
proposalId: proposal.proposalId,
|
|
286
|
+
automationId: proposal.mutation.automationId,
|
|
287
|
+
operation: proposal.mutation.op,
|
|
288
|
+
expiresAt: proposal.expiresAt,
|
|
289
|
+
version: proposal.version,
|
|
290
|
+
attachedToPolicy: proposal.policyProposalId !== undefined,
|
|
291
|
+
}));
|
|
292
|
+
}
|
|
293
|
+
getProposal(proposalId, principal) {
|
|
294
|
+
this.assertActive();
|
|
295
|
+
const stored = this.proposalStore.get(proposalId);
|
|
296
|
+
if (stored === undefined)
|
|
297
|
+
return undefined;
|
|
298
|
+
if (stored.principal !== principal) {
|
|
299
|
+
throw new AssistantAutomationsError('unauthorized-principal', 'automation proposal belongs to another principal');
|
|
300
|
+
}
|
|
301
|
+
return this.proposals.get(proposalId);
|
|
302
|
+
}
|
|
303
|
+
list(agent) {
|
|
304
|
+
this.authorizeAgent(agent, 'list', 'catalog');
|
|
305
|
+
return this.store.list();
|
|
306
|
+
}
|
|
307
|
+
history(agent, input = {}) {
|
|
308
|
+
this.authorizeAgent(agent, 'history', input.automationId ?? 'catalog');
|
|
309
|
+
const limit = input.limit ?? 20;
|
|
310
|
+
return {
|
|
311
|
+
occurrences: this.store.listOccurrences({
|
|
312
|
+
...(input.automationId === undefined ? {} : { automationId: input.automationId }), limit,
|
|
313
|
+
}),
|
|
314
|
+
runs: this.store.listRuns({
|
|
315
|
+
...(input.automationId === undefined ? {} : { automationId: input.automationId }), limit,
|
|
316
|
+
}),
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
async runDry(agent, input) {
|
|
320
|
+
this.authorizeAgent(agent, 'run-dry', input.automationId, `automation-dry:${input.idempotencyKey}`);
|
|
321
|
+
const occurrence = this.store.createManual({
|
|
322
|
+
automationId: input.automationId,
|
|
323
|
+
requestId: `dry:${input.idempotencyKey}`,
|
|
324
|
+
dryRun: true,
|
|
325
|
+
});
|
|
326
|
+
let run = this.store.listRuns({ automationId: input.automationId, limit: 1_000 })
|
|
327
|
+
.find(value => value.occurrenceId === occurrence.id);
|
|
328
|
+
if (run === undefined) {
|
|
329
|
+
await this.coordinator.tick();
|
|
330
|
+
await this.coordinator.whenIdle();
|
|
331
|
+
run = this.store.listRuns({ automationId: input.automationId, limit: 1_000 })
|
|
332
|
+
.find(value => value.occurrenceId === occurrence.id);
|
|
333
|
+
}
|
|
334
|
+
if (run === undefined)
|
|
335
|
+
throw new Error('assistant-automations: dry-run task was not claimed by this duty owner');
|
|
336
|
+
return { occurrence: this.store.getOccurrence(occurrence.id), run };
|
|
337
|
+
}
|
|
338
|
+
ingestExternal(input) {
|
|
339
|
+
this.assertActive();
|
|
340
|
+
const automation = this.store.get(input.automationId);
|
|
341
|
+
const decision = this.policy.authorize({
|
|
342
|
+
subject: {
|
|
343
|
+
kind: 'external',
|
|
344
|
+
id: input.sourceId,
|
|
345
|
+
...(automation === undefined ? {} : { workspace: automation.definition.workspace }),
|
|
346
|
+
},
|
|
347
|
+
action: 'ingest',
|
|
348
|
+
resource: { kind: 'automation', id: input.automationId },
|
|
349
|
+
context: { initiator: 'external' },
|
|
350
|
+
}, { idempotencyKey: `automation-event:${input.sourceId}:${input.eventId}` });
|
|
351
|
+
if (decision.effect !== 'allow')
|
|
352
|
+
throw policyError(decision);
|
|
353
|
+
return this.store.ingestExternal({
|
|
354
|
+
automationId: input.automationId,
|
|
355
|
+
externalEventId: `${input.sourceId}:${input.eventId}`,
|
|
356
|
+
occurredAt: input.occurredAt,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
reconcileSystem(input) {
|
|
360
|
+
this.assertActive();
|
|
361
|
+
if (input.owner.trim() === '') {
|
|
362
|
+
throw new AssistantAutomationsError('missing-identity', 'system automation owner is required');
|
|
363
|
+
}
|
|
364
|
+
const decision = this.policy.authorize({
|
|
365
|
+
subject: {
|
|
366
|
+
kind: 'background',
|
|
367
|
+
id: input.owner,
|
|
368
|
+
workspace: input.definition.workspace,
|
|
369
|
+
principal: input.definition.principal,
|
|
370
|
+
},
|
|
371
|
+
action: 'reconcile',
|
|
372
|
+
resource: { kind: 'automation', id: input.automationId },
|
|
373
|
+
context: { initiator: 'background' },
|
|
374
|
+
}, { idempotencyKey: `automation-reconcile:${input.owner}:${input.idempotencyKey}` });
|
|
375
|
+
if (decision.effect !== 'allow')
|
|
376
|
+
throw policyError(decision);
|
|
377
|
+
return this.store.reconcileSystemOwned(input);
|
|
378
|
+
}
|
|
379
|
+
async tick() {
|
|
380
|
+
this.assertActive();
|
|
381
|
+
await this.coordinator.tick();
|
|
382
|
+
}
|
|
383
|
+
async whenIdle() {
|
|
384
|
+
this.assertActive();
|
|
385
|
+
await this.coordinator.whenIdle();
|
|
386
|
+
}
|
|
387
|
+
health() {
|
|
388
|
+
this.assertActive();
|
|
389
|
+
return this.store.health();
|
|
390
|
+
}
|
|
391
|
+
start() {
|
|
392
|
+
this.assertActive();
|
|
393
|
+
this.coordinator.start();
|
|
394
|
+
}
|
|
395
|
+
async stop() {
|
|
396
|
+
this.assertActive();
|
|
397
|
+
await this.coordinator.stop();
|
|
398
|
+
}
|
|
399
|
+
async cancel(taskId) {
|
|
400
|
+
this.assertActive();
|
|
401
|
+
await this.coordinator.cancel(taskId);
|
|
402
|
+
}
|
|
403
|
+
authorizeAgent(agent, action, resourceId, idempotencyKey) {
|
|
404
|
+
this.assertActive();
|
|
405
|
+
if (agent === undefined)
|
|
406
|
+
throw new AssistantAutomationsError('missing-identity', 'automation operation requires an Agent');
|
|
407
|
+
const workspace = agent.session.header.cwd;
|
|
408
|
+
const agentPreset = agent.session.header.agentPreset;
|
|
409
|
+
if (workspace === undefined || !isAbsolute(workspace) || agentPreset === undefined || agentPreset.trim() === '') {
|
|
410
|
+
throw new AssistantAutomationsError('missing-identity', 'automation operation requires absolute workspace and preset');
|
|
411
|
+
}
|
|
412
|
+
const decision = this.policy.authorizeAgent(agent, action, { kind: 'automation', id: resourceId }, idempotencyKey === undefined ? {} : { idempotencyKey });
|
|
413
|
+
if (decision.effect !== 'allow')
|
|
414
|
+
throw policyError(decision);
|
|
415
|
+
return { workspace, agentPreset };
|
|
416
|
+
}
|
|
417
|
+
resolveApprovalRoute(agent, identity, explicitPrincipal) {
|
|
418
|
+
const delivery = this.approvalDelivery;
|
|
419
|
+
if (delivery === undefined) {
|
|
420
|
+
if (explicitPrincipal === undefined || explicitPrincipal.trim() === '') {
|
|
421
|
+
throw new AssistantAutomationsError('missing-approval-route', 'automation proposal requires an authenticated Delivery route or explicit trusted headless principal');
|
|
422
|
+
}
|
|
423
|
+
return { principal: explicitPrincipal };
|
|
424
|
+
}
|
|
425
|
+
const dispatch = delivery.prepareAgentApproval(agent, {
|
|
426
|
+
sourceId: 'dsh-enhanced-assistant-automations',
|
|
427
|
+
});
|
|
428
|
+
if (dispatch.sourceId !== 'dsh-enhanced-assistant-automations'
|
|
429
|
+
|| dispatch.workspace !== identity.workspace
|
|
430
|
+
|| dispatch.bindingId.trim() === ''
|
|
431
|
+
|| dispatch.principal.trim() === '') {
|
|
432
|
+
throw new AssistantAutomationsError('missing-approval-route', 'automation proposal Delivery approval route does not match the current Agent workspace');
|
|
433
|
+
}
|
|
434
|
+
if (explicitPrincipal !== undefined && explicitPrincipal !== dispatch.principal) {
|
|
435
|
+
throw new AssistantAutomationsError('unauthorized-principal', 'automation proposal principal does not match the authenticated Delivery owner');
|
|
436
|
+
}
|
|
437
|
+
return { principal: dispatch.principal, dispatch };
|
|
438
|
+
}
|
|
439
|
+
assertActive() {
|
|
440
|
+
if (!this.active)
|
|
441
|
+
throw new AssistantAutomationsError('disposed', 'assistant-automations service is disposed');
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
export const Config = AssistantAutomationsService.Config;
|
|
445
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/sqlite.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
export declare const automationSchemaVersion = 4;
|
|
3
|
+
export declare class AutomationDatabaseError extends Error {
|
|
4
|
+
readonly code: 'invalid-path' | 'schema-too-new';
|
|
5
|
+
constructor(code: 'invalid-path' | 'schema-too-new', message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare function openAutomationDatabase(path: string): DatabaseSync;
|
|
8
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../src/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB;gBAAvC,IAAI,EAAE,cAAc,GAAG,gBAAgB,EAAE,OAAO,EAAE,MAAM;CAI9E;AAsPD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAwBjE"}
|