@lucern/sdk 0.2.0-alpha.5 → 0.2.0-alpha.7
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/.turbo/turbo-build.log +7 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +13 -0
- package/examples/README.md +69 -0
- package/examples/contradiction.ts +94 -0
- package/examples/investigation-context.ts +118 -0
- package/examples/questions-and-tasks.ts +55 -0
- package/examples/quickstart.ts +97 -0
- package/examples/shared.ts +318 -0
- package/examples/strict-public-types.ts +143 -0
- package/examples/worktree-lifecycle.ts +79 -0
- package/package.json +16 -59
- package/src/README.md +6 -0
- package/src/adminClient.ts +789 -0
- package/{dist/lib/platform/sdk/answersClient.d.ts → src/answersClient.ts} +17 -4
- package/src/audiencesClient.ts +209 -0
- package/src/auditClient.ts +50 -0
- package/src/beliefsClient.ts +319 -0
- package/src/client.ts +2647 -0
- package/src/contextClient.ts +130 -0
- package/src/contextFacade.ts +15 -0
- package/src/contextPackCompiler.ts +828 -0
- package/src/contextPackSchema.ts +251 -0
- package/src/contextTypes.ts +153 -0
- package/src/contracts/api-enums.contract.ts +202 -0
- package/src/contracts/auth-session.contract.ts +109 -0
- package/src/contracts/context-pack.contract.ts +700 -0
- package/src/contracts/contextPack.ts +1 -0
- package/src/contracts/index.ts +10 -0
- package/src/contracts/lens-filter.contract.ts +183 -0
- package/src/contracts/lens-workflow.contract.ts +162 -0
- package/src/contracts/lensFilter.ts +1 -0
- package/src/contracts/lensWorkflow.ts +1 -0
- package/src/contracts/mcp-tools.contract.ts +3636 -0
- package/src/contracts/mcpTools.ts +1 -0
- package/src/contracts/prompt.contract.ts +50 -0
- package/src/contracts/prompt.ts +1 -0
- package/src/contracts/sdk-tools.contract.ts +1457 -0
- package/src/contracts/sdkTools.ts +1 -0
- package/src/contracts/workflow-runtime.contract.ts +440 -0
- package/src/contracts/workflowRuntime.ts +1 -0
- package/src/controlObjectOwnership.ts +286 -0
- package/src/coreClient.ts +570 -0
- package/src/customTools.ts +398 -0
- package/src/decisionsClient.ts +286 -0
- package/src/domainContext.ts +15 -0
- package/src/events.ts +531 -0
- package/src/eventsCore.ts +168 -0
- package/src/facade/beliefs.ts +83 -0
- package/src/facade/context.ts +110 -0
- package/src/facade/contradictions.ts +29 -0
- package/src/facade/edges.ts +30 -0
- package/src/facade/events.ts +23 -0
- package/src/facade/evidence.ts +41 -0
- package/src/facade/graph.ts +38 -0
- package/src/facade/identity.ts +16 -0
- package/src/facade/ontologies.ts +34 -0
- package/src/facade/questions.ts +59 -0
- package/src/facade/search.ts +16 -0
- package/src/facade/tasks.ts +37 -0
- package/src/facade/topics.ts +42 -0
- package/src/facade/webhooks.ts +58 -0
- package/src/facade/worktrees.ts +51 -0
- package/src/gatewayFacades.ts +1666 -0
- package/src/graphClient.ts +529 -0
- package/src/harnessClient.ts +585 -0
- package/src/identityClient.ts +278 -0
- package/{dist/lib/platform/sdk/index.d.ts → src/index.ts} +3 -0
- package/src/learningClient.ts +95 -0
- package/src/mcpParityClient.ts +240 -0
- package/src/mcpParitySurface.ts +70 -0
- package/src/ontologyClient.ts +275 -0
- package/src/packRuntime.ts +3 -0
- package/src/packsClient.ts +260 -0
- package/src/policyClient.ts +572 -0
- package/src/promptCatalog.ts +1 -0
- package/src/realtime/index.ts +51 -0
- package/src/realtime/refs.ts +17 -0
- package/src/reportsClient.ts +99 -0
- package/src/schemaClient.ts +129 -0
- package/src/sdkSurface.ts +190 -0
- package/src/topicsClient.ts +243 -0
- package/src/types.ts +807 -0
- package/src/workflowClient.ts +826 -0
- package/tsconfig.json +9 -0
- package/dist/.generated +0 -2
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/lib/platform/auth/credentials.d.ts +0 -5
- package/dist/lib/platform/auth/credentials.js +0 -40
- package/dist/lib/platform/sdk/adminClient.d.ts +0 -404
- package/dist/lib/platform/sdk/adminClient.js +0 -384
- package/dist/lib/platform/sdk/answersClient.js +0 -21
- package/dist/lib/platform/sdk/audiencesClient.d.ts +0 -93
- package/dist/lib/platform/sdk/audiencesClient.js +0 -111
- package/dist/lib/platform/sdk/auditClient.d.ts +0 -24
- package/dist/lib/platform/sdk/auditClient.js +0 -21
- package/dist/lib/platform/sdk/beliefsClient.d.ts +0 -157
- package/dist/lib/platform/sdk/beliefsClient.js +0 -124
- package/dist/lib/platform/sdk/client.d.ts +0 -2369
- package/dist/lib/platform/sdk/client.js +0 -1831
- package/dist/lib/platform/sdk/contextClient.d.ts +0 -21
- package/dist/lib/platform/sdk/contextClient.js +0 -86
- package/dist/lib/platform/sdk/contextPackCompiler.d.ts +0 -100
- package/dist/lib/platform/sdk/contextPackCompiler.js +0 -534
- package/dist/lib/platform/sdk/contextTypes.d.ts +0 -133
- package/dist/lib/platform/sdk/contextTypes.js +0 -1
- package/dist/lib/platform/sdk/controlObjectOwnership.d.ts +0 -308
- package/dist/lib/platform/sdk/controlObjectOwnership.js +0 -220
- package/dist/lib/platform/sdk/coreClient.d.ts +0 -139
- package/dist/lib/platform/sdk/coreClient.js +0 -366
- package/dist/lib/platform/sdk/customTools.d.ts +0 -83
- package/dist/lib/platform/sdk/customTools.js +0 -247
- package/dist/lib/platform/sdk/decisionsClient.d.ts +0 -106
- package/dist/lib/platform/sdk/decisionsClient.js +0 -129
- package/dist/lib/platform/sdk/domainContext.d.ts +0 -1
- package/dist/lib/platform/sdk/domainContext.js +0 -1
- package/dist/lib/platform/sdk/events.d.ts +0 -176
- package/dist/lib/platform/sdk/events.js +0 -261
- package/dist/lib/platform/sdk/gatewayFacades.d.ts +0 -586
- package/dist/lib/platform/sdk/gatewayFacades.js +0 -845
- package/dist/lib/platform/sdk/graphClient.d.ts +0 -266
- package/dist/lib/platform/sdk/graphClient.js +0 -235
- package/dist/lib/platform/sdk/harnessClient.d.ts +0 -309
- package/dist/lib/platform/sdk/harnessClient.js +0 -219
- package/dist/lib/platform/sdk/identityClient.d.ts +0 -134
- package/dist/lib/platform/sdk/identityClient.js +0 -131
- package/dist/lib/platform/sdk/index.js +0 -46
- package/dist/lib/platform/sdk/learningClient.d.ts +0 -40
- package/dist/lib/platform/sdk/learningClient.js +0 -53
- package/dist/lib/platform/sdk/mcpParityClient.d.ts +0 -69
- package/dist/lib/platform/sdk/mcpParityClient.js +0 -196
- package/dist/lib/platform/sdk/mcpParitySurface.d.ts +0 -10
- package/dist/lib/platform/sdk/mcpParitySurface.js +0 -57
- package/dist/lib/platform/sdk/ontologyClient.d.ts +0 -131
- package/dist/lib/platform/sdk/ontologyClient.js +0 -161
- package/dist/lib/platform/sdk/packRuntime.d.ts +0 -1
- package/dist/lib/platform/sdk/packRuntime.js +0 -1
- package/dist/lib/platform/sdk/packsClient.d.ts +0 -126
- package/dist/lib/platform/sdk/packsClient.js +0 -157
- package/dist/lib/platform/sdk/policyClient.d.ts +0 -293
- package/dist/lib/platform/sdk/policyClient.js +0 -277
- package/dist/lib/platform/sdk/promptCatalog.d.ts +0 -1
- package/dist/lib/platform/sdk/promptCatalog.js +0 -1
- package/dist/lib/platform/sdk/reportsClient.d.ts +0 -34
- package/dist/lib/platform/sdk/reportsClient.js +0 -64
- package/dist/lib/platform/sdk/schemaClient.d.ts +0 -59
- package/dist/lib/platform/sdk/schemaClient.js +0 -71
- package/dist/lib/platform/sdk/sdkSurface.d.ts +0 -56
- package/dist/lib/platform/sdk/sdkSurface.js +0 -140
- package/dist/lib/platform/sdk/topicsClient.d.ts +0 -78
- package/dist/lib/platform/sdk/topicsClient.js +0 -118
- package/dist/lib/platform/sdk/types.d.ts +0 -692
- package/dist/lib/platform/sdk/types.js +0 -1
- package/dist/lib/platform/sdk/version.d.ts +0 -2
- package/dist/lib/platform/sdk/workflowClient.d.ts +0 -313
- package/dist/lib/platform/sdk/workflowClient.js +0 -366
- package/dist/lucern/contracts/src/api-enums.contract.d.ts +0 -58
- package/dist/lucern/contracts/src/api-enums.contract.js +0 -147
- package/dist/lucern/contracts/src/lens-filter.contract.d.ts +0 -70
- package/dist/lucern/contracts/src/lens-filter.contract.js +0 -95
- package/dist/lucern/contracts/src/lens-workflow.contract.d.ts +0 -84
- package/dist/lucern/contracts/src/lens-workflow.contract.js +0 -54
- package/dist/lucern/contracts/src/mcp-tools.contract.d.ts +0 -151
- package/dist/lucern/contracts/src/mcp-tools.contract.js +0 -3281
- /package/{dist/lib/platform/sdk/version.js → src/version.ts} +0 -0
|
@@ -0,0 +1,826 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createGatewayRequestClient,
|
|
3
|
+
type GatewayClientConfig,
|
|
4
|
+
LucernApiError,
|
|
5
|
+
randomIdempotencyKey,
|
|
6
|
+
toQueryString,
|
|
7
|
+
} from "./coreClient";
|
|
8
|
+
import {
|
|
9
|
+
asListItems,
|
|
10
|
+
createListResult,
|
|
11
|
+
mapAliasedList,
|
|
12
|
+
mapGatewayData,
|
|
13
|
+
normalizeTopicQuery,
|
|
14
|
+
resolveTopicId,
|
|
15
|
+
withTopicAlias,
|
|
16
|
+
} from "./sdkSurface";
|
|
17
|
+
import type {
|
|
18
|
+
LensPerspectiveType,
|
|
19
|
+
LensPromptTemplateReference,
|
|
20
|
+
LensStatus,
|
|
21
|
+
LensTaskTemplate,
|
|
22
|
+
LensWorkflowTemplate,
|
|
23
|
+
} from "./contracts/lensWorkflow";
|
|
24
|
+
import type {
|
|
25
|
+
WorkflowAutoFixPolicy,
|
|
26
|
+
WorkflowProofArtifact,
|
|
27
|
+
WorkflowStaffingHint,
|
|
28
|
+
} from "./contracts/workflowRuntime";
|
|
29
|
+
import type {
|
|
30
|
+
AddWorktreeResponse,
|
|
31
|
+
CompleteTaskResponse,
|
|
32
|
+
CreateBranchResponse,
|
|
33
|
+
CreateLensResponse,
|
|
34
|
+
CreateTaskResponse,
|
|
35
|
+
JsonObject,
|
|
36
|
+
JsonValue,
|
|
37
|
+
LensTopicBindingResponse,
|
|
38
|
+
ListBranchesResponse,
|
|
39
|
+
ListLensesResponse,
|
|
40
|
+
ListTopicsResponse,
|
|
41
|
+
ListWorktreesResponse,
|
|
42
|
+
MergeWorktreeResponse,
|
|
43
|
+
OpenPullRequestResponse,
|
|
44
|
+
PushWorktreeResponse,
|
|
45
|
+
SwitchTopicContextResponse,
|
|
46
|
+
TopicIdentifierInput,
|
|
47
|
+
UpdateTaskResponse,
|
|
48
|
+
WorkflowBranchRecord,
|
|
49
|
+
WorkflowLensRecord,
|
|
50
|
+
WorkflowTopicRecord,
|
|
51
|
+
WorkflowWorktreeRecord,
|
|
52
|
+
} from "./types";
|
|
53
|
+
|
|
54
|
+
export { LucernApiError };
|
|
55
|
+
export type { PlatformGatewaySuccess } from "./coreClient";
|
|
56
|
+
export type {
|
|
57
|
+
AddWorktreeResponse,
|
|
58
|
+
CompleteTaskResponse,
|
|
59
|
+
CreateBranchResponse,
|
|
60
|
+
CreateLensResponse,
|
|
61
|
+
CreateTaskResponse,
|
|
62
|
+
LensTopicBindingResponse,
|
|
63
|
+
ListBranchesResponse,
|
|
64
|
+
ListLensesResponse,
|
|
65
|
+
ListTopicsResponse,
|
|
66
|
+
ListWorktreesResponse,
|
|
67
|
+
MergeWorktreeResponse,
|
|
68
|
+
OpenPullRequestResponse,
|
|
69
|
+
PushWorktreeResponse,
|
|
70
|
+
SwitchTopicContextResponse,
|
|
71
|
+
UpdateTaskResponse,
|
|
72
|
+
} from "./types";
|
|
73
|
+
|
|
74
|
+
/** Configuration for the workflow client. */
|
|
75
|
+
export type WorkflowClientConfig = GatewayClientConfig;
|
|
76
|
+
|
|
77
|
+
/** Lifecycle status of a workflow branch. */
|
|
78
|
+
export type WorkflowBranchStatus = "dormant" | "active" | "archived";
|
|
79
|
+
|
|
80
|
+
/** Lifecycle status of a workflow lens. */
|
|
81
|
+
export type WorkflowLensStatus = LensStatus;
|
|
82
|
+
|
|
83
|
+
/** Analytical perspective type for a lens overlay. */
|
|
84
|
+
export type WorkflowLensPerspectiveType = LensPerspectiveType;
|
|
85
|
+
|
|
86
|
+
/** Lifecycle status of a workflow worktree. */
|
|
87
|
+
export type WorkflowWorktreeStatus =
|
|
88
|
+
| "planning"
|
|
89
|
+
| "active"
|
|
90
|
+
| "paused"
|
|
91
|
+
| "completed"
|
|
92
|
+
| "merged"
|
|
93
|
+
| "failed"
|
|
94
|
+
| "archived";
|
|
95
|
+
|
|
96
|
+
/** Possible outcomes when merging worktree findings into the main belief line. */
|
|
97
|
+
export type WorkflowMergeOutcome =
|
|
98
|
+
| "validated"
|
|
99
|
+
| "invalidated"
|
|
100
|
+
| "forked"
|
|
101
|
+
| "inconclusive";
|
|
102
|
+
|
|
103
|
+
/** Input for creating a new workflow worktree. */
|
|
104
|
+
export type AddWorktreeInput = {
|
|
105
|
+
title: string;
|
|
106
|
+
topicId?: string;
|
|
107
|
+
branchId?: string;
|
|
108
|
+
objective?: string;
|
|
109
|
+
hypothesis?: string;
|
|
110
|
+
beliefIds?: string[];
|
|
111
|
+
autoShape?: boolean;
|
|
112
|
+
domainPackId?: string;
|
|
113
|
+
executionOrder?: number;
|
|
114
|
+
dependsOn?: string[];
|
|
115
|
+
blocks?: string[];
|
|
116
|
+
gate?: string;
|
|
117
|
+
proofArtifacts?: WorkflowProofArtifact[];
|
|
118
|
+
staffingHint?: WorkflowStaffingHint | string;
|
|
119
|
+
lastReconciledAt?: number;
|
|
120
|
+
autoFixPolicy?: WorkflowAutoFixPolicy;
|
|
121
|
+
} & TopicIdentifierInput;
|
|
122
|
+
|
|
123
|
+
/** Input for merging worktree findings with belief confidence outcomes. */
|
|
124
|
+
export type MergeInput = {
|
|
125
|
+
outcomes: Array<{
|
|
126
|
+
beliefId: string;
|
|
127
|
+
confidence: number;
|
|
128
|
+
rationale: string;
|
|
129
|
+
}>;
|
|
130
|
+
summary?: string;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
/** Input for updating the beliefs and questions tracked by a worktree. */
|
|
134
|
+
export type UpdateWorktreeTargetsInput = {
|
|
135
|
+
worktreeId: string;
|
|
136
|
+
addBeliefIds?: string[];
|
|
137
|
+
addQuestionIds?: string[];
|
|
138
|
+
removeBeliefIds?: string[];
|
|
139
|
+
removeQuestionIds?: string[];
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/** Input for marking a worktree complete with recorded outcomes. */
|
|
143
|
+
export type CompleteWorktreeInput = {
|
|
144
|
+
worktreeId: string;
|
|
145
|
+
keyFindings?: string[];
|
|
146
|
+
decisionsReached?: string[];
|
|
147
|
+
nextSteps?: string[];
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
/** Input for moving a worktree forward to its next phase. */
|
|
151
|
+
export type AdvanceWorktreePhaseInput = {
|
|
152
|
+
worktreeId: string;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
/** Input for forcing a worktree into a specific phase. */
|
|
156
|
+
export type SetWorktreePhaseInput = {
|
|
157
|
+
worktreeId: string;
|
|
158
|
+
phase: string;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
/** Input for patching arbitrary structured worktree state. */
|
|
162
|
+
export type PatchWorktreeStateInput = {
|
|
163
|
+
worktreeId: string;
|
|
164
|
+
patch: JsonObject;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
/** Input for batch-creating worktrees through the workflow surface. */
|
|
168
|
+
export type BulkCreateWorktreesInput = {
|
|
169
|
+
worktrees: unknown[];
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
/** Input for listing accessible topic contexts. */
|
|
173
|
+
export type ListTopicsInput = {
|
|
174
|
+
includeShared?: boolean;
|
|
175
|
+
limit?: number;
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
/** Input for switching the active topic context by name. */
|
|
179
|
+
export type SwitchTopicContextInput = {
|
|
180
|
+
targetTopicName: string;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/** Input for creating a workflow task linked to a question or worktree. */
|
|
184
|
+
export type CreateTaskInput = {
|
|
185
|
+
title: string;
|
|
186
|
+
topicId?: string;
|
|
187
|
+
taskType?: "research" | "interview" | "analysis" | "data_collection";
|
|
188
|
+
linkedQuestionId?: string;
|
|
189
|
+
linkedWorktreeId?: string;
|
|
190
|
+
linkedBeliefId?: string;
|
|
191
|
+
description?: string;
|
|
192
|
+
priority?: "low" | "medium" | "high" | "urgent";
|
|
193
|
+
} & TopicIdentifierInput;
|
|
194
|
+
|
|
195
|
+
/** Input for marking a workflow task as completed with an output summary. */
|
|
196
|
+
export type CompleteTaskInput = {
|
|
197
|
+
outputSummary: string;
|
|
198
|
+
evidenceCreated?: boolean;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/** Input for partially updating an existing workflow task. */
|
|
202
|
+
export type UpdateTaskInput = {
|
|
203
|
+
title?: string;
|
|
204
|
+
description?: string;
|
|
205
|
+
linkedBeliefId?: string;
|
|
206
|
+
linkedQuestionId?: string;
|
|
207
|
+
linkedWorktreeId?: string;
|
|
208
|
+
priority?: "critical" | "high" | "medium" | "low";
|
|
209
|
+
status?: "todo" | "in_progress" | "blocked" | "done";
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
function normalizeLensQuery<T extends { topicId?: string }>(
|
|
213
|
+
value: T
|
|
214
|
+
) {
|
|
215
|
+
const topicId = resolveTopicId(value);
|
|
216
|
+
return {
|
|
217
|
+
...value,
|
|
218
|
+
...(topicId ? { topicId } : {}),
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Create the workflow client for lenses, legacy branches, worktrees, context,
|
|
224
|
+
* and tasks.
|
|
225
|
+
* @param config - Gateway transport configuration.
|
|
226
|
+
* @returns An object with methods to manage branches, lenses, worktrees, topics, and tasks.
|
|
227
|
+
*/
|
|
228
|
+
export function createWorkflowClient(config: WorkflowClientConfig = {}) {
|
|
229
|
+
const gateway = createGatewayRequestClient(config);
|
|
230
|
+
const client = {
|
|
231
|
+
/**
|
|
232
|
+
* List workflow branches for a topic scope.
|
|
233
|
+
*/
|
|
234
|
+
async listBranches(query: {
|
|
235
|
+
topicId?: string;
|
|
236
|
+
status?: WorkflowBranchStatus;
|
|
237
|
+
limit?: number;
|
|
238
|
+
} & TopicIdentifierInput) {
|
|
239
|
+
return gateway.request<ListBranchesResponse>({
|
|
240
|
+
path: `/api/platform/v1/workflow/branches${toQueryString(
|
|
241
|
+
normalizeTopicQuery(query)
|
|
242
|
+
)}`,
|
|
243
|
+
}).then((response) =>
|
|
244
|
+
mapGatewayData(response, (data) =>
|
|
245
|
+
mapAliasedList<WorkflowBranchRecord, "branches">(data, "branches")
|
|
246
|
+
)
|
|
247
|
+
);
|
|
248
|
+
},
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Create a workflow branch.
|
|
252
|
+
*/
|
|
253
|
+
async createBranch(
|
|
254
|
+
input: {
|
|
255
|
+
name: string;
|
|
256
|
+
topicId?: string;
|
|
257
|
+
description?: string;
|
|
258
|
+
metadata?: JsonObject;
|
|
259
|
+
} & TopicIdentifierInput,
|
|
260
|
+
idempotencyKey?: string
|
|
261
|
+
) {
|
|
262
|
+
return gateway.request<CreateBranchResponse>({
|
|
263
|
+
path: "/api/platform/v1/workflow/branches",
|
|
264
|
+
method: "POST",
|
|
265
|
+
body: normalizeTopicQuery(input),
|
|
266
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
267
|
+
}).then((response) =>
|
|
268
|
+
mapGatewayData(response, (data) =>
|
|
269
|
+
withTopicAlias(data as Record<string, unknown>) as CreateBranchResponse
|
|
270
|
+
)
|
|
271
|
+
);
|
|
272
|
+
},
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* List reusable lenses for a workspace or topic scope.
|
|
276
|
+
*/
|
|
277
|
+
async listLenses(query: {
|
|
278
|
+
workspaceId?: string;
|
|
279
|
+
topicId?: string;
|
|
280
|
+
status?: WorkflowLensStatus;
|
|
281
|
+
perspectiveType?: WorkflowLensPerspectiveType;
|
|
282
|
+
} & TopicIdentifierInput) {
|
|
283
|
+
return gateway.request<ListLensesResponse>({
|
|
284
|
+
path: `/api/platform/v1/workflow/lenses${toQueryString(
|
|
285
|
+
normalizeLensQuery(query)
|
|
286
|
+
)}`,
|
|
287
|
+
}).then((response) =>
|
|
288
|
+
mapGatewayData(response, (data) =>
|
|
289
|
+
mapAliasedList<WorkflowLensRecord, "lenses">(data, "lenses")
|
|
290
|
+
)
|
|
291
|
+
);
|
|
292
|
+
},
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Create a reusable workflow lens.
|
|
296
|
+
*/
|
|
297
|
+
async createLens(
|
|
298
|
+
input: {
|
|
299
|
+
name: string;
|
|
300
|
+
workspaceId?: string;
|
|
301
|
+
topicId?: string;
|
|
302
|
+
description?: string;
|
|
303
|
+
perspectiveType: WorkflowLensPerspectiveType;
|
|
304
|
+
promptTemplates?: LensPromptTemplateReference[];
|
|
305
|
+
workflowTemplates?: LensWorkflowTemplate[];
|
|
306
|
+
taskTemplates?: LensTaskTemplate[];
|
|
307
|
+
filterCriteria?: JsonObject;
|
|
308
|
+
} & TopicIdentifierInput,
|
|
309
|
+
idempotencyKey?: string
|
|
310
|
+
) {
|
|
311
|
+
const payload = normalizeLensQuery(input);
|
|
312
|
+
return gateway.request<CreateLensResponse>({
|
|
313
|
+
path: "/api/platform/v1/workflow/lenses",
|
|
314
|
+
method: "POST",
|
|
315
|
+
body: payload as JsonObject,
|
|
316
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
317
|
+
}).then((response) =>
|
|
318
|
+
mapGatewayData(response, (data) =>
|
|
319
|
+
withTopicAlias(data as Record<string, unknown>) as CreateLensResponse
|
|
320
|
+
)
|
|
321
|
+
);
|
|
322
|
+
},
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Apply an existing lens to a topic.
|
|
326
|
+
*/
|
|
327
|
+
async applyLensToTopic(
|
|
328
|
+
input: {
|
|
329
|
+
lensId: string;
|
|
330
|
+
topicId?: string;
|
|
331
|
+
metadata?: JsonObject;
|
|
332
|
+
} & TopicIdentifierInput,
|
|
333
|
+
idempotencyKey?: string
|
|
334
|
+
) {
|
|
335
|
+
const payload = normalizeLensQuery(input);
|
|
336
|
+
return gateway.request<LensTopicBindingResponse>({
|
|
337
|
+
path: "/api/platform/v1/workflow/lens-bindings",
|
|
338
|
+
method: "POST",
|
|
339
|
+
body: payload,
|
|
340
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
341
|
+
}).then((response) =>
|
|
342
|
+
mapGatewayData(response, (data) =>
|
|
343
|
+
withTopicAlias(data as Record<string, unknown>) as LensTopicBindingResponse
|
|
344
|
+
)
|
|
345
|
+
);
|
|
346
|
+
},
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Remove an applied lens from a topic.
|
|
350
|
+
*/
|
|
351
|
+
async removeLensFromTopic(
|
|
352
|
+
input: {
|
|
353
|
+
lensId: string;
|
|
354
|
+
topicId?: string;
|
|
355
|
+
} & TopicIdentifierInput,
|
|
356
|
+
idempotencyKey?: string
|
|
357
|
+
) {
|
|
358
|
+
const topicId = resolveTopicId(input);
|
|
359
|
+
if (!topicId) {
|
|
360
|
+
throw new LucernApiError({
|
|
361
|
+
code: "INVALID_REQUEST",
|
|
362
|
+
message: "topicId is required",
|
|
363
|
+
status: 400,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
return gateway.request<LensTopicBindingResponse>({
|
|
368
|
+
path: `/api/platform/v1/workflow/lens-bindings${toQueryString({
|
|
369
|
+
lensId: input.lensId,
|
|
370
|
+
topicId,
|
|
371
|
+
})}`,
|
|
372
|
+
method: "DELETE",
|
|
373
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
374
|
+
}).then((response) =>
|
|
375
|
+
mapGatewayData(response, (data) =>
|
|
376
|
+
withTopicAlias(data as Record<string, unknown>) as LensTopicBindingResponse
|
|
377
|
+
)
|
|
378
|
+
);
|
|
379
|
+
},
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* List worktrees for a topic scope.
|
|
383
|
+
*/
|
|
384
|
+
async listWorktrees(query: {
|
|
385
|
+
topicId?: string;
|
|
386
|
+
branchId?: string;
|
|
387
|
+
status?: WorkflowWorktreeStatus;
|
|
388
|
+
track?: string;
|
|
389
|
+
executionBand?: number;
|
|
390
|
+
limit?: number;
|
|
391
|
+
} & TopicIdentifierInput) {
|
|
392
|
+
const normalized = normalizeTopicQuery(query);
|
|
393
|
+
return gateway.request<ListWorktreesResponse>({
|
|
394
|
+
path: `/api/platform/v1/worktrees${toQueryString({
|
|
395
|
+
...normalized,
|
|
396
|
+
track: query.track,
|
|
397
|
+
executionBand: query.executionBand,
|
|
398
|
+
})}`,
|
|
399
|
+
}).then((response) =>
|
|
400
|
+
mapGatewayData(response, (data) =>
|
|
401
|
+
mapAliasedList<WorkflowWorktreeRecord, "worktrees">(
|
|
402
|
+
data,
|
|
403
|
+
"worktrees"
|
|
404
|
+
)
|
|
405
|
+
)
|
|
406
|
+
);
|
|
407
|
+
},
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* List all worktrees across accessible topics.
|
|
411
|
+
*/
|
|
412
|
+
async listAllWorktrees(query: {
|
|
413
|
+
status?: WorkflowWorktreeStatus;
|
|
414
|
+
track?: string;
|
|
415
|
+
executionBand?: number;
|
|
416
|
+
limit?: number;
|
|
417
|
+
} = {}) {
|
|
418
|
+
return gateway.request<ListWorktreesResponse>({
|
|
419
|
+
path: `/api/platform/v1/worktrees${toQueryString({
|
|
420
|
+
status: query.status,
|
|
421
|
+
track: query.track,
|
|
422
|
+
executionBand: query.executionBand,
|
|
423
|
+
limit: query.limit,
|
|
424
|
+
})}`,
|
|
425
|
+
}).then((response) =>
|
|
426
|
+
mapGatewayData(response, (data) => {
|
|
427
|
+
const record =
|
|
428
|
+
data && typeof data === "object" && !Array.isArray(data)
|
|
429
|
+
? (data as Record<string, unknown>)
|
|
430
|
+
: {};
|
|
431
|
+
const list = mapAliasedList<WorkflowWorktreeRecord, "worktrees">(
|
|
432
|
+
data,
|
|
433
|
+
"worktrees"
|
|
434
|
+
);
|
|
435
|
+
return {
|
|
436
|
+
...list,
|
|
437
|
+
...(record.tracks &&
|
|
438
|
+
typeof record.tracks === "object" &&
|
|
439
|
+
!Array.isArray(record.tracks)
|
|
440
|
+
? { tracks: record.tracks as Record<string, number> }
|
|
441
|
+
: {}),
|
|
442
|
+
...(record.bands &&
|
|
443
|
+
typeof record.bands === "object" &&
|
|
444
|
+
!Array.isArray(record.bands)
|
|
445
|
+
? { bands: record.bands as Record<string, number> }
|
|
446
|
+
: {}),
|
|
447
|
+
} as ListWorktreesResponse;
|
|
448
|
+
})
|
|
449
|
+
);
|
|
450
|
+
},
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Create a workflow worktree.
|
|
454
|
+
*/
|
|
455
|
+
async createWorktree(input: AddWorktreeInput, idempotencyKey?: string) {
|
|
456
|
+
return gateway.request<AddWorktreeResponse>({
|
|
457
|
+
path: "/api/platform/v1/worktrees",
|
|
458
|
+
method: "POST",
|
|
459
|
+
body: normalizeTopicQuery(input),
|
|
460
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
461
|
+
}).then((response) =>
|
|
462
|
+
mapGatewayData(response, (data) =>
|
|
463
|
+
withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse
|
|
464
|
+
)
|
|
465
|
+
);
|
|
466
|
+
},
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* @deprecated Use createWorktree.
|
|
470
|
+
*/
|
|
471
|
+
async addWorktree(input: AddWorktreeInput, idempotencyKey?: string) {
|
|
472
|
+
return client.createWorktree(input, idempotencyKey);
|
|
473
|
+
},
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Merge a worktree into the main belief line.
|
|
477
|
+
*/
|
|
478
|
+
async merge(
|
|
479
|
+
worktreeId: string,
|
|
480
|
+
input: MergeInput,
|
|
481
|
+
idempotencyKey?: string
|
|
482
|
+
) {
|
|
483
|
+
return gateway.request<MergeWorktreeResponse>({
|
|
484
|
+
path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/merge`,
|
|
485
|
+
method: "POST",
|
|
486
|
+
body: input,
|
|
487
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
488
|
+
});
|
|
489
|
+
},
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Activate a planning worktree.
|
|
493
|
+
*/
|
|
494
|
+
async activateWorktree(worktreeId: string, idempotencyKey?: string) {
|
|
495
|
+
return gateway.request<AddWorktreeResponse>({
|
|
496
|
+
path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/activate`,
|
|
497
|
+
method: "POST",
|
|
498
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
499
|
+
}).then((response) =>
|
|
500
|
+
mapGatewayData(response, (data) =>
|
|
501
|
+
withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse
|
|
502
|
+
)
|
|
503
|
+
);
|
|
504
|
+
},
|
|
505
|
+
|
|
506
|
+
/**
|
|
507
|
+
* Update targeted beliefs/questions for a worktree.
|
|
508
|
+
*/
|
|
509
|
+
async updateWorktreeTargets(
|
|
510
|
+
input: UpdateWorktreeTargetsInput,
|
|
511
|
+
idempotencyKey?: string
|
|
512
|
+
) {
|
|
513
|
+
const { worktreeId, ...body } = input;
|
|
514
|
+
return gateway.request<AddWorktreeResponse>({
|
|
515
|
+
path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/targets`,
|
|
516
|
+
method: "POST",
|
|
517
|
+
body,
|
|
518
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
519
|
+
}).then((response) =>
|
|
520
|
+
mapGatewayData(response, (data) =>
|
|
521
|
+
withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse
|
|
522
|
+
)
|
|
523
|
+
);
|
|
524
|
+
},
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Mark a worktree record complete.
|
|
528
|
+
*/
|
|
529
|
+
async completeWorktree(
|
|
530
|
+
input: CompleteWorktreeInput,
|
|
531
|
+
idempotencyKey?: string
|
|
532
|
+
) {
|
|
533
|
+
return gateway.request<Record<string, unknown>>({
|
|
534
|
+
path: "/api/platform/v1/worktrees/complete",
|
|
535
|
+
method: "POST",
|
|
536
|
+
body: input,
|
|
537
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
538
|
+
});
|
|
539
|
+
},
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Advance a worktree to its next lifecycle phase.
|
|
543
|
+
*/
|
|
544
|
+
async advanceWorktreePhase(
|
|
545
|
+
input: AdvanceWorktreePhaseInput,
|
|
546
|
+
idempotencyKey?: string
|
|
547
|
+
) {
|
|
548
|
+
return gateway.request<Record<string, unknown>>({
|
|
549
|
+
path: "/api/platform/v1/worktrees/advance-phase",
|
|
550
|
+
method: "POST",
|
|
551
|
+
body: input,
|
|
552
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
553
|
+
});
|
|
554
|
+
},
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* Force a worktree into a specific lifecycle phase.
|
|
558
|
+
*/
|
|
559
|
+
async setWorktreePhase(
|
|
560
|
+
input: SetWorktreePhaseInput,
|
|
561
|
+
idempotencyKey?: string
|
|
562
|
+
) {
|
|
563
|
+
return gateway.request<Record<string, unknown>>({
|
|
564
|
+
path: "/api/platform/v1/worktrees/set-phase",
|
|
565
|
+
method: "POST",
|
|
566
|
+
body: input,
|
|
567
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
568
|
+
});
|
|
569
|
+
},
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Patch opaque worktree state for orchestration flows.
|
|
573
|
+
*/
|
|
574
|
+
async patchWorktreeState(
|
|
575
|
+
input: PatchWorktreeStateInput,
|
|
576
|
+
idempotencyKey?: string
|
|
577
|
+
) {
|
|
578
|
+
return gateway.request<Record<string, unknown>>({
|
|
579
|
+
path: "/api/platform/v1/worktrees/patch-state",
|
|
580
|
+
method: "POST",
|
|
581
|
+
body: input,
|
|
582
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
583
|
+
});
|
|
584
|
+
},
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Batch create worktree records.
|
|
588
|
+
*/
|
|
589
|
+
async bulkCreateWorktrees(
|
|
590
|
+
input: BulkCreateWorktreesInput,
|
|
591
|
+
idempotencyKey?: string
|
|
592
|
+
) {
|
|
593
|
+
return gateway.request<Record<string, unknown>>({
|
|
594
|
+
path: "/api/platform/v1/worktrees/bulk",
|
|
595
|
+
method: "POST",
|
|
596
|
+
body: input as unknown as JsonObject,
|
|
597
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
598
|
+
});
|
|
599
|
+
},
|
|
600
|
+
|
|
601
|
+
/**
|
|
602
|
+
* Open a pull request for a worktree.
|
|
603
|
+
*/
|
|
604
|
+
async openPullRequest(
|
|
605
|
+
worktreeId: string,
|
|
606
|
+
input: {
|
|
607
|
+
summary: string;
|
|
608
|
+
reviewers?: string[];
|
|
609
|
+
status?:
|
|
610
|
+
| "pending_review"
|
|
611
|
+
| "changes_requested"
|
|
612
|
+
| "approved"
|
|
613
|
+
| "blocked";
|
|
614
|
+
},
|
|
615
|
+
idempotencyKey?: string
|
|
616
|
+
) {
|
|
617
|
+
return gateway.request<OpenPullRequestResponse>({
|
|
618
|
+
path: `/api/platform/v1/workflow/worktrees/${encodeURIComponent(worktreeId)}/pull-request`,
|
|
619
|
+
method: "POST",
|
|
620
|
+
body: input,
|
|
621
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
622
|
+
});
|
|
623
|
+
},
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* Push scored worktree findings into another context.
|
|
627
|
+
*/
|
|
628
|
+
async push(
|
|
629
|
+
worktreeId: string,
|
|
630
|
+
input: {
|
|
631
|
+
targetContext: string;
|
|
632
|
+
beliefIds?: string[];
|
|
633
|
+
metadata?: JsonObject;
|
|
634
|
+
},
|
|
635
|
+
idempotencyKey?: string
|
|
636
|
+
) {
|
|
637
|
+
return gateway.request<PushWorktreeResponse>({
|
|
638
|
+
path: `/api/platform/v1/workflow/worktrees/${encodeURIComponent(worktreeId)}/push`,
|
|
639
|
+
method: "POST",
|
|
640
|
+
body: input,
|
|
641
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
642
|
+
});
|
|
643
|
+
},
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* List accessible topic contexts.
|
|
647
|
+
*/
|
|
648
|
+
async listTopics(query: ListTopicsInput = {}) {
|
|
649
|
+
return gateway.request<ListTopicsResponse>({
|
|
650
|
+
path: `/api/platform/v1/workflow/topics${toQueryString({
|
|
651
|
+
includeShared:
|
|
652
|
+
typeof query.includeShared === "boolean"
|
|
653
|
+
? query.includeShared
|
|
654
|
+
? "true"
|
|
655
|
+
: "false"
|
|
656
|
+
: undefined,
|
|
657
|
+
limit: query.limit,
|
|
658
|
+
})}`,
|
|
659
|
+
}).then((response) =>
|
|
660
|
+
mapGatewayData(response, (data) => {
|
|
661
|
+
const items = asListItems<WorkflowTopicRecord>(data, "topics").map(
|
|
662
|
+
(item) =>
|
|
663
|
+
withTopicAlias(
|
|
664
|
+
item as Record<string, unknown>
|
|
665
|
+
) as WorkflowTopicRecord
|
|
666
|
+
);
|
|
667
|
+
const record =
|
|
668
|
+
data && typeof data === "object"
|
|
669
|
+
? (data as Record<string, unknown>)
|
|
670
|
+
: {};
|
|
671
|
+
return {
|
|
672
|
+
...record,
|
|
673
|
+
...createListResult(items, "topics"),
|
|
674
|
+
total:
|
|
675
|
+
typeof record.total === "number" ? record.total : items.length,
|
|
676
|
+
} as ListTopicsResponse;
|
|
677
|
+
})
|
|
678
|
+
);
|
|
679
|
+
},
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* Switch the active context by topic or project name.
|
|
683
|
+
*/
|
|
684
|
+
async switchTopicContext(
|
|
685
|
+
input: SwitchTopicContextInput,
|
|
686
|
+
idempotencyKey?: string
|
|
687
|
+
) {
|
|
688
|
+
return gateway.request<SwitchTopicContextResponse>({
|
|
689
|
+
path: "/api/platform/v1/workflow/topics/switch",
|
|
690
|
+
method: "POST",
|
|
691
|
+
body: {
|
|
692
|
+
targetTopicName: input.targetTopicName,
|
|
693
|
+
},
|
|
694
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
695
|
+
}).then((response) =>
|
|
696
|
+
mapGatewayData(response, (data) =>
|
|
697
|
+
withTopicAlias(
|
|
698
|
+
data as Record<string, unknown>
|
|
699
|
+
) as SwitchTopicContextResponse
|
|
700
|
+
)
|
|
701
|
+
);
|
|
702
|
+
},
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* Create a workflow task.
|
|
706
|
+
*/
|
|
707
|
+
async createTask(input: CreateTaskInput, idempotencyKey?: string) {
|
|
708
|
+
return gateway.request<CreateTaskResponse>({
|
|
709
|
+
path: "/api/platform/v1/workflow/tasks",
|
|
710
|
+
method: "POST",
|
|
711
|
+
body: normalizeTopicQuery(input),
|
|
712
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
713
|
+
});
|
|
714
|
+
},
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* Complete a workflow task.
|
|
718
|
+
*/
|
|
719
|
+
async completeTask(
|
|
720
|
+
taskId: string,
|
|
721
|
+
input: CompleteTaskInput,
|
|
722
|
+
idempotencyKey?: string
|
|
723
|
+
) {
|
|
724
|
+
return gateway.request<CompleteTaskResponse>({
|
|
725
|
+
path: `/api/platform/v1/workflow/tasks/${encodeURIComponent(taskId)}/complete`,
|
|
726
|
+
method: "POST",
|
|
727
|
+
body: input,
|
|
728
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
729
|
+
});
|
|
730
|
+
},
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* Update a workflow task.
|
|
734
|
+
*/
|
|
735
|
+
async updateTask(
|
|
736
|
+
taskId: string,
|
|
737
|
+
input: UpdateTaskInput,
|
|
738
|
+
idempotencyKey?: string
|
|
739
|
+
) {
|
|
740
|
+
return gateway.request<UpdateTaskResponse>({
|
|
741
|
+
path: `/api/platform/v1/workflow/tasks/${encodeURIComponent(taskId)}`,
|
|
742
|
+
method: "PATCH",
|
|
743
|
+
body: input,
|
|
744
|
+
idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),
|
|
745
|
+
});
|
|
746
|
+
},
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* @deprecated Use createBranch.
|
|
750
|
+
*/
|
|
751
|
+
async createPillar(
|
|
752
|
+
input: {
|
|
753
|
+
name: string;
|
|
754
|
+
topicId?: string;
|
|
755
|
+
description?: string;
|
|
756
|
+
metadata?: JsonObject;
|
|
757
|
+
} & TopicIdentifierInput,
|
|
758
|
+
idempotencyKey?: string
|
|
759
|
+
) {
|
|
760
|
+
return client.createBranch(input, idempotencyKey);
|
|
761
|
+
},
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* @deprecated Use addWorktree.
|
|
765
|
+
*/
|
|
766
|
+
async createSprint(
|
|
767
|
+
input: {
|
|
768
|
+
title: string;
|
|
769
|
+
topicId?: string;
|
|
770
|
+
branchId?: string;
|
|
771
|
+
hypothesis?: string;
|
|
772
|
+
beliefIds?: string[];
|
|
773
|
+
} & TopicIdentifierInput,
|
|
774
|
+
idempotencyKey?: string
|
|
775
|
+
) {
|
|
776
|
+
return client.createWorktree(input, idempotencyKey);
|
|
777
|
+
},
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* @deprecated Use merge.
|
|
781
|
+
*/
|
|
782
|
+
async completeSprint(
|
|
783
|
+
worktreeId: string,
|
|
784
|
+
input: MergeInput,
|
|
785
|
+
idempotencyKey?: string
|
|
786
|
+
) {
|
|
787
|
+
return client.merge(worktreeId, input, idempotencyKey);
|
|
788
|
+
},
|
|
789
|
+
|
|
790
|
+
/**
|
|
791
|
+
* @deprecated Use openPullRequest.
|
|
792
|
+
*/
|
|
793
|
+
async requestReview(
|
|
794
|
+
worktreeId: string,
|
|
795
|
+
input: {
|
|
796
|
+
summary: string;
|
|
797
|
+
reviewers?: string[];
|
|
798
|
+
status?:
|
|
799
|
+
| "pending_review"
|
|
800
|
+
| "changes_requested"
|
|
801
|
+
| "approved"
|
|
802
|
+
| "blocked";
|
|
803
|
+
},
|
|
804
|
+
idempotencyKey?: string
|
|
805
|
+
) {
|
|
806
|
+
return client.openPullRequest(worktreeId, input, idempotencyKey);
|
|
807
|
+
},
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* @deprecated Use push.
|
|
811
|
+
*/
|
|
812
|
+
async publishFindings(
|
|
813
|
+
worktreeId: string,
|
|
814
|
+
input: {
|
|
815
|
+
targetContext: string;
|
|
816
|
+
beliefIds?: string[];
|
|
817
|
+
metadata?: JsonObject;
|
|
818
|
+
},
|
|
819
|
+
idempotencyKey?: string
|
|
820
|
+
) {
|
|
821
|
+
return client.push(worktreeId, input, idempotencyKey);
|
|
822
|
+
},
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
return client;
|
|
826
|
+
}
|