@dharma-ai-labs/agent-fabric-task-runner 0.1.5 → 0.1.8
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 +16 -0
- package/dist/index.d.ts +81 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +540 -70
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +283 -4
- package/dist/index.test.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -5,6 +5,22 @@ in relay-owned Git worktrees using registered command IDs and canonical
|
|
|
5
5
|
arguments under explicit path, network, Git, budget, and Skill-pin authority.
|
|
6
6
|
It is not a general remote shell.
|
|
7
7
|
|
|
8
|
+
## Receipt-required tasks
|
|
9
|
+
|
|
10
|
+
A signed task opts into action-time authorization with
|
|
11
|
+
`requiredCapabilities: ["action_decision_receipts_v1"]` and a UUID
|
|
12
|
+
`target.endpointId`. HQ embeds exactly one task-level decision as
|
|
13
|
+
`actionDecision: { id, actionDigest, receipt, signature, keyVersion }` in the
|
|
14
|
+
signed task. `executeTask()` verifies and consumes that decision immediately
|
|
15
|
+
before provider or acceptance execution. Missing, expired, mismatched,
|
|
16
|
+
unknown-key, replayed, or non-release receipts fail closed before any effect.
|
|
17
|
+
|
|
18
|
+
The default `FileActionDecisionReplayGuard` atomically consumes each decision ID
|
|
19
|
+
once under the relay state directory. A gated task receipt includes one HQ
|
|
20
|
+
enforcement acknowledgement: `executed` after complete execution, `unknown`
|
|
21
|
+
after an indeterminate release attempt, or `contained` for a valid non-release.
|
|
22
|
+
Tasks that omit the capability retain the previous behavior and receipt shape.
|
|
23
|
+
|
|
8
24
|
- [Task execution boundary](https://github.com/dharma-ai-labs/dharma-agent-fabric/blob/main/docs/06-task-execution-and-a2a.md)
|
|
9
25
|
- [Bidirectional protocol](https://github.com/dharma-ai-labs/dharma-agent-fabric/blob/main/docs/05-bidirectional-protocol.md)
|
|
10
26
|
- [Source](https://github.com/dharma-ai-labs/dharma-agent-fabric/tree/main/packages/task-runner)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { KeyObject } from 'node:crypto';
|
|
2
|
-
import { type ProviderId } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
2
|
+
import { type ActionDecisionAcknowledgement, type ActionDecisionEnvelope, type ActionDecisionPublicKeyResolver, type ActionDecisionReceipt, type ProviderId, type TaskAction } from '@dharma-ai-labs/agent-fabric-contracts';
|
|
3
3
|
import { type OrganizationPolicy } from '@dharma-ai-labs/agent-fabric-policy';
|
|
4
4
|
import { type ProviderExecutionResult } from '@dharma-ai-labs/agent-fabric-provider-adapters';
|
|
5
5
|
export interface TaskEnvelope {
|
|
@@ -10,8 +10,11 @@ export interface TaskEnvelope {
|
|
|
10
10
|
taskType: 'external_request' | 'a2a_handoff' | 'evaluation_retest' | 'remediation_smoke';
|
|
11
11
|
target: {
|
|
12
12
|
deviceId: string;
|
|
13
|
+
endpointId?: string;
|
|
13
14
|
provider: ProviderId;
|
|
14
15
|
};
|
|
16
|
+
requiredCapabilities?: ReadonlyArray<'action_decision_receipts_v1'>;
|
|
17
|
+
actionDecision?: ActionDecisionEnvelope;
|
|
15
18
|
source?: {
|
|
16
19
|
taskId: string;
|
|
17
20
|
endpointId: string;
|
|
@@ -50,6 +53,7 @@ export interface TaskEnvelope {
|
|
|
50
53
|
}>;
|
|
51
54
|
network: string;
|
|
52
55
|
git: 'read_only' | 'task_branch' | 'merge_allowed' | 'deploy_allowed';
|
|
56
|
+
allowlistedDomains?: string[];
|
|
53
57
|
};
|
|
54
58
|
execution: {
|
|
55
59
|
isolation: 'git_worktree';
|
|
@@ -89,6 +93,7 @@ export interface TaskReceipt {
|
|
|
89
93
|
worktree: string;
|
|
90
94
|
branch: string;
|
|
91
95
|
commandResults: CommandResult[];
|
|
96
|
+
actionAcknowledgement?: ActionDecisionAcknowledgement;
|
|
92
97
|
startedAt: string;
|
|
93
98
|
completedAt: string;
|
|
94
99
|
}
|
|
@@ -99,8 +104,22 @@ export type ProviderTaskExecutor = (input: {
|
|
|
99
104
|
timeoutSeconds: number;
|
|
100
105
|
allowedCommandArgv: string[][];
|
|
101
106
|
allowWrites: boolean;
|
|
107
|
+
externalIdempotencyKey?: string;
|
|
108
|
+
actionDigest?: string;
|
|
102
109
|
signal?: AbortSignal;
|
|
103
110
|
}) => Promise<ProviderExecutionResult>;
|
|
111
|
+
export interface ActionDecisionReplayGuard {
|
|
112
|
+
consume(decisionId: string, actionDigest: string): Promise<boolean>;
|
|
113
|
+
}
|
|
114
|
+
export interface ActionDecisionReceiver {
|
|
115
|
+
resolvePublicKey: ActionDecisionPublicKeyResolver;
|
|
116
|
+
replayGuard?: ActionDecisionReplayGuard;
|
|
117
|
+
now?: () => Date;
|
|
118
|
+
}
|
|
119
|
+
export declare class ActionDecisionDeniedError extends Error {
|
|
120
|
+
readonly receipt: ActionDecisionReceipt;
|
|
121
|
+
constructor(message: string, receipt: ActionDecisionReceipt);
|
|
122
|
+
}
|
|
104
123
|
export declare function assertTaskWithinLocalPolicy(task: TaskEnvelope, policy: OrganizationPolicy): void;
|
|
105
124
|
export declare function verifyTaskEnvelope(task: TaskEnvelope, publicKey: KeyObject, now?: Date): void;
|
|
106
125
|
export declare function providerInstructionsForTask(task: TaskEnvelope): string;
|
|
@@ -110,6 +129,65 @@ export declare class FileTaskReceiptStore {
|
|
|
110
129
|
get(taskId: string): Promise<TaskReceipt | null>;
|
|
111
130
|
put(receipt: TaskReceipt): Promise<void>;
|
|
112
131
|
}
|
|
132
|
+
export type ActionExecutionJournalState = 'prepared' | 'replay_authorization_started' | 'replay_authorized' | 'executing' | 'effect_observed' | 'receipt_recorded';
|
|
133
|
+
export interface ActionExecutionJournalRecord {
|
|
134
|
+
schema: 'dharma.action-execution-journal/v1';
|
|
135
|
+
taskId: string;
|
|
136
|
+
decisionId: string;
|
|
137
|
+
endpointId: string;
|
|
138
|
+
actionDigest: string;
|
|
139
|
+
externalIdempotencyKey: string;
|
|
140
|
+
worktree: string;
|
|
141
|
+
branch: string;
|
|
142
|
+
state: ActionExecutionJournalState;
|
|
143
|
+
preparedAt: string;
|
|
144
|
+
updatedAt: string;
|
|
145
|
+
providerResultDigest?: string;
|
|
146
|
+
receipt?: TaskReceipt;
|
|
147
|
+
}
|
|
148
|
+
export interface ActionExecutionClaim {
|
|
149
|
+
schema: 'dharma.action-execution-claim/v1';
|
|
150
|
+
taskId: string;
|
|
151
|
+
decisionId: string;
|
|
152
|
+
actionDigest: string;
|
|
153
|
+
ownerId: string;
|
|
154
|
+
pid: number;
|
|
155
|
+
claimedAt: string;
|
|
156
|
+
expiresAt: string;
|
|
157
|
+
}
|
|
158
|
+
export declare class FileActionExecutionJournal {
|
|
159
|
+
private readonly directory;
|
|
160
|
+
private readonly pid;
|
|
161
|
+
private readonly now;
|
|
162
|
+
readonly ownerId: `${string}-${string}-${string}-${string}-${string}`;
|
|
163
|
+
constructor(directory: string, pid?: number, now?: () => Date);
|
|
164
|
+
private recordPath;
|
|
165
|
+
private claimPath;
|
|
166
|
+
get(taskId: string): Promise<ActionExecutionJournalRecord | null>;
|
|
167
|
+
getClaim(taskId: string): Promise<ActionExecutionClaim | null>;
|
|
168
|
+
prepare(input: Omit<ActionExecutionJournalRecord, 'schema' | 'state' | 'preparedAt' | 'updatedAt'>): Promise<{
|
|
169
|
+
record: ActionExecutionJournalRecord;
|
|
170
|
+
created: boolean;
|
|
171
|
+
}>;
|
|
172
|
+
transition(taskId: string, allowed: ActionExecutionJournalState[], state: ActionExecutionJournalState, patch?: Partial<ActionExecutionJournalRecord>): Promise<ActionExecutionJournalRecord>;
|
|
173
|
+
claim(record: ActionExecutionJournalRecord, maximumAgeMs: number): Promise<ActionExecutionClaim>;
|
|
174
|
+
isClaimOwnerAlive(claim: ActionExecutionClaim): boolean;
|
|
175
|
+
recordEffectObserved(taskId: string, providerResult: unknown): Promise<void>;
|
|
176
|
+
recordReceipt(receipt: TaskReceipt): Promise<void>;
|
|
177
|
+
selfTest(): Promise<void>;
|
|
178
|
+
}
|
|
179
|
+
export declare class FileActionDecisionReplayGuard implements ActionDecisionReplayGuard {
|
|
180
|
+
private readonly directory;
|
|
181
|
+
constructor(directory: string);
|
|
182
|
+
consume(decisionId: string, actionDigest: string): Promise<boolean>;
|
|
183
|
+
}
|
|
184
|
+
export declare function canonicalTaskActionForTask(task: TaskEnvelope, actionId: string): TaskAction;
|
|
185
|
+
export declare function authorizeEmbeddedActionDecision(input: {
|
|
186
|
+
task: TaskEnvelope;
|
|
187
|
+
receiver: ActionDecisionReceiver;
|
|
188
|
+
replayGuard: ActionDecisionReplayGuard;
|
|
189
|
+
}): Promise<ActionDecisionReceipt>;
|
|
190
|
+
export declare function verifyEmbeddedActionDecision(task: TaskEnvelope, receiver: ActionDecisionReceiver): ActionDecisionReceipt;
|
|
113
191
|
export declare function executeTask(input: {
|
|
114
192
|
task: TaskEnvelope;
|
|
115
193
|
policy: OrganizationPolicy;
|
|
@@ -119,5 +197,7 @@ export declare function executeTask(input: {
|
|
|
119
197
|
receiptStore: FileTaskReceiptStore;
|
|
120
198
|
signal?: AbortSignal;
|
|
121
199
|
providerExecutor?: ProviderTaskExecutor;
|
|
200
|
+
actionDecisions?: ActionDecisionReceiver;
|
|
201
|
+
actionExecutionJournal?: FileActionExecutionJournal;
|
|
122
202
|
}): Promise<TaskReceipt>;
|
|
123
203
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|