@burdenoff/cli-sdk 2026.628.1 → 2026.629.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.
@@ -0,0 +1,343 @@
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},h=class extends u{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},y=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var L=null;function T(r){L=r;}function C(){if(!L)throw new y("vibecontrols module helpers used before setHelpersContext was called");return L}function qt(){let r=C();if(!r.auth.isAuthenticated())throw new h(`Authentication required. Run \`${r.productName} auth login\`.`)}async function a(r,o){return qt(),C().gql.workspace.request(r,o)}async function k(r,o){return C().gql.workspaceAuthOnly.request(r,o)}function i(r){let o=r instanceof Error?r.message:String(r);throw new u(o)}function s(r,o,t){C().output.formatAndOutput(r,o,t);}function c(r){C().output.printSuccess(r);}function E(r){return C().output.formatDate(r)}function d(r,o){return C().output.truncate(r,o)}var R=`
2
+ query LabProject($id: ID!) {
3
+ labProject(id: $id) {
4
+ id workspaceId name code description field status visibility
5
+ principalInvestigatorId startDate endDate tags createdAt updatedAt
6
+ }
7
+ }
8
+ `,P=`
9
+ query LabListProjects($status: LabProjectStatus, $pagination: PaginationInput) {
10
+ labListProjects(status: $status, pagination: $pagination) {
11
+ items {
12
+ id name code field status visibility principalInvestigatorId
13
+ startDate endDate createdAt
14
+ }
15
+ pageInfo { cursor hasMore }
16
+ }
17
+ }
18
+ `,O=`
19
+ mutation LabCreateProject($input: LabCreateProjectInput!) {
20
+ labCreateProject(input: $input) {
21
+ id workspaceId name code description field status visibility
22
+ principalInvestigatorId startDate endDate tags createdAt
23
+ }
24
+ }
25
+ `,D=`
26
+ mutation LabUpdateProject($id: ID!, $input: LabUpdateProjectInput!) {
27
+ labUpdateProject(id: $id, input: $input) {
28
+ id name code description field status visibility
29
+ principalInvestigatorId startDate endDate tags updatedAt
30
+ }
31
+ }
32
+ `,S=`
33
+ mutation LabArchiveProject($id: ID!) {
34
+ labArchiveProject(id: $id)
35
+ }
36
+ `,N=`
37
+ query LabExperiment($id: ID!) {
38
+ labExperiment(id: $id) {
39
+ id workspaceId projectId title description hypothesis status
40
+ leadResearcherId protocolId variables tags createdAt updatedAt
41
+ }
42
+ }
43
+ `,_=`
44
+ query LabListExperiments(
45
+ $projectId: ID
46
+ $status: LabExperimentStatus
47
+ $pagination: PaginationInput
48
+ ) {
49
+ labListExperiments(projectId: $projectId, status: $status, pagination: $pagination) {
50
+ items {
51
+ id projectId title status hypothesis leadResearcherId protocolId
52
+ tags createdAt
53
+ }
54
+ pageInfo { cursor hasMore }
55
+ }
56
+ }
57
+ `,$=`
58
+ mutation LabCreateExperiment($input: LabCreateExperimentInput!) {
59
+ labCreateExperiment(input: $input) {
60
+ id workspaceId projectId title description hypothesis status
61
+ leadResearcherId protocolId variables tags createdAt
62
+ }
63
+ }
64
+ `,j=`
65
+ mutation LabUpdateExperiment($id: ID!, $input: LabUpdateExperimentInput!) {
66
+ labUpdateExperiment(id: $id, input: $input) {
67
+ id title description hypothesis status leadResearcherId protocolId
68
+ variables tags updatedAt
69
+ }
70
+ }
71
+ `,B=`
72
+ mutation LabTransitionExperiment($id: ID!, $status: LabExperimentStatus!) {
73
+ labTransitionExperiment(id: $id, status: $status) {
74
+ id title status updatedAt
75
+ }
76
+ }
77
+ `,q=`
78
+ query LabListRuns($experimentId: ID, $status: LabRunStatus, $pagination: PaginationInput) {
79
+ labListRuns(experimentId: $experimentId, status: $status, pagination: $pagination) {
80
+ items {
81
+ id experimentId runNumber status performedById startedAt
82
+ completedAt createdAt
83
+ }
84
+ pageInfo { cursor hasMore }
85
+ }
86
+ }
87
+ `,U=`
88
+ mutation LabStartRun($input: LabCreateRunInput!) {
89
+ labStartRun(input: $input) {
90
+ id workspaceId experimentId runNumber status parameters notes
91
+ performedById startedAt createdAt
92
+ }
93
+ }
94
+ `,M=`
95
+ mutation LabCompleteRun($id: ID!, $status: LabRunStatus!, $input: LabRecordRunResultsInput) {
96
+ labCompleteRun(id: $id, status: $status, input: $input) {
97
+ id experimentId runNumber status observations notes completedAt updatedAt
98
+ }
99
+ }
100
+ `,F=`
101
+ query LabListNotebookEntries(
102
+ $experimentId: ID
103
+ $projectId: ID
104
+ $status: LabNotebookEntryStatus
105
+ $pagination: PaginationInput
106
+ ) {
107
+ labListNotebookEntries(
108
+ experimentId: $experimentId
109
+ projectId: $projectId
110
+ status: $status
111
+ pagination: $pagination
112
+ ) {
113
+ items {
114
+ id projectId experimentId runId title status authorId signedById
115
+ signedAt witnessedById tags createdAt
116
+ }
117
+ pageInfo { cursor hasMore }
118
+ }
119
+ }
120
+ `,V=`
121
+ mutation LabCreateNotebookEntry($input: LabCreateNotebookEntryInput!) {
122
+ labCreateNotebookEntry(input: $input) {
123
+ id workspaceId projectId experimentId runId title body status
124
+ authorId tags createdAt
125
+ }
126
+ }
127
+ `,W=`
128
+ mutation LabSignNotebookEntry($id: ID!) {
129
+ labSignNotebookEntry(id: $id) {
130
+ id title status authorId signedById signedAt updatedAt
131
+ }
132
+ }
133
+ `,G=`
134
+ query LabProtocol($id: ID!) {
135
+ labProtocol(id: $id) {
136
+ id workspaceId name summary status version estimatedMinutes
137
+ materials safetyNotes authorId publishedAt tags createdAt updatedAt
138
+ steps {
139
+ id ordinal kind instruction durationMinutes isCritical
140
+ }
141
+ }
142
+ }
143
+ `,H=`
144
+ query LabListProtocols($status: LabProtocolStatus, $pagination: PaginationInput) {
145
+ labListProtocols(status: $status, pagination: $pagination) {
146
+ items {
147
+ id name summary status version estimatedMinutes authorId
148
+ publishedAt tags createdAt
149
+ }
150
+ pageInfo { cursor hasMore }
151
+ }
152
+ }
153
+ `,z=`
154
+ mutation LabCreateProtocol($input: LabCreateProtocolInput!) {
155
+ labCreateProtocol(input: $input) {
156
+ id workspaceId name summary status version estimatedMinutes
157
+ materials safetyNotes authorId tags createdAt
158
+ }
159
+ }
160
+ `,J=`
161
+ mutation LabUpdateProtocol($id: ID!, $input: LabUpdateProtocolInput!) {
162
+ labUpdateProtocol(id: $id, input: $input) {
163
+ id name summary status version estimatedMinutes materials
164
+ safetyNotes tags updatedAt
165
+ }
166
+ }
167
+ `,K=`
168
+ mutation LabPublishProtocol($id: ID!) {
169
+ labPublishProtocol(id: $id) {
170
+ id name status version publishedAt updatedAt
171
+ }
172
+ }
173
+ `,Y=`
174
+ mutation LabAddProtocolStep($input: LabAddProtocolStepInput!) {
175
+ labAddProtocolStep(input: $input) {
176
+ id protocolId ordinal kind instruction durationMinutes isCritical createdAt
177
+ }
178
+ }
179
+ `,Q=`
180
+ query LabDataset($id: ID!) {
181
+ labDataset(id: $id) {
182
+ id workspaceId name description kind status experimentId projectId
183
+ latestVersion tags createdAt updatedAt
184
+ versions {
185
+ id version sizeBytes rowCount checksum changeNote createdAt
186
+ }
187
+ }
188
+ }
189
+ `,X=`
190
+ query LabListDatasets(
191
+ $kind: LabDatasetKind
192
+ $status: LabDatasetStatus
193
+ $pagination: PaginationInput
194
+ ) {
195
+ labListDatasets(kind: $kind, status: $status, pagination: $pagination) {
196
+ items {
197
+ id name description kind status experimentId projectId
198
+ latestVersion tags createdAt
199
+ }
200
+ pageInfo { cursor hasMore }
201
+ }
202
+ }
203
+ `,Z=`
204
+ mutation LabCreateDataset($input: LabCreateDatasetInput!) {
205
+ labCreateDataset(input: $input) {
206
+ id workspaceId name description kind status experimentId projectId
207
+ latestVersion tags createdAt
208
+ }
209
+ }
210
+ `,tt=`
211
+ mutation LabAddDatasetVersion($input: LabAddDatasetVersionInput!) {
212
+ labAddDatasetVersion(input: $input) {
213
+ id datasetId version sizeBytes rowCount checksum changeNote createdAt
214
+ }
215
+ }
216
+ `,et=`
217
+ mutation LabArchiveDataset($id: ID!) {
218
+ labArchiveDataset(id: $id)
219
+ }
220
+ `,nt=`
221
+ query LabListPipelines {
222
+ labListPipelines {
223
+ id workspaceId projectId name description engine version isActive
224
+ definition tags createdAt updatedAt
225
+ }
226
+ }
227
+ `,ot=`
228
+ mutation LabCreatePipeline($input: LabCreatePipelineInput!) {
229
+ labCreatePipeline(input: $input) {
230
+ id workspaceId projectId name description engine version isActive
231
+ definition tags createdAt
232
+ }
233
+ }
234
+ `,rt=`
235
+ mutation LabRunPipeline($input: LabRunPipelineInput!) {
236
+ labRunPipeline(input: $input) {
237
+ id workspaceId pipelineId datasetId datasetVersionId status
238
+ parameters triggeredById startedAt createdAt
239
+ }
240
+ }
241
+ `,it=`
242
+ query LabListPipelineRuns(
243
+ $pipelineId: ID
244
+ $status: LabPipelineRunStatus
245
+ $pagination: PaginationInput
246
+ ) {
247
+ labListPipelineRuns(pipelineId: $pipelineId, status: $status, pagination: $pagination) {
248
+ items {
249
+ id pipelineId datasetId datasetVersionId outputDatasetId status
250
+ triggeredById startedAt finishedAt createdAt
251
+ }
252
+ pageInfo { cursor hasMore }
253
+ }
254
+ }
255
+ `,st=`
256
+ mutation LabTransitionPipelineRun(
257
+ $id: ID!
258
+ $status: LabPipelineRunStatus!
259
+ $log: String
260
+ ) {
261
+ labTransitionPipelineRun(id: $id, status: $status, log: $log) {
262
+ id pipelineId status log startedAt finishedAt updatedAt
263
+ }
264
+ }
265
+ `,at=`
266
+ query LabInventoryItem($id: ID!) {
267
+ labInventoryItem(id: $id) {
268
+ id workspaceId name category status quantity unit reorderLevel
269
+ location vendor catalogNumber lotNumber expiresAt tags createdAt updatedAt
270
+ }
271
+ }
272
+ `,ct=`
273
+ query LabListInventoryItems(
274
+ $category: LabInventoryCategory
275
+ $status: LabInventoryStatus
276
+ $pagination: PaginationInput
277
+ ) {
278
+ labListInventoryItems(category: $category, status: $status, pagination: $pagination) {
279
+ items {
280
+ id name category status quantity unit reorderLevel location
281
+ vendor expiresAt tags createdAt
282
+ }
283
+ pageInfo { cursor hasMore }
284
+ }
285
+ }
286
+ `,pt=`
287
+ mutation LabCreateInventoryItem($input: LabCreateInventoryItemInput!) {
288
+ labCreateInventoryItem(input: $input) {
289
+ id workspaceId name category status quantity unit reorderLevel
290
+ location vendor catalogNumber lotNumber expiresAt tags createdAt
291
+ }
292
+ }
293
+ `,ut=`
294
+ mutation LabAdjustInventory($id: ID!, $input: LabAdjustInventoryInput!) {
295
+ labAdjustInventory(id: $id, input: $input) {
296
+ id name category status quantity unit reorderLevel updatedAt
297
+ }
298
+ }
299
+ `,dt=`
300
+ mutation LabArchiveInventoryItem($id: ID!) {
301
+ labArchiveInventoryItem(id: $id)
302
+ }
303
+ `,mt=`
304
+ query LabInstrument($id: ID!) {
305
+ labInstrument(id: $id) {
306
+ id workspaceId name model location status requiresApproval
307
+ custodianId tags createdAt updatedAt
308
+ bookings {
309
+ id startTime endTime status purpose bookedById experimentId
310
+ }
311
+ }
312
+ }
313
+ `,lt=`
314
+ query LabListInstruments($status: LabInstrumentStatus) {
315
+ labListInstruments(status: $status) {
316
+ id name model location status requiresApproval custodianId tags createdAt
317
+ }
318
+ }
319
+ `,gt=`
320
+ mutation LabCreateInstrument($input: LabCreateInstrumentInput!) {
321
+ labCreateInstrument(input: $input) {
322
+ id workspaceId name model location status requiresApproval
323
+ custodianId tags createdAt
324
+ }
325
+ }
326
+ `,ft=`
327
+ mutation LabBookInstrument($input: LabBookInstrumentInput!) {
328
+ labBookInstrument(input: $input) {
329
+ id workspaceId instrumentId bookedById experimentId startTime
330
+ endTime status purpose createdAt
331
+ }
332
+ }
333
+ `,It=`
334
+ mutation LabCancelBooking($id: ID!) {
335
+ labCancelBooking(id: $id) {
336
+ id instrumentId status startTime endTime updatedAt
337
+ }
338
+ }
339
+ `,bt=`
340
+ query LabHealth {
341
+ labHealth
342
+ }
343
+ `;function b(r,o){try{return JSON.parse(o)}catch{throw new u(`--${r} must be valid JSON`)}}function p(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new u(`Expected an integer but got "${r}"`);return o}function A(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new u(`Expected a number but got "${r}"`);return o}function l(r){return r.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function g(r,o){return {limit:r,offset:o}}function yt(r){let o=r.command("projects").description("Labsofscience research projects");o.command("list").description("List research projects").option("--status <s>","Filter by project status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListProjects.items,{headers:["ID","Name","Code","Field","Status","Visibility"],rows:e.labListProjects.items.map(n=>[d(n.id,12),n.name,n.code??"-",n.field??"-",n.status,n.visibility])});}catch(e){i(e);}}),o.command("get").description("Get a research project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.labProject)throw new u(`Project ${t} not found`);s(e,n.labProject);}catch(n){i(n);}}),o.command("create").description("Create a research project").requiredOption("--name <name>","Project name").option("--code <code>","Project code").option("--description <s>","Description").option("--field <s>","Research field").option("--pi <id>","Principal investigator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--status <s>","PLANNING|ACTIVE|ON_HOLD|COMPLETED|ARCHIVED","PLANNING").option("--visibility <v>","PRIVATE|WORKSPACE|PUBLIC","WORKSPACE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,status:(t.status??"PLANNING").toUpperCase(),visibility:(t.visibility??"WORKSPACE").toUpperCase()};t.code&&(e.code=t.code),t.description&&(e.description=t.description),t.field&&(e.field=t.field),t.pi&&(e.principalInvestigatorId=t.pi),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=l(t.tags));let n=await a(O,{input:e});c(`Project created: ${n.labCreateProject.name}`),s(t,n.labCreateProject);}catch(e){i(e);}}),o.command("update").description("Update a research project").argument("<id>","Project ID").option("--name <name>","Project name").option("--code <code>","Project code").option("--description <s>","Description").option("--field <s>","Research field").option("--pi <id>","Principal investigator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--status <s>","Project status").option("--visibility <v>","Visibility").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.code&&(n.code=e.code),e.description!==void 0&&(n.description=e.description),e.field&&(n.field=e.field),e.pi&&(n.principalInvestigatorId=e.pi),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.status&&(n.status=e.status.toUpperCase()),e.visibility&&(n.visibility=e.visibility.toUpperCase()),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let f=await a(D,{id:t,input:n});c("Project updated"),s(e,f.labUpdateProject);}catch(n){i(n);}}),o.command("archive").description("Archive a research project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(S,{id:t});c(`Project archived: ${n.labArchiveProject}`),s(e,{archived:n.labArchiveProject});}catch(n){i(n);}});}function Ct(r){let o=r.command("experiments").description("Labsofscience experiments");o.command("list").description("List experiments").option("--project <id>","Filter by project ID").option("--status <s>","Filter by experiment status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{projectId:t.project,status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListExperiments.items,{headers:["ID","Title","Status","Project","Lead"],rows:e.labListExperiments.items.map(n=>[d(n.id,12),n.title,n.status,d(n.projectId,12),n.leadResearcherId?d(n.leadResearcherId,12):"-"])});}catch(e){i(e);}}),o.command("get").description("Get an experiment by id").argument("<id>","Experiment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(N,{id:t});if(!n.labExperiment)throw new u(`Experiment ${t} not found`);s(e,n.labExperiment);}catch(n){i(n);}}),o.command("create").description("Create an experiment").requiredOption("--project <id>","Project ID").requiredOption("--title <t>","Experiment title").option("--description <s>","Description").option("--hypothesis <s>","Hypothesis").option("--lead <id>","Lead researcher user ID").option("--protocol <id>","Protocol ID").option("--variables <json>","Variables JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title};t.description&&(e.description=t.description),t.hypothesis&&(e.hypothesis=t.hypothesis),t.lead&&(e.leadResearcherId=t.lead),t.protocol&&(e.protocolId=t.protocol),t.variables&&(e.variables=b("variables",t.variables)),t.tags&&(e.tags=l(t.tags));let n=await a($,{input:e});c(`Experiment created: ${n.labCreateExperiment.title}`),s(t,n.labCreateExperiment);}catch(e){i(e);}}),o.command("update").description("Update an experiment").argument("<id>","Experiment ID").option("--title <t>","Experiment title").option("--description <s>","Description").option("--hypothesis <s>","Hypothesis").option("--lead <id>","Lead researcher user ID").option("--protocol <id>","Protocol ID").option("--variables <json>","Variables JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.hypothesis!==void 0&&(n.hypothesis=e.hypothesis),e.lead&&(n.leadResearcherId=e.lead),e.protocol&&(n.protocolId=e.protocol),e.variables&&(n.variables=b("variables",e.variables)),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let f=await a(j,{id:t,input:n});c("Experiment updated"),s(e,f.labUpdateExperiment);}catch(n){i(n);}}),o.command("transition").description("Advance an experiment through its lifecycle").argument("<id>","Experiment ID").requiredOption("--status <s>","DESIGN|RUNNING|ANALYSIS|COMPLETE|ABANDONED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(B,{id:t,status:e.status.toUpperCase()});c(`Experiment moved to ${n.labTransitionExperiment.status}`),s(e,n.labTransitionExperiment);}catch(n){i(n);}});}function Et(r){let o=r.command("runs").description("Labsofscience reproducible experiment runs");o.command("list").description("List experiment runs").option("--experiment <id>","Filter by experiment ID").option("--status <s>","Filter by run status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{experimentId:t.experiment,status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListRuns.items,{headers:["ID","Run #","Status","Experiment","Started","Completed"],rows:e.labListRuns.items.map(n=>[d(n.id,12),String(n.runNumber),n.status,d(n.experimentId,12),E(n.startedAt),E(n.completedAt)])});}catch(e){i(e);}}),o.command("start").description("Start a new reproducible run of an experiment").requiredOption("--experiment <id>","Experiment ID").option("--notes <s>","Run notes").option("--parameters <json>","Parameters JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={experimentId:t.experiment};t.notes&&(e.notes=t.notes),t.parameters&&(e.parameters=b("parameters",t.parameters));let n=await a(U,{input:e});c(`Run #${n.labStartRun.runNumber} started`),s(t,n.labStartRun);}catch(e){i(e);}}),o.command("complete").description("Record observations and complete a run with a terminal status").argument("<id>","Run ID").requiredOption("--status <s>","SUCCEEDED|FAILED|CANCELLED").option("--notes <s>","Result notes").option("--observations <json>","Observations JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={id:t,status:e.status.toUpperCase()},f={};e.notes&&(f.notes=e.notes),e.observations&&(f.observations=b("observations",e.observations)),Object.keys(f).length&&(n.input=f);let w=await a(M,n);c(`Run #${w.labCompleteRun.runNumber} completed: ${w.labCompleteRun.status}`),s(e,w.labCompleteRun);}catch(n){i(n);}});}function ht(r){let o=r.command("notebook").description("Labsofscience electronic lab notebook (ELN)");o.command("list").description("List notebook entries").option("--experiment <id>","Filter by experiment ID").option("--project <id>","Filter by project ID").option("--status <s>","Filter by entry status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{experimentId:t.experiment,projectId:t.project,status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListNotebookEntries.items,{headers:["ID","Title","Status","Project","Author"],rows:e.labListNotebookEntries.items.map(n=>[d(n.id,12),n.title,n.status,d(n.projectId,12),d(n.authorId,12)])});}catch(e){i(e);}}),o.command("create").description("Create a notebook entry").requiredOption("--project <id>","Project ID").requiredOption("--title <t>","Entry title").option("--body <s>","Entry body").option("--experiment <id>","Experiment ID").option("--run <id>","Run ID").option("--file-ids <csv>","Comma-separated wspace-files-svc File ids").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title};t.body&&(e.body=t.body),t.experiment&&(e.experimentId=t.experiment),t.run&&(e.runId=t.run),t.fileIds&&(e.fileIds=l(t.fileIds)),t.tags&&(e.tags=l(t.tags));let n=await a(V,{input:e});c(`Notebook entry created: ${n.labCreateNotebookEntry.title}`),s(t,n.labCreateNotebookEntry);}catch(e){i(e);}}),o.command("sign").description("Sign a notebook entry (locks editable content)").argument("<id>","Entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t});c(`Notebook entry signed: ${n.labSignNotebookEntry.status}`),s(e,n.labSignNotebookEntry);}catch(n){i(n);}});}function At(r){let o=r.command("protocols").description("Labsofscience versioned protocols");o.command("list").description("List protocols").option("--status <s>","DRAFT|PUBLISHED|DEPRECATED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListProtocols.items,{headers:["ID","Name","Status","Version","Est. min"],rows:e.labListProtocols.items.map(n=>[d(n.id,12),n.name,n.status,String(n.version),n.estimatedMinutes!=null?String(n.estimatedMinutes):"-"])});}catch(e){i(e);}}),o.command("get").description("Get a protocol by id").argument("<id>","Protocol ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(G,{id:t});if(!n.labProtocol)throw new u(`Protocol ${t} not found`);s(e,n.labProtocol);}catch(n){i(n);}}),o.command("create").description("Create a protocol").requiredOption("--name <name>","Protocol name").option("--summary <s>","Summary").option("--author <id>","Author user ID").option("--estimated-minutes <n>","Estimated minutes",p).option("--materials <csv>","Comma-separated materials").option("--safety-notes <s>","Safety notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.summary&&(e.summary=t.summary),t.author&&(e.authorId=t.author),t.estimatedMinutes!==void 0&&(e.estimatedMinutes=t.estimatedMinutes),t.materials&&(e.materials=l(t.materials)),t.safetyNotes&&(e.safetyNotes=t.safetyNotes),t.tags&&(e.tags=l(t.tags));let n=await a(z,{input:e});c(`Protocol created: ${n.labCreateProtocol.name}`),s(t,n.labCreateProtocol);}catch(e){i(e);}}),o.command("update").description("Update a protocol").argument("<id>","Protocol ID").option("--name <name>","Protocol name").option("--summary <s>","Summary").option("--estimated-minutes <n>","Estimated minutes",p).option("--materials <csv>","Comma-separated materials").option("--safety-notes <s>","Safety notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.summary!==void 0&&(n.summary=e.summary),e.estimatedMinutes!==void 0&&(n.estimatedMinutes=e.estimatedMinutes),e.materials&&(n.materials=l(e.materials)),e.safetyNotes!==void 0&&(n.safetyNotes=e.safetyNotes),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let f=await a(J,{id:t,input:n});c("Protocol updated"),s(e,f.labUpdateProtocol);}catch(n){i(n);}}),o.command("publish").description("Publish a draft protocol, freezing its version").argument("<id>","Protocol ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(K,{id:t});c(`Protocol published: v${n.labPublishProtocol.version}`),s(e,n.labPublishProtocol);}catch(n){i(n);}}),o.command("add-step").description("Append a step to a protocol").requiredOption("--protocol <id>","Protocol ID").requiredOption("--instruction <s>","Step instruction").option("--kind <k>","PREPARATION|INCUBATION|MEASUREMENT|ANALYSIS|CLEANUP|SAFETY","PREPARATION").option("--ordinal <n>","Step ordinal",p).option("--duration-minutes <n>","Duration (minutes)",p).option("--critical","Mark step as critical").option("-f, --format <format>","Output format").action(async t=>{try{let e={protocolId:t.protocol,instruction:t.instruction,kind:(t.kind??"PREPARATION").toUpperCase()};t.ordinal!==void 0&&(e.ordinal=t.ordinal),t.durationMinutes!==void 0&&(e.durationMinutes=t.durationMinutes),t.critical&&(e.isCritical=!0);let n=await a(Y,{input:e});c(`Step added at ordinal ${n.labAddProtocolStep.ordinal}`),s(t,n.labAddProtocolStep);}catch(e){i(e);}});}function wt(r){let o=r.command("datasets").description("Labsofscience versioned datasets");o.command("list").description("List datasets").option("--kind <k>","RAW|PROCESSED|RESULT|REFERENCE").option("--status <s>","ACTIVE|LOCKED|ARCHIVED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(X,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListDatasets.items,{headers:["ID","Name","Kind","Status","Latest v"],rows:e.labListDatasets.items.map(n=>[d(n.id,12),n.name,n.kind,n.status,String(n.latestVersion)])});}catch(e){i(e);}}),o.command("get").description("Get a dataset by id").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Q,{id:t});if(!n.labDataset)throw new u(`Dataset ${t} not found`);s(e,n.labDataset);}catch(n){i(n);}}),o.command("create").description("Create a dataset").requiredOption("--name <name>","Dataset name").option("--description <s>","Description").option("--kind <k>","RAW|PROCESSED|RESULT|REFERENCE","RAW").option("--experiment <id>","Experiment ID").option("--project <id>","Project ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"RAW").toUpperCase()};t.description&&(e.description=t.description),t.experiment&&(e.experimentId=t.experiment),t.project&&(e.projectId=t.project),t.tags&&(e.tags=l(t.tags));let n=await a(Z,{input:e});c(`Dataset created: ${n.labCreateDataset.name}`),s(t,n.labCreateDataset);}catch(e){i(e);}}),o.command("add-version").description("Append an immutable version to a dataset").requiredOption("--dataset <id>","Dataset ID").option("--file <id>","wspace-files-svc File id holding the snapshot bytes").option("--size-bytes <s>","Size in bytes").option("--row-count <n>","Row count",p).option("--checksum <s>","Checksum").option("--change-note <s>","Change note").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset};t.file&&(e.fileId=t.file),t.sizeBytes&&(e.sizeBytes=t.sizeBytes),t.rowCount!==void 0&&(e.rowCount=t.rowCount),t.checksum&&(e.checksum=t.checksum),t.changeNote&&(e.changeNote=t.changeNote);let n=await a(tt,{input:e});c(`Dataset version added: v${n.labAddDatasetVersion.version}`),s(t,n.labAddDatasetVersion);}catch(e){i(e);}}),o.command("archive").description("Archive a dataset").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(et,{id:t});c(`Dataset archived: ${n.labArchiveDataset}`),s(e,{archived:n.labArchiveDataset});}catch(n){i(n);}});}function Lt(r){let o=r.command("pipelines").description("Labsofscience reproducible analysis pipelines");o.command("list").description("List analysis pipelines").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(nt);s(t,e.labListPipelines,{headers:["ID","Name","Engine","Version","Active"],rows:e.labListPipelines.map(n=>[d(n.id,12),n.name,n.engine,String(n.version),n.isActive?"yes":"no"])});}catch(e){i(e);}}),o.command("create").description("Create an analysis pipeline").requiredOption("--name <name>","Pipeline name").option("--description <s>","Description").option("--engine <s>","Execution engine").option("--project <id>","Project ID").option("--definition <json>","Pipeline definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.engine&&(e.engine=t.engine),t.project&&(e.projectId=t.project),t.definition&&(e.definition=b("definition",t.definition)),t.tags&&(e.tags=l(t.tags));let n=await a(ot,{input:e});c(`Pipeline created: ${n.labCreatePipeline.name}`),s(t,n.labCreatePipeline);}catch(e){i(e);}}),o.command("run").description("Queue a reproducible pipeline run over a dataset version").requiredOption("--pipeline <id>","Pipeline ID").option("--dataset <id>","Dataset ID").option("--dataset-version <id>","Dataset version ID").option("--parameters <json>","Parameters JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={pipelineId:t.pipeline};t.dataset&&(e.datasetId=t.dataset),t.datasetVersion&&(e.datasetVersionId=t.datasetVersion),t.parameters&&(e.parameters=b("parameters",t.parameters));let n=await a(rt,{input:e});c(`Pipeline run queued: ${n.labRunPipeline.status}`),s(t,n.labRunPipeline);}catch(e){i(e);}}),o.command("list-runs").description("List pipeline runs").option("--pipeline <id>","Filter by pipeline ID").option("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{pipelineId:t.pipeline,status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListPipelineRuns.items,{headers:["ID","Pipeline","Status","Started","Finished"],rows:e.labListPipelineRuns.items.map(n=>[d(n.id,12),d(n.pipelineId,12),n.status,E(n.startedAt),E(n.finishedAt)])});}catch(e){i(e);}}),o.command("transition-run").description("Advance a pipeline run through its execution lifecycle").argument("<id>","Pipeline run ID").requiredOption("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--log <s>","Execution log").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t,status:e.status.toUpperCase(),log:e.log});c(`Pipeline run moved to ${n.labTransitionPipelineRun.status}`),s(e,n.labTransitionPipelineRun);}catch(n){i(n);}});}function kt(r){let o=r.command("inventory").description("Labsofscience lab inventory (reagents, samples, consumables)");o.command("list").description("List inventory items").option("--category <c>","REAGENT|CHEMICAL|BIOLOGICAL|CONSUMABLE|EQUIPMENT_PART|SAMPLE").option("--status <s>","IN_STOCK|LOW|OUT_OF_STOCK|EXPIRED|QUARANTINED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ct,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:g(t.limit,t.offset)});s(t,e.labListInventoryItems.items,{headers:["ID","Name","Category","Status","Qty","Unit"],rows:e.labListInventoryItems.items.map(n=>[d(n.id,12),n.name,n.category,n.status,String(n.quantity),n.unit])});}catch(e){i(e);}}),o.command("get").description("Get an inventory item by id").argument("<id>","Inventory item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(at,{id:t});if(!n.labInventoryItem)throw new u(`Inventory item ${t} not found`);s(e,n.labInventoryItem);}catch(n){i(n);}}),o.command("create").description("Create an inventory item").requiredOption("--name <name>","Item name").option("--category <c>","REAGENT|CHEMICAL|BIOLOGICAL|CONSUMABLE|EQUIPMENT_PART|SAMPLE","REAGENT").option("--quantity <n>","Quantity",A).option("--unit <s>","Unit of measure").option("--reorder-level <n>","Reorder level",A).option("--location <s>","Storage location").option("--vendor <s>","Vendor").option("--catalog-number <s>","Catalog number").option("--lot-number <s>","Lot number").option("--expires-at <iso>","Expiry date (ISO)").option("--sds-file <id>","wspace-files-svc File id for the SDS").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"REAGENT").toUpperCase()};t.quantity!==void 0&&(e.quantity=t.quantity),t.unit&&(e.unit=t.unit),t.reorderLevel!==void 0&&(e.reorderLevel=t.reorderLevel),t.location&&(e.location=t.location),t.vendor&&(e.vendor=t.vendor),t.catalogNumber&&(e.catalogNumber=t.catalogNumber),t.lotNumber&&(e.lotNumber=t.lotNumber),t.expiresAt&&(e.expiresAt=t.expiresAt),t.sdsFile&&(e.sdsFileId=t.sdsFile),t.tags&&(e.tags=l(t.tags));let n=await a(pt,{input:e});c(`Inventory item created: ${n.labCreateInventoryItem.name}`),s(t,n.labCreateInventoryItem);}catch(e){i(e);}}),o.command("adjust").description("Apply a signed quantity delta and recompute stock status").argument("<id>","Inventory item ID").requiredOption("--delta <n>","Signed quantity delta (positive = restock)",A).option("--reason <s>","Reason for adjustment").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={delta:e.delta};e.reason&&(n.reason=e.reason);let f=await a(ut,{id:t,input:n});c(`Inventory adjusted: ${f.labAdjustInventory.quantity} ${f.labAdjustInventory.unit}`),s(e,f.labAdjustInventory);}catch(n){i(n);}}),o.command("archive").description("Archive an inventory item").argument("<id>","Inventory item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(dt,{id:t});c(`Inventory item archived: ${n.labArchiveInventoryItem}`),s(e,{archived:n.labArchiveInventoryItem});}catch(n){i(n);}});}function xt(r){let o=r.command("instruments").description("Labsofscience instruments & bookings");o.command("list").description("List instruments").option("--status <s>","AVAILABLE|IN_USE|MAINTENANCE|OFFLINE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(lt,{status:t.status?t.status.toUpperCase():void 0});s(t,e.labListInstruments,{headers:["ID","Name","Model","Location","Status","Approval"],rows:e.labListInstruments.map(n=>[d(n.id,12),n.name,n.model??"-",n.location??"-",n.status,n.requiresApproval?"yes":"no"])});}catch(e){i(e);}}),o.command("get").description("Get an instrument by id").argument("<id>","Instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(mt,{id:t});if(!n.labInstrument)throw new u(`Instrument ${t} not found`);s(e,n.labInstrument);}catch(n){i(n);}}),o.command("create").description("Create an instrument").requiredOption("--name <name>","Instrument name").option("--model <s>","Model").option("--location <s>","Location").option("--custodian <id>","Custodian user ID").option("--requires-approval","Bookings require approval").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.model&&(e.model=t.model),t.location&&(e.location=t.location),t.custodian&&(e.custodianId=t.custodian),t.requiresApproval&&(e.requiresApproval=!0),t.tags&&(e.tags=l(t.tags));let n=await a(gt,{input:e});c(`Instrument created: ${n.labCreateInstrument.name}`),s(t,n.labCreateInstrument);}catch(e){i(e);}}),o.command("book").description("Reserve an instrument for a time window").requiredOption("--instrument <id>","Instrument ID").requiredOption("--start <iso>","Start time (ISO)").requiredOption("--end <iso>","End time (ISO)").option("--experiment <id>","Experiment ID").option("--purpose <s>","Booking purpose").option("-f, --format <format>","Output format").action(async t=>{try{let e={instrumentId:t.instrument,startTime:t.start,endTime:t.end};t.experiment&&(e.experimentId=t.experiment),t.purpose&&(e.purpose=t.purpose);let n=await a(ft,{input:e});c(`Instrument booked: ${n.labBookInstrument.status}`),s(t,n.labBookInstrument);}catch(e){i(e);}}),o.command("cancel-booking").description("Cancel an instrument booking").argument("<id>","Booking ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(It,{id:t});c(`Booking cancelled: ${n.labCancelBooking.status}`),s(e,n.labCancelBooking);}catch(n){i(n);}});}function vt(r){r.command("health").description("Labsofscience service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await k(bt);c(t.labHealth),s(o,{health:t.labHealth});}catch(t){i(t);}});}var Ut={id:"labsofscience",version:"1.0.0",displayName:"Labsofscience",dependsOn:["auth","workspaces"],register(r,o){T(o);let t=r.command("labsofscience").description("Labsofscience science & discovery platform");yt(t),Ct(t),Et(t),ht(t),At(t),wt(t),Lt(t),kt(t),xt(t),vt(t);}},jn=Ut;module.exports=jn;
@@ -0,0 +1,7 @@
1
+ import { C as CliModule } from '../../module-DxCuik6L.cjs';
2
+ import 'commander';
3
+ import 'graphql-request';
4
+
5
+ declare const labsofscienceModule: CliModule;
6
+
7
+ export { labsofscienceModule as default };
@@ -0,0 +1,7 @@
1
+ import { C as CliModule } from '../../module-DxCuik6L.js';
2
+ import 'commander';
3
+ import 'graphql-request';
4
+
5
+ declare const labsofscienceModule: CliModule;
6
+
7
+ export { labsofscienceModule as default };