@lucern/contracts 0.1.1-alpha.1 → 0.1.2-alpha.1
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/CHANGELOG.md +3 -0
- package/README.md +3 -0
- package/dist/agents/v1.d.ts +2 -0
- package/dist/agents/v1.js +3 -0
- package/dist/agents/v1.js.map +1 -0
- package/dist/api-enums.contract.d.ts +60 -0
- package/dist/api-enums.contract.js +160 -0
- package/dist/api-enums.contract.js.map +1 -0
- package/dist/auth-context.contract.d.ts +2 -0
- package/dist/auth-context.contract.js +48 -0
- package/dist/auth-context.contract.js.map +1 -0
- package/dist/auth-session.contract.d.ts +2 -0
- package/dist/auth-session.contract.js +48 -0
- package/dist/auth-session.contract.js.map +1 -0
- package/dist/auth.contract.d.ts +92 -0
- package/dist/auth.contract.js +48 -0
- package/dist/auth.contract.js.map +1 -0
- package/dist/beliefs/v1.d.ts +2 -0
- package/dist/beliefs/v1.js +3 -0
- package/dist/beliefs/v1.js.map +1 -0
- package/dist/context-pack.contract.d.ts +496 -0
- package/dist/context-pack.contract.js +98 -0
- package/dist/context-pack.contract.js.map +1 -0
- package/dist/convex-admin.contract.d.ts +7 -0
- package/dist/convex-admin.contract.js +3 -0
- package/dist/convex-admin.contract.js.map +1 -0
- package/dist/events-types.contract.d.ts +1 -0
- package/dist/events-types.contract.js +136 -0
- package/dist/events-types.contract.js.map +1 -0
- package/dist/events.contract.d.ts +178 -0
- package/dist/events.contract.js +136 -0
- package/dist/events.contract.js.map +1 -0
- package/dist/evidence/v1.d.ts +2 -0
- package/dist/evidence/v1.js +3 -0
- package/dist/evidence/v1.js.map +1 -0
- package/dist/gateway.contract.d.ts +79 -0
- package/dist/gateway.contract.js +12 -0
- package/dist/gateway.contract.js.map +1 -0
- package/dist/graph/v1.d.ts +2 -0
- package/dist/graph/v1.js +3 -0
- package/dist/graph/v1.js.map +1 -0
- package/dist/ids.contract.d.ts +9 -0
- package/{src/ids.contract.ts → dist/ids.contract.js} +10 -17
- package/dist/ids.contract.js.map +1 -0
- package/dist/index.d.ts +15 -2004
- package/dist/index.js +4 -105
- package/dist/index.js.map +1 -0
- package/dist/lens-filter.contract.d.ts +72 -0
- package/dist/lens-filter.contract.js +71 -0
- package/dist/lens-filter.contract.js.map +1 -0
- package/dist/lens-workflow.contract.d.ts +87 -0
- package/dist/lens-workflow.contract.js +123 -0
- package/dist/lens-workflow.contract.js.map +1 -0
- package/dist/mcp-tools.contract-D8kXcP6d.d.ts +254 -0
- package/dist/mcp-tools.contract.d.ts +1 -0
- package/dist/mcp-tools.contract.js +2986 -0
- package/dist/mcp-tools.contract.js.map +1 -0
- package/dist/ontologies/v1.d.ts +2 -0
- package/dist/ontologies/v1.js +3 -0
- package/dist/ontologies/v1.js.map +1 -0
- package/dist/ontology-matching.contract.d.ts +1 -0
- package/dist/ontology-matching.contract.js +346 -0
- package/dist/ontology-matching.contract.js.map +1 -0
- package/dist/prompt.contract.d.ts +26 -0
- package/dist/prompt.contract.js +12 -0
- package/dist/prompt.contract.js.map +1 -0
- package/dist/questions/v1.d.ts +2 -0
- package/dist/questions/v1.js +3 -0
- package/dist/questions/v1.js.map +1 -0
- package/dist/sdk-methods.contract.d.ts +362 -0
- package/dist/sdk-methods.contract.js +3 -0
- package/dist/sdk-methods.contract.js.map +1 -0
- package/dist/sdk-tools.contract-BnV0hKLp.d.ts +150 -0
- package/dist/sdk-tools.contract.d.ts +2 -0
- package/dist/sdk-tools.contract.js +4222 -0
- package/dist/sdk-tools.contract.js.map +1 -0
- package/dist/text-matching.contract.d.ts +55 -0
- package/{src/text-matching.contract.ts → dist/text-matching.contract.js} +36 -137
- package/dist/text-matching.contract.js.map +1 -0
- package/dist/topic-scope.contract.d.ts +1 -0
- package/{src/v1/topics/v1.ts → dist/topic-scope.contract.js} +13 -38
- package/dist/topic-scope.contract.js.map +1 -0
- package/dist/topics/v1.d.ts +2 -0
- package/dist/topics/v1.js +3 -0
- package/dist/topics/v1.js.map +1 -0
- package/dist/v1/agents/v1.d.ts +2 -0
- package/dist/v1/agents/v1.js +3 -0
- package/dist/v1/agents/v1.js.map +1 -0
- package/dist/v1/beliefs/v1.d.ts +2 -0
- package/dist/v1/beliefs/v1.js +3 -0
- package/dist/v1/beliefs/v1.js.map +1 -0
- package/dist/v1/evidence/v1.d.ts +2 -0
- package/dist/v1/evidence/v1.js +3 -0
- package/dist/v1/evidence/v1.js.map +1 -0
- package/dist/v1/graph/v1.d.ts +2 -0
- package/dist/v1/graph/v1.js +3 -0
- package/dist/v1/graph/v1.js.map +1 -0
- package/dist/v1/ontologies/v1.d.ts +78 -0
- package/dist/v1/ontologies/v1.js +346 -0
- package/dist/v1/ontologies/v1.js.map +1 -0
- package/dist/v1/questions/v1.d.ts +2 -0
- package/dist/v1/questions/v1.js +3 -0
- package/dist/v1/questions/v1.js.map +1 -0
- package/dist/v1/topics/v1.d.ts +21 -0
- package/dist/v1/topics/v1.js +54 -0
- package/dist/v1/topics/v1.js.map +1 -0
- package/dist/v1/worktrees/v1.d.ts +2 -0
- package/dist/v1/worktrees/v1.js +3 -0
- package/dist/v1/worktrees/v1.js.map +1 -0
- package/dist/workflow-runtime.contract.d.ts +163 -0
- package/dist/workflow-runtime.contract.js +245 -0
- package/dist/workflow-runtime.contract.js.map +1 -0
- package/dist/worktrees/v1.d.ts +2 -0
- package/dist/worktrees/v1.js +3 -0
- package/dist/worktrees/v1.js.map +1 -0
- package/package.json +23 -7
- package/src/agents/v1.ts +0 -8
- package/src/api-enums.contract.ts +0 -183
- package/src/auth-context.contract.ts +0 -9
- package/src/auth-session.contract.ts +0 -9
- package/src/auth.contract.ts +0 -162
- package/src/beliefs/v1.ts +0 -8
- package/src/context-pack.contract.ts +0 -704
- package/src/convex-admin.contract.ts +0 -14
- package/src/events-types.contract.ts +0 -9
- package/src/events.contract.ts +0 -376
- package/src/evidence/v1.ts +0 -8
- package/src/gateway.contract.ts +0 -151
- package/src/graph/v1.ts +0 -8
- package/src/index.ts +0 -30
- package/src/lens-filter.contract.ts +0 -183
- package/src/lens-workflow.contract.ts +0 -162
- package/src/mcp-tools.contract.ts +0 -3636
- package/src/ontologies/v1.ts +0 -8
- package/src/ontology-matching.contract.ts +0 -9
- package/src/prompt.contract.ts +0 -50
- package/src/questions/v1.ts +0 -8
- package/src/sdk-methods.contract.ts +0 -522
- package/src/sdk-tools.contract.ts +0 -1545
- package/src/topic-scope.contract.ts +0 -9
- package/src/topics/v1.ts +0 -8
- package/src/v1/agents/v1.ts +0 -8
- package/src/v1/beliefs/v1.ts +0 -8
- package/src/v1/evidence/v1.ts +0 -8
- package/src/v1/graph/v1.ts +0 -8
- package/src/v1/ontologies/v1.ts +0 -276
- package/src/v1/questions/v1.ts +0 -8
- package/src/v1/worktrees/v1.ts +0 -8
- package/src/workflow-runtime.contract.ts +0 -440
- package/src/worktrees/v1.ts +0 -8
- package/tsconfig.json +0 -9
|
@@ -1,440 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workflow Runtime Contract v1
|
|
3
|
-
*
|
|
4
|
-
* Canonical TypeScript contract for Lucern's graph-local workflow runtime.
|
|
5
|
-
* WF-1 defines the typed substrate for:
|
|
6
|
-
* - workflow definitions and run receipts
|
|
7
|
-
* - action mutation tiering and approval expectations
|
|
8
|
-
* - hooks over worktree/question/evidence/inbox events
|
|
9
|
-
* - output unions for domain-specific artifacts
|
|
10
|
-
* - deterministic integrity checks and operational metadata
|
|
11
|
-
*
|
|
12
|
-
* BREAKING CHANGE RULES:
|
|
13
|
-
* - Adding optional fields is NON-breaking
|
|
14
|
-
* - Removing fields or renaming enum values is BREAKING
|
|
15
|
-
* - Reclassifying a mutation tier is BREAKING
|
|
16
|
-
* - Changing canonical workflow IDs is BREAKING
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
export const WORKFLOW_RUNTIME_SCHEMA_VERSION = "1.0.0" as const;
|
|
20
|
-
|
|
21
|
-
export const WORKFLOW_MUTATION_TIERS = [
|
|
22
|
-
"read_only",
|
|
23
|
-
"low_risk_write",
|
|
24
|
-
"high_risk_write",
|
|
25
|
-
] as const;
|
|
26
|
-
export type WorkflowMutationTier = (typeof WORKFLOW_MUTATION_TIERS)[number];
|
|
27
|
-
|
|
28
|
-
export const WORKFLOW_APPROVAL_MODES = [
|
|
29
|
-
"none",
|
|
30
|
-
"audit_only",
|
|
31
|
-
"human_required",
|
|
32
|
-
"auto_approve",
|
|
33
|
-
] as const;
|
|
34
|
-
export type WorkflowApprovalMode = (typeof WORKFLOW_APPROVAL_MODES)[number];
|
|
35
|
-
|
|
36
|
-
export const DEFAULT_TIER_APPROVAL_MODE: Readonly<
|
|
37
|
-
Record<WorkflowMutationTier, WorkflowApprovalMode>
|
|
38
|
-
> = {
|
|
39
|
-
read_only: "none",
|
|
40
|
-
low_risk_write: "audit_only",
|
|
41
|
-
high_risk_write: "human_required",
|
|
42
|
-
} as const;
|
|
43
|
-
|
|
44
|
-
export const WORKFLOW_ACTION_KINDS = [
|
|
45
|
-
"context_pack",
|
|
46
|
-
"integrity_check",
|
|
47
|
-
"lucern_tool",
|
|
48
|
-
"report_compile",
|
|
49
|
-
"brief_publish",
|
|
50
|
-
"notification",
|
|
51
|
-
"custom",
|
|
52
|
-
] as const;
|
|
53
|
-
export type WorkflowActionKind = (typeof WORKFLOW_ACTION_KINDS)[number];
|
|
54
|
-
|
|
55
|
-
export const WORKFLOW_HOOK_EVENTS = [
|
|
56
|
-
"schedule.tick",
|
|
57
|
-
"worktree.activated",
|
|
58
|
-
"worktree.completed",
|
|
59
|
-
"question.created",
|
|
60
|
-
"question.answered",
|
|
61
|
-
"evidence.appended",
|
|
62
|
-
"inbox.item_created",
|
|
63
|
-
] as const;
|
|
64
|
-
export type WorkflowHookEvent = (typeof WORKFLOW_HOOK_EVENTS)[number];
|
|
65
|
-
|
|
66
|
-
export const WORKFLOW_OUTPUT_KINDS = [
|
|
67
|
-
"engineering_brief",
|
|
68
|
-
"research_memo",
|
|
69
|
-
"strategy_artifact",
|
|
70
|
-
"inbox_summary",
|
|
71
|
-
"pipeline_brief",
|
|
72
|
-
"structured_payload",
|
|
73
|
-
] as const;
|
|
74
|
-
export type WorkflowOutputKind = (typeof WORKFLOW_OUTPUT_KINDS)[number];
|
|
75
|
-
|
|
76
|
-
export const WORKFLOW_RUN_STATUSES = [
|
|
77
|
-
"queued",
|
|
78
|
-
"running",
|
|
79
|
-
"awaiting_approval",
|
|
80
|
-
"completed",
|
|
81
|
-
"failed",
|
|
82
|
-
"cancelled",
|
|
83
|
-
] as const;
|
|
84
|
-
export type WorkflowRunStatus = (typeof WORKFLOW_RUN_STATUSES)[number];
|
|
85
|
-
|
|
86
|
-
export const WORKFLOW_TRIGGER_KINDS = [
|
|
87
|
-
"manual",
|
|
88
|
-
"schedule",
|
|
89
|
-
"hook",
|
|
90
|
-
] as const;
|
|
91
|
-
export type WorkflowTriggerKind = (typeof WORKFLOW_TRIGGER_KINDS)[number];
|
|
92
|
-
|
|
93
|
-
export const WORKFLOW_PROOF_ARTIFACT_KINDS = [
|
|
94
|
-
"report",
|
|
95
|
-
"brief",
|
|
96
|
-
"artifact",
|
|
97
|
-
"dashboard",
|
|
98
|
-
"test_evidence",
|
|
99
|
-
] as const;
|
|
100
|
-
export type WorkflowProofArtifactKind =
|
|
101
|
-
(typeof WORKFLOW_PROOF_ARTIFACT_KINDS)[number];
|
|
102
|
-
|
|
103
|
-
export const WORKFLOW_STAFFING_HINTS = [
|
|
104
|
-
"solo",
|
|
105
|
-
"backend+tests",
|
|
106
|
-
"fullstack",
|
|
107
|
-
"mcp+tests",
|
|
108
|
-
] as const;
|
|
109
|
-
export type WorkflowStaffingHint = (typeof WORKFLOW_STAFFING_HINTS)[number];
|
|
110
|
-
|
|
111
|
-
export const WORKFLOW_AUTO_FIX_MODES = [
|
|
112
|
-
"disabled",
|
|
113
|
-
"dry_run",
|
|
114
|
-
"safe",
|
|
115
|
-
"aggressive",
|
|
116
|
-
] as const;
|
|
117
|
-
export type WorkflowAutoFixMode = (typeof WORKFLOW_AUTO_FIX_MODES)[number];
|
|
118
|
-
|
|
119
|
-
export const WORKFLOW_INTEGRITY_CHECKS = [
|
|
120
|
-
"null_dependency_refs",
|
|
121
|
-
"superseded_blockers",
|
|
122
|
-
"band_order_inconsistency",
|
|
123
|
-
"sparse_shaping",
|
|
124
|
-
"failed_completed_gate",
|
|
125
|
-
] as const;
|
|
126
|
-
export type WorkflowIntegrityCheckId =
|
|
127
|
-
(typeof WORKFLOW_INTEGRITY_CHECKS)[number];
|
|
128
|
-
|
|
129
|
-
export type WorkflowProofArtifact = {
|
|
130
|
-
kind: WorkflowProofArtifactKind;
|
|
131
|
-
label: string;
|
|
132
|
-
required?: boolean;
|
|
133
|
-
sourceRef?: string;
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
export type WorkflowAutoFixPolicy = {
|
|
137
|
-
mode: WorkflowAutoFixMode;
|
|
138
|
-
maxActionsPerRun?: number;
|
|
139
|
-
permittedMutationTiers?: WorkflowMutationTier[];
|
|
140
|
-
requireAuditTrail?: boolean;
|
|
141
|
-
escalationGate?: string;
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
export const DEFAULT_WORKFLOW_AUTO_FIX_POLICY: WorkflowAutoFixPolicy = {
|
|
145
|
-
mode: "disabled",
|
|
146
|
-
permittedMutationTiers: ["read_only"],
|
|
147
|
-
requireAuditTrail: true,
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
export type WorkflowApprovalPolicy = {
|
|
151
|
-
mode: WorkflowApprovalMode;
|
|
152
|
-
approvalGate?: string;
|
|
153
|
-
autoApprovePolicyKey?: string;
|
|
154
|
-
rationaleRequired?: boolean;
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
export type WorkflowOutputBase = {
|
|
158
|
-
outputId: string;
|
|
159
|
-
kind: WorkflowOutputKind;
|
|
160
|
-
title: string;
|
|
161
|
-
summary: string;
|
|
162
|
-
generatedAt?: number;
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
export type EngineeringBriefOutput = WorkflowOutputBase & {
|
|
166
|
-
kind: "engineering_brief";
|
|
167
|
-
sections: Array<{
|
|
168
|
-
heading: string;
|
|
169
|
-
body: string;
|
|
170
|
-
}>;
|
|
171
|
-
touchedPaths?: string[];
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
export type ResearchMemoOutput = WorkflowOutputBase & {
|
|
175
|
-
kind: "research_memo";
|
|
176
|
-
claims: string[];
|
|
177
|
-
evidenceRefs?: string[];
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
export type StrategyArtifactOutput = WorkflowOutputBase & {
|
|
181
|
-
kind: "strategy_artifact";
|
|
182
|
-
recommendations: string[];
|
|
183
|
-
decisionWindow?: string;
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
export type InboxSummaryOutput = WorkflowOutputBase & {
|
|
187
|
-
kind: "inbox_summary";
|
|
188
|
-
channel: "developer_portal" | "chat" | "ops";
|
|
189
|
-
inboxTitle: string;
|
|
190
|
-
inboxBody: string;
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
export type PipelineBriefOutput = WorkflowOutputBase & {
|
|
194
|
-
kind: "pipeline_brief";
|
|
195
|
-
hingeWorktreeId?: string;
|
|
196
|
-
groupedBlockers: Array<{
|
|
197
|
-
blocker: string;
|
|
198
|
-
blockedWorktreeIds: string[];
|
|
199
|
-
}>;
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
export type StructuredPayloadOutput = WorkflowOutputBase & {
|
|
203
|
-
kind: "structured_payload";
|
|
204
|
-
payload: Record<string, unknown>;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
export type WorkflowOutputContract =
|
|
208
|
-
| EngineeringBriefOutput
|
|
209
|
-
| ResearchMemoOutput
|
|
210
|
-
| StrategyArtifactOutput
|
|
211
|
-
| InboxSummaryOutput
|
|
212
|
-
| PipelineBriefOutput
|
|
213
|
-
| StructuredPayloadOutput;
|
|
214
|
-
|
|
215
|
-
export type WorkflowActionContract = {
|
|
216
|
-
actionId: string;
|
|
217
|
-
kind: WorkflowActionKind;
|
|
218
|
-
title: string;
|
|
219
|
-
description: string;
|
|
220
|
-
mutationTier: WorkflowMutationTier;
|
|
221
|
-
toolName?: string;
|
|
222
|
-
produces?: WorkflowOutputKind[];
|
|
223
|
-
idempotent?: boolean;
|
|
224
|
-
approval: WorkflowApprovalPolicy;
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
export type WorkflowHookContract = {
|
|
228
|
-
hookId: string;
|
|
229
|
-
event: WorkflowHookEvent;
|
|
230
|
-
description: string;
|
|
231
|
-
condition?: string;
|
|
232
|
-
actionIds: string[];
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
export type WorkflowTriggerContract =
|
|
236
|
-
| {
|
|
237
|
-
kind: "manual";
|
|
238
|
-
description?: string;
|
|
239
|
-
}
|
|
240
|
-
| {
|
|
241
|
-
kind: "schedule";
|
|
242
|
-
cadence: "hourly" | "daily" | "weekly";
|
|
243
|
-
timezone?: string;
|
|
244
|
-
}
|
|
245
|
-
| {
|
|
246
|
-
kind: "hook";
|
|
247
|
-
event: WorkflowHookEvent;
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
export type WorkflowDefinitionV1 = {
|
|
251
|
-
workflowId: string;
|
|
252
|
-
version: typeof WORKFLOW_RUNTIME_SCHEMA_VERSION;
|
|
253
|
-
title: string;
|
|
254
|
-
description: string;
|
|
255
|
-
trigger: WorkflowTriggerContract;
|
|
256
|
-
staffingHint?: WorkflowStaffingHint;
|
|
257
|
-
proofArtifacts?: WorkflowProofArtifact[];
|
|
258
|
-
autoFixPolicy?: WorkflowAutoFixPolicy;
|
|
259
|
-
actions: readonly WorkflowActionContract[];
|
|
260
|
-
hooks?: readonly WorkflowHookContract[];
|
|
261
|
-
outputs: readonly WorkflowOutputKind[];
|
|
262
|
-
integrityChecks?: readonly WorkflowIntegrityCheckId[];
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
export type WorkflowRunReceiptV1 = {
|
|
266
|
-
runId: string;
|
|
267
|
-
workflowId: string;
|
|
268
|
-
status: WorkflowRunStatus;
|
|
269
|
-
triggeredBy: WorkflowTriggerKind;
|
|
270
|
-
startedAt: number;
|
|
271
|
-
completedAt?: number;
|
|
272
|
-
outputKinds: WorkflowOutputKind[];
|
|
273
|
-
approvalsRequired?: number;
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
export const NIGHTLY_RECONCILIATION_WORKFLOW_ID =
|
|
277
|
-
"workflow.pipeline_reconciliation.v1" as const;
|
|
278
|
-
|
|
279
|
-
export const MORNING_BRIEF_WORKFLOW_ID =
|
|
280
|
-
"workflow.morning_brief.v1" as const;
|
|
281
|
-
|
|
282
|
-
export const CANONICAL_WORKFLOW_DEFINITIONS: readonly WorkflowDefinitionV1[] = [
|
|
283
|
-
{
|
|
284
|
-
workflowId: NIGHTLY_RECONCILIATION_WORKFLOW_ID,
|
|
285
|
-
version: WORKFLOW_RUNTIME_SCHEMA_VERSION,
|
|
286
|
-
title: "Nightly Pipeline Reconciliation",
|
|
287
|
-
description:
|
|
288
|
-
"Runs deterministic integrity checks, compiles pipeline state, and emits an operator-facing reconciliation brief.",
|
|
289
|
-
trigger: {
|
|
290
|
-
kind: "schedule",
|
|
291
|
-
cadence: "daily",
|
|
292
|
-
timezone: "America/New_York",
|
|
293
|
-
},
|
|
294
|
-
staffingHint: "backend+tests",
|
|
295
|
-
proofArtifacts: [
|
|
296
|
-
{
|
|
297
|
-
kind: "report",
|
|
298
|
-
label: "Pipeline reconciliation report",
|
|
299
|
-
required: true,
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
kind: "test_evidence",
|
|
303
|
-
label: "Integrity check receipt",
|
|
304
|
-
required: true,
|
|
305
|
-
},
|
|
306
|
-
],
|
|
307
|
-
autoFixPolicy: {
|
|
308
|
-
mode: "safe",
|
|
309
|
-
maxActionsPerRun: 5,
|
|
310
|
-
permittedMutationTiers: ["read_only", "low_risk_write"],
|
|
311
|
-
requireAuditTrail: true,
|
|
312
|
-
escalationGate: "gate:workflow-runtime-contract-live",
|
|
313
|
-
},
|
|
314
|
-
actions: [
|
|
315
|
-
{
|
|
316
|
-
actionId: "compile_context_pack",
|
|
317
|
-
kind: "context_pack",
|
|
318
|
-
title: "Compile pipeline context",
|
|
319
|
-
description: "Build the ranked context needed for deterministic checks.",
|
|
320
|
-
mutationTier: "read_only",
|
|
321
|
-
produces: ["structured_payload"],
|
|
322
|
-
idempotent: true,
|
|
323
|
-
approval: { mode: "none" },
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
actionId: "run_integrity_checks",
|
|
327
|
-
kind: "integrity_check",
|
|
328
|
-
title: "Run integrity checks",
|
|
329
|
-
description:
|
|
330
|
-
"Evaluate dependency references, blockers, execution bands, shaping coverage, and completed gates.",
|
|
331
|
-
mutationTier: "read_only",
|
|
332
|
-
produces: ["structured_payload"],
|
|
333
|
-
idempotent: true,
|
|
334
|
-
approval: { mode: "none" },
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
actionId: "record_followup_questions",
|
|
338
|
-
kind: "lucern_tool",
|
|
339
|
-
title: "Record follow-up questions",
|
|
340
|
-
description:
|
|
341
|
-
"Create or reopen operator-facing questions for integrity failures that require human review.",
|
|
342
|
-
mutationTier: "low_risk_write",
|
|
343
|
-
toolName: "create_question",
|
|
344
|
-
produces: ["pipeline_brief"],
|
|
345
|
-
approval: { mode: "audit_only", rationaleRequired: true },
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
actionId: "publish_reconciliation_brief",
|
|
349
|
-
kind: "brief_publish",
|
|
350
|
-
title: "Publish reconciliation brief",
|
|
351
|
-
description:
|
|
352
|
-
"Emit an inbox-routed brief summarizing the nightly pipeline state and grouped blockers.",
|
|
353
|
-
mutationTier: "low_risk_write",
|
|
354
|
-
produces: ["pipeline_brief", "inbox_summary"],
|
|
355
|
-
approval: { mode: "audit_only" },
|
|
356
|
-
},
|
|
357
|
-
],
|
|
358
|
-
hooks: [
|
|
359
|
-
{
|
|
360
|
-
hookId: "nightly-schedule",
|
|
361
|
-
event: "schedule.tick",
|
|
362
|
-
description: "Run once per nightly cadence.",
|
|
363
|
-
actionIds: [
|
|
364
|
-
"compile_context_pack",
|
|
365
|
-
"run_integrity_checks",
|
|
366
|
-
"record_followup_questions",
|
|
367
|
-
"publish_reconciliation_brief",
|
|
368
|
-
],
|
|
369
|
-
},
|
|
370
|
-
],
|
|
371
|
-
outputs: ["pipeline_brief", "inbox_summary", "structured_payload"],
|
|
372
|
-
integrityChecks: WORKFLOW_INTEGRITY_CHECKS,
|
|
373
|
-
},
|
|
374
|
-
{
|
|
375
|
-
workflowId: MORNING_BRIEF_WORKFLOW_ID,
|
|
376
|
-
version: WORKFLOW_RUNTIME_SCHEMA_VERSION,
|
|
377
|
-
title: "Morning Brief",
|
|
378
|
-
description:
|
|
379
|
-
"Compiles a developer-facing morning brief from graph state, overnight workflow outputs, and inbox routing preferences.",
|
|
380
|
-
trigger: {
|
|
381
|
-
kind: "schedule",
|
|
382
|
-
cadence: "daily",
|
|
383
|
-
timezone: "America/New_York",
|
|
384
|
-
},
|
|
385
|
-
staffingHint: "solo",
|
|
386
|
-
proofArtifacts: [
|
|
387
|
-
{
|
|
388
|
-
kind: "brief",
|
|
389
|
-
label: "Morning brief",
|
|
390
|
-
required: true,
|
|
391
|
-
},
|
|
392
|
-
],
|
|
393
|
-
autoFixPolicy: {
|
|
394
|
-
mode: "dry_run",
|
|
395
|
-
maxActionsPerRun: 1,
|
|
396
|
-
permittedMutationTiers: ["read_only", "low_risk_write"],
|
|
397
|
-
requireAuditTrail: true,
|
|
398
|
-
},
|
|
399
|
-
actions: [
|
|
400
|
-
{
|
|
401
|
-
actionId: "compile_brief_inputs",
|
|
402
|
-
kind: "context_pack",
|
|
403
|
-
title: "Compile brief inputs",
|
|
404
|
-
description:
|
|
405
|
-
"Read graph state, worktree state, and overnight workflow receipts.",
|
|
406
|
-
mutationTier: "read_only",
|
|
407
|
-
produces: ["structured_payload"],
|
|
408
|
-
idempotent: true,
|
|
409
|
-
approval: { mode: "none" },
|
|
410
|
-
},
|
|
411
|
-
{
|
|
412
|
-
actionId: "publish_morning_brief",
|
|
413
|
-
kind: "brief_publish",
|
|
414
|
-
title: "Publish morning brief",
|
|
415
|
-
description:
|
|
416
|
-
"Publish a typed inbox summary with prioritized worktree and question context.",
|
|
417
|
-
mutationTier: "low_risk_write",
|
|
418
|
-
produces: ["engineering_brief", "inbox_summary"],
|
|
419
|
-
approval: { mode: "audit_only" },
|
|
420
|
-
},
|
|
421
|
-
],
|
|
422
|
-
hooks: [
|
|
423
|
-
{
|
|
424
|
-
hookId: "morning-schedule",
|
|
425
|
-
event: "schedule.tick",
|
|
426
|
-
description: "Run once per morning cadence.",
|
|
427
|
-
actionIds: ["compile_brief_inputs", "publish_morning_brief"],
|
|
428
|
-
},
|
|
429
|
-
{
|
|
430
|
-
hookId: "worktree-complete-refresh",
|
|
431
|
-
event: "worktree.completed",
|
|
432
|
-
description:
|
|
433
|
-
"Refresh the queued morning brief inputs when worktree outcomes land overnight.",
|
|
434
|
-
actionIds: ["compile_brief_inputs"],
|
|
435
|
-
},
|
|
436
|
-
],
|
|
437
|
-
outputs: ["engineering_brief", "inbox_summary", "structured_payload"],
|
|
438
|
-
integrityChecks: ["sparse_shaping"],
|
|
439
|
-
},
|
|
440
|
-
] as const;
|
package/src/worktrees/v1.ts
DELETED