@burdenoff/cli-sdk 2026.1102.2 → 2026.1102.4
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/dist/modules/adaptercloud/index.cjs +6 -3
- package/dist/modules/adaptercloud/index.js +6 -3
- package/dist/modules/assethandler/index.cjs +22 -57
- package/dist/modules/assethandler/index.js +27 -62
- package/dist/modules/atheletebridge/index.cjs +33 -19
- package/dist/modules/atheletebridge/index.js +32 -18
- package/dist/modules/buildmyiq/index.cjs +64 -67
- package/dist/modules/buildmyiq/index.js +60 -63
- package/dist/modules/comradecircle/index.cjs +23 -15
- package/dist/modules/comradecircle/index.js +19 -11
- package/dist/modules/coolandlovely/index.cjs +27 -14
- package/dist/modules/coolandlovely/index.js +29 -16
- package/dist/modules/crewfoundry/index.cjs +63 -116
- package/dist/modules/crewfoundry/index.js +62 -115
- package/dist/modules/ecoimpacthub/index.cjs +19 -9
- package/dist/modules/ecoimpacthub/index.js +19 -9
- package/dist/modules/eventfullymanaged/index.cjs +77 -77
- package/dist/modules/eventfullymanaged/index.js +78 -78
- package/dist/modules/govcitizenhub/index.cjs +7 -4
- package/dist/modules/govcitizenhub/index.js +7 -4
- package/dist/modules/headshotmarketing/index.cjs +92 -261
- package/dist/modules/headshotmarketing/index.js +94 -263
- package/dist/modules/hookmovies/index.cjs +17 -6
- package/dist/modules/hookmovies/index.js +20 -9
- package/dist/modules/housingvista/index.cjs +31 -24
- package/dist/modules/housingvista/index.js +26 -19
- package/dist/modules/intelwatchtower/index.cjs +24 -12
- package/dist/modules/intelwatchtower/index.js +24 -12
- package/dist/modules/kadaikodi/index.cjs +56 -90
- package/dist/modules/kadaikodi/index.js +60 -94
- package/dist/modules/labsofscience/index.cjs +8 -4
- package/dist/modules/labsofscience/index.js +8 -4
- package/dist/modules/manufacturedops/index.cjs +35 -22
- package/dist/modules/manufacturedops/index.js +34 -21
- package/dist/modules/movethewheels/index.cjs +103 -231
- package/dist/modules/movethewheels/index.js +103 -231
- package/dist/modules/planmagnet/index.cjs +21 -21
- package/dist/modules/planmagnet/index.js +32 -32
- package/dist/modules/proserviceworld/index.cjs +17 -12
- package/dist/modules/proserviceworld/index.js +17 -12
- package/dist/modules/subscriberbot/index.cjs +43 -19
- package/dist/modules/subscriberbot/index.js +46 -22
- package/dist/modules/technospam/index.cjs +17 -8
- package/dist/modules/technospam/index.js +17 -8
- package/dist/modules/theculturepost/index.cjs +27 -22
- package/dist/modules/theculturepost/index.js +31 -26
- package/dist/modules/theglobalfuel/index.cjs +65 -60
- package/dist/modules/theglobalfuel/index.js +65 -60
- package/dist/modules/timecampus/index.cjs +31 -85
- package/dist/modules/timecampus/index.js +32 -86
- package/package.json +1 -1
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import {a
|
|
1
|
+
import {a,b as b$1,i,r,h as h$1,k,q as q$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var w=`
|
|
2
2
|
query KadaikodiGetServiceProvider($id: ID!) {
|
|
3
|
-
|
|
3
|
+
kadaikodiServiceProvider(id: $id) {
|
|
4
4
|
id ownerId name slug description category status location
|
|
5
5
|
serviceTypes offeringType businessHours rating totalRatings
|
|
6
6
|
averageOrderValue analyticsSnapshot createdAt updatedAt workspaceId
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
`,S=`
|
|
10
|
-
query KadaikodiListServiceProviders(
|
|
11
|
-
$filter:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
) {
|
|
15
|
-
listServiceProviders(filter: $filter, limit: $limit, offset: $offset) {
|
|
16
|
-
id name slug category status rating totalRatings averageOrderValue
|
|
17
|
-
offeringType ownerId createdAt
|
|
10
|
+
query KadaikodiListServiceProviders($filter: KadaikodiProviderFilterInput, $pagination: KadaikodiPaginationInput) {
|
|
11
|
+
kadaikodiListServiceProviders(filter: $filter, pagination: $pagination) {
|
|
12
|
+
id name slug category status rating totalRatings averageOrderValue offeringType ownerId
|
|
13
|
+
createdAt
|
|
18
14
|
}
|
|
19
15
|
}
|
|
20
16
|
`,E=`
|
|
@@ -35,65 +31,50 @@ import {a as a$1,b as b$1,i,r,h as h$1,k,q as q$1,d}from'../../chunk-O6UCQ5IT.js
|
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
33
|
`,P=`
|
|
38
|
-
query KadaikodiListProviderWorkers($providerId: String!, $
|
|
39
|
-
|
|
34
|
+
query KadaikodiListProviderWorkers($providerId: String!, $pagination: KadaikodiPaginationInput) {
|
|
35
|
+
kadaikodiListProviderWorkers(providerId: $providerId, pagination: $pagination) {
|
|
40
36
|
id providerId workerId name role status metadata workspaceId
|
|
41
37
|
}
|
|
42
38
|
}
|
|
43
|
-
`,
|
|
44
|
-
query KadaikodiListWorkerTasks(
|
|
45
|
-
$
|
|
46
|
-
$status: String
|
|
47
|
-
$limit: Int
|
|
48
|
-
$offset: Int
|
|
49
|
-
) {
|
|
50
|
-
listWorkerTasks(
|
|
51
|
-
workerRefId: $workerRefId
|
|
52
|
-
status: $status
|
|
53
|
-
limit: $limit
|
|
54
|
-
offset: $offset
|
|
55
|
-
) {
|
|
39
|
+
`,C=`
|
|
40
|
+
query KadaikodiListWorkerTasks($status: KadaikodiWorkerTaskStatus, $pagination: KadaikodiPaginationInput) {
|
|
41
|
+
kadaikodiWorkerTasks(status: $status, pagination: $pagination) {
|
|
56
42
|
id workerRefId title description type status priority orderId
|
|
57
43
|
location dueAt completedAt workspaceId
|
|
58
44
|
}
|
|
59
45
|
}
|
|
60
46
|
`,A=`
|
|
61
47
|
query KadaikodiGetOffering($id: ID!) {
|
|
62
|
-
|
|
48
|
+
kadaikodiOffering(id: $id) {
|
|
63
49
|
id providerId name slug description category kind serviceType
|
|
64
50
|
price originalPrice stock durationMinutes isAvailable tags
|
|
65
51
|
media metadata createdAt updatedAt workspaceId
|
|
66
52
|
}
|
|
67
53
|
}
|
|
68
|
-
`,
|
|
69
|
-
query KadaikodiListOfferings(
|
|
70
|
-
$kind:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
$offset: Int
|
|
74
|
-
) {
|
|
75
|
-
listOfferings(kind: $kind, providerId: $providerId, limit: $limit, offset: $offset) {
|
|
76
|
-
id providerId name slug category kind serviceType price originalPrice
|
|
77
|
-
stock isAvailable createdAt
|
|
54
|
+
`,b=`
|
|
55
|
+
query KadaikodiListOfferings($kind: KadaikodiOfferingKind, $providerId: String, $pagination: KadaikodiPaginationInput) {
|
|
56
|
+
kadaikodiListOfferings(kind: $kind, providerId: $providerId, pagination: $pagination) {
|
|
57
|
+
id providerId name slug category kind serviceType price originalPrice stock isAvailable
|
|
58
|
+
createdAt
|
|
78
59
|
}
|
|
79
60
|
}
|
|
80
61
|
`,h=`
|
|
81
62
|
mutation KadaikodiCreateOffering($input: KadaikodiCreateOfferingInput!) {
|
|
82
|
-
|
|
83
|
-
id providerId name slug description category kind serviceType
|
|
84
|
-
|
|
63
|
+
kadaikodiCreateOffering(input: $input) {
|
|
64
|
+
id providerId name slug description category kind serviceType price originalPrice stock
|
|
65
|
+
durationMinutes isAvailable tags createdAt
|
|
85
66
|
}
|
|
86
67
|
}
|
|
87
68
|
`,D=`
|
|
88
69
|
mutation KadaikodiUpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {
|
|
89
|
-
|
|
90
|
-
id providerId name slug description category kind serviceType
|
|
91
|
-
|
|
70
|
+
kadaikodiUpdateOffering(id: $id, input: $input) {
|
|
71
|
+
id providerId name slug description category kind serviceType price originalPrice stock
|
|
72
|
+
durationMinutes isAvailable tags updatedAt
|
|
92
73
|
}
|
|
93
74
|
}
|
|
94
|
-
|
|
75
|
+
`,L=`
|
|
95
76
|
query KadaikodiGetOrder($id: ID!) {
|
|
96
|
-
|
|
77
|
+
kadaikodiOrder(id: $id) {
|
|
97
78
|
id orderNumber customerId providerId status paymentStatus paymentMethod
|
|
98
79
|
fulfillmentType assignedWorkerId subtotal tax deliveryFee discount total
|
|
99
80
|
deliveryAddress notes timeline createdAt updatedAt workspaceId
|
|
@@ -103,88 +84,74 @@ import {a as a$1,b as b$1,i,r,h as h$1,k,q as q$1,d}from'../../chunk-O6UCQ5IT.js
|
|
|
103
84
|
}
|
|
104
85
|
}
|
|
105
86
|
}
|
|
106
|
-
|
|
87
|
+
`,$=`
|
|
107
88
|
query KadaikodiListOrders(
|
|
108
89
|
$customerId: String
|
|
109
90
|
$providerId: String
|
|
110
91
|
$status: KadaikodiOrderStatus
|
|
111
|
-
$
|
|
112
|
-
$offset: Int
|
|
92
|
+
$pagination: KadaikodiPaginationInput
|
|
113
93
|
) {
|
|
114
|
-
|
|
115
|
-
customerId
|
|
116
|
-
|
|
117
|
-
status: $status
|
|
118
|
-
limit: $limit
|
|
119
|
-
offset: $offset
|
|
120
|
-
) {
|
|
121
|
-
id orderNumber customerId providerId status paymentStatus
|
|
122
|
-
fulfillmentType total createdAt
|
|
94
|
+
kadaikodiListOrders(customerId: $customerId, providerId: $providerId, status: $status, pagination: $pagination) {
|
|
95
|
+
id orderNumber customerId providerId status paymentStatus fulfillmentType total
|
|
96
|
+
createdAt
|
|
123
97
|
}
|
|
124
98
|
}
|
|
125
|
-
`,
|
|
99
|
+
`,N=`
|
|
126
100
|
mutation KadaikodiPlaceOrder($input: KadaikodiPlaceOrderInput!) {
|
|
127
|
-
|
|
128
|
-
id orderNumber customerId providerId status paymentStatus
|
|
129
|
-
|
|
101
|
+
kadaikodiPlaceOrder(input: $input) {
|
|
102
|
+
id orderNumber customerId providerId status paymentStatus fulfillmentType subtotal tax
|
|
103
|
+
deliveryFee discount total createdAt
|
|
130
104
|
items { id name quantity unitPrice totalPrice }
|
|
131
105
|
}
|
|
132
106
|
}
|
|
133
107
|
`,_=`
|
|
134
108
|
mutation KadaikodiUpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {
|
|
135
|
-
|
|
109
|
+
kadaikodiUpdateOrderStatus(id: $id, status: $status) {
|
|
136
110
|
id orderNumber status paymentStatus total updatedAt
|
|
137
111
|
}
|
|
138
112
|
}
|
|
139
|
-
`,
|
|
140
|
-
query KadaikodiListReviews($providerId: String!, $
|
|
141
|
-
|
|
142
|
-
id providerId customerId orderId rating review response
|
|
143
|
-
createdAt updatedAt workspaceId
|
|
113
|
+
`,K=`
|
|
114
|
+
query KadaikodiListReviews($providerId: String!, $pagination: KadaikodiPaginationInput) {
|
|
115
|
+
kadaikodiListReviews(providerId: $providerId, pagination: $pagination) {
|
|
116
|
+
id providerId customerId orderId rating review response createdAt updatedAt workspaceId
|
|
144
117
|
}
|
|
145
118
|
}
|
|
146
|
-
`,
|
|
119
|
+
`,x=`
|
|
147
120
|
mutation KadaikodiCreateReview($input: KadaikodiCreateReviewInput!) {
|
|
148
|
-
|
|
121
|
+
kadaikodiCreateReview(input: $input) {
|
|
149
122
|
id providerId customerId orderId rating review response createdAt
|
|
150
123
|
}
|
|
151
124
|
}
|
|
152
|
-
`,
|
|
125
|
+
`,U=`
|
|
153
126
|
mutation KadaikodiRespondToReview($id: ID!, $response: String!) {
|
|
154
|
-
|
|
127
|
+
kadaikodiRespondToReview(id: $id, response: $response) {
|
|
155
128
|
id providerId customerId rating review response updatedAt
|
|
156
129
|
}
|
|
157
130
|
}
|
|
158
131
|
`,M=`
|
|
159
132
|
query KadaikodiGetInvestmentOpportunity($id: ID!) {
|
|
160
|
-
|
|
133
|
+
kadaikodiInvestmentOpportunity(id: $id) {
|
|
161
134
|
id providerId title description riskLevel status targetAmount
|
|
162
135
|
raisedAmount minimumInvestment expectedReturnsPct lockInMonths
|
|
163
136
|
businessMetrics terms expiresAt createdAt updatedAt workspaceId
|
|
164
137
|
}
|
|
165
138
|
}
|
|
166
|
-
`,
|
|
139
|
+
`,q=`
|
|
167
140
|
query KadaikodiListInvestmentOpportunities(
|
|
168
141
|
$riskLevel: KadaikodiRiskLevel
|
|
169
142
|
$status: KadaikodiInvestmentStatus
|
|
170
|
-
$
|
|
171
|
-
$offset: Int
|
|
143
|
+
$pagination: KadaikodiPaginationInput
|
|
172
144
|
) {
|
|
173
|
-
|
|
174
|
-
riskLevel
|
|
175
|
-
|
|
176
|
-
limit: $limit
|
|
177
|
-
offset: $offset
|
|
178
|
-
) {
|
|
179
|
-
id providerId title riskLevel status targetAmount raisedAmount
|
|
180
|
-
minimumInvestment expectedReturnsPct lockInMonths expiresAt createdAt
|
|
145
|
+
kadaikodiListInvestmentOpportunities(riskLevel: $riskLevel, status: $status, pagination: $pagination) {
|
|
146
|
+
id providerId title riskLevel status targetAmount raisedAmount minimumInvestment
|
|
147
|
+
expectedReturnsPct lockInMonths expiresAt createdAt
|
|
181
148
|
}
|
|
182
149
|
}
|
|
183
150
|
`,V=`
|
|
184
|
-
query KadaikodiListInvestments($
|
|
185
|
-
|
|
186
|
-
id investorId opportunityId amount currentValue realizedReturns
|
|
187
|
-
|
|
151
|
+
query KadaikodiListInvestments($pagination: KadaikodiPaginationInput) {
|
|
152
|
+
kadaikodiListInvestments(pagination: $pagination) {
|
|
153
|
+
id investorId opportunityId amount currentValue realizedReturns expectedReturnsPct
|
|
154
|
+
status investedAt maturedAt workspaceId
|
|
188
155
|
transactions { id investmentId type amount notes createdAt }
|
|
189
156
|
}
|
|
190
157
|
}
|
|
@@ -192,17 +159,16 @@ import {a as a$1,b as b$1,i,r,h as h$1,k,q as q$1,d}from'../../chunk-O6UCQ5IT.js
|
|
|
192
159
|
mutation KadaikodiCreateInvestmentOpportunity(
|
|
193
160
|
$input: KadaikodiCreateInvestmentOpportunityInput!
|
|
194
161
|
) {
|
|
195
|
-
|
|
196
|
-
id providerId title description riskLevel status targetAmount
|
|
197
|
-
|
|
198
|
-
expiresAt createdAt
|
|
162
|
+
kadaikodiCreateInvestmentOpportunity(input: $input) {
|
|
163
|
+
id providerId title description riskLevel status targetAmount raisedAmount
|
|
164
|
+
minimumInvestment expectedReturnsPct lockInMonths expiresAt createdAt
|
|
199
165
|
}
|
|
200
166
|
}
|
|
201
167
|
`,W=`
|
|
202
168
|
mutation KadaikodiInvest($input: KadaikodiInvestInput!) {
|
|
203
|
-
|
|
204
|
-
id investorId opportunityId amount currentValue realizedReturns
|
|
205
|
-
|
|
169
|
+
kadaikodiInvest(input: $input) {
|
|
170
|
+
id investorId opportunityId amount currentValue realizedReturns expectedReturnsPct
|
|
171
|
+
status investedAt
|
|
206
172
|
}
|
|
207
173
|
}
|
|
208
174
|
`,G=`
|
|
@@ -223,4 +189,4 @@ import {a as a$1,b as b$1,i,r,h as h$1,k,q as q$1,d}from'../../chunk-O6UCQ5IT.js
|
|
|
223
189
|
query KadaikodiHealth {
|
|
224
190
|
kadaikodiHealth
|
|
225
191
|
}
|
|
226
|
-
`;function c(d,r){try{return JSON.parse(r)}catch{throw new o(`--${d} must be valid JSON`)}}function a(d){let r=Number.parseInt(d,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${d}"`);return r}function g(d){let r=Number.parseFloat(d);if(Number.isNaN(r))throw new o(`Expected a number but got "${d}"`);return r}function j(d){let r$1=d.command("providers").description("Kadaikodi service providers");r$1.command("list").description("List service providers").option("--category <c>","Filter by service category").option("--status <s>","Filter by provider status").option("--query <q>","Free-text search").option("--open-only","Only providers currently open").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.category&&(e.category=t.category.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.query&&(e.query=t.query),t.openOnly&&(e.openOnly=!0);let i$1=await b$1(S,{filter:Object.keys(e).length?e:void 0,limit:t.limit,offset:t.offset});i(t,i$1.listServiceProviders,{headers:["ID","Name","Category","Status","Rating"],rows:i$1.listServiceProviders.map(u=>[r(u.id,12),u.name,u.category,u.status,`${u.rating??0} (${u.totalRatings??0})`])});}catch(e){h$1(e);}}),r$1.command("get").description("Get a service provider by id").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(w,{id:t});if(!i$1.getServiceProvider)throw new o(`Provider ${t} not found`);i(e,i$1.getServiceProvider);}catch(i){h$1(i);}}),r$1.command("create").description("Create a service provider").requiredOption("--owner <id>","Owner user ID").requiredOption("--name <name>","Provider name").requiredOption("--slug <slug>","URL slug").requiredOption("--category <c>","Service category").requiredOption("--location <json>","Location JSON (address/latitude/longitude)").option("--description <s>","Description").option("--offering-type <t>","product|service|both","both").option("--service-types <csv>","Comma-separated service types").option("--business-hours <json>","Business hours JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={ownerId:t.owner,name:t.name,slug:t.slug,category:t.category.toUpperCase(),location:c("location",t.location),offeringType:t.offeringType??"both"};t.description&&(e.description=t.description),t.serviceTypes&&(e.serviceTypes=t.serviceTypes.split(",").map(u=>u.trim())),t.businessHours&&(e.businessHours=c("business-hours",t.businessHours));let i$1=await b$1(E,{input:e});k(`Provider created: ${i$1.kadaikodiCreateServiceProvider.name}`),i(t,i$1.kadaikodiCreateServiceProvider);}catch(e){h$1(e);}}),r$1.command("update").description("Update a service provider").argument("<id>","Provider ID").option("--name <name>","Provider name").option("--description <s>","Description").option("--status <s>","Provider status").option("--location <json>","Location JSON").option("--service-types <csv>","Comma-separated service types").option("--business-hours <json>","Business hours JSON").option("--analytics-snapshot <json>","Analytics snapshot JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.name&&(i$1.name=e.name),e.description!==void 0&&(i$1.description=e.description),e.status&&(i$1.status=e.status.toUpperCase()),e.location&&(i$1.location=c("location",e.location)),e.serviceTypes&&(i$1.serviceTypes=e.serviceTypes.split(",").map(y=>y.trim())),e.businessHours&&(i$1.businessHours=c("business-hours",e.businessHours)),e.analyticsSnapshot&&(i$1.analyticsSnapshot=c("analytics-snapshot",e.analyticsSnapshot)),!Object.keys(i$1).length)throw new o("No updates specified");let u=await b$1(T,{id:t,input:i$1});k("Provider updated"),i(e,u.kadaikodiUpdateServiceProvider);}catch(i){h$1(i);}});}function z(d){d.command("workers").description("Kadaikodi provider workers").command("list").description("List workers for a provider").requiredOption("--provider <id>","Provider ID").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(P,{providerId:t.provider,limit:t.limit,offset:t.offset});i(t,e.listProviderWorkers,{headers:["ID","Name","Role","Status","Worker"],rows:e.listProviderWorkers.map(i=>[r(i.id,12),i.name,i.role,i.status,r(i.workerId,12)])});}catch(e){h$1(e);}});}function Y(d){d.command("tasks").description("Kadaikodi worker tasks").command("list").description("List tasks for a worker").requiredOption("--worker <id>","Worker ref ID").option("--status <s>","Filter by status").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(b,{workerRefId:t.worker,status:t.status,limit:t.limit,offset:t.offset});i(t,e.listWorkerTasks,{headers:["ID","Title","Type","Status","Priority","Due"],rows:e.listWorkerTasks.map(i=>[r(i.id,12),i.title,i.type,i.status,i.priority,q$1(i.dueAt)])});}catch(e){h$1(e);}});}function B(d){let r$1=d.command("offerings").description("Kadaikodi offerings (products & services)");r$1.command("list").description("List offerings").option("--kind <k>","PRODUCT|SERVICE").option("--provider <id>","Filter by provider ID").option("--limit <n>","Page size",a,100).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(C,{kind:t.kind?t.kind.toUpperCase():void 0,providerId:t.provider,limit:t.limit,offset:t.offset});i(t,e.listOfferings,{headers:["ID","Name","Kind","Category","Price","Stock"],rows:e.listOfferings.map(i=>[r(i.id,12),i.name,i.kind,i.category,String(i.price),i.stock!=null?String(i.stock):"-"])});}catch(e){h$1(e);}}),r$1.command("get").description("Get an offering by id").argument("<id>","Offering ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(A,{id:t});if(!i$1.getOffering)throw new o(`Offering ${t} not found`);i(e,i$1.getOffering);}catch(i){h$1(i);}}),r$1.command("create").description("Create an offering").requiredOption("--provider <id>","Provider ID").requiredOption("--name <name>","Offering name").requiredOption("--slug <slug>","URL slug").requiredOption("--kind <k>","PRODUCT|SERVICE").requiredOption("--category <c>","Service category").requiredOption("--price <n>","Price",g).option("--description <s>","Description").option("--original-price <n>","Original price",g).option("--service-type <s>","Service type").option("--duration-minutes <n>","Duration (minutes)",a).option("--stock <n>","Stock",a).option("--tags <csv>","Comma-separated tags").option("--media <json>","Media JSON").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,name:t.name,slug:t.slug,kind:t.kind.toUpperCase(),category:t.category.toUpperCase(),price:t.price};t.description&&(e.description=t.description),t.originalPrice!==void 0&&(e.originalPrice=t.originalPrice),t.serviceType&&(e.serviceType=t.serviceType),t.durationMinutes!==void 0&&(e.durationMinutes=t.durationMinutes),t.stock!==void 0&&(e.stock=t.stock),t.tags&&(e.tags=t.tags.split(",").map(u=>u.trim())),t.media&&(e.media=c("media",t.media)),t.metadata&&(e.metadata=c("metadata",t.metadata));let i$1=await b$1(h,{input:e});k(`Offering created: ${i$1.createOffering.name}`),i(t,i$1.createOffering);}catch(e){h$1(e);}}),r$1.command("update").description("Update an offering").argument("<id>","Offering ID").option("--name <name>","Offering name").option("--description <s>","Description").option("--price <n>","Price",g).option("--original-price <n>","Original price",g).option("--service-type <s>","Service type").option("--duration-minutes <n>","Duration (minutes)",a).option("--stock <n>","Stock",a).option("--available <bool>","true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("--media <json>","Media JSON").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.name&&(i$1.name=e.name),e.description!==void 0&&(i$1.description=e.description),e.price!==void 0&&(i$1.price=e.price),e.originalPrice!==void 0&&(i$1.originalPrice=e.originalPrice),e.serviceType&&(i$1.serviceType=e.serviceType),e.durationMinutes!==void 0&&(i$1.durationMinutes=e.durationMinutes),e.stock!==void 0&&(i$1.stock=e.stock),e.available!==void 0&&(i$1.isAvailable=e.available),e.tags&&(i$1.tags=e.tags.split(",").map(y=>y.trim())),e.media&&(i$1.media=c("media",e.media)),e.metadata&&(i$1.metadata=c("metadata",e.metadata)),!Object.keys(i$1).length)throw new o("No updates specified");let u=await b$1(D,{id:t,input:i$1});k("Offering updated"),i(e,u.updateOffering);}catch(i){h$1(i);}});}function Q(d){let r$1=d.command("orders").description("Kadaikodi orders");r$1.command("list").description("List orders").option("--customer <id>","Filter by customer ID").option("--provider <id>","Filter by provider ID").option("--status <s>","Filter by order status").option("--limit <n>","Page size",a,100).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(N,{customerId:t.customer,providerId:t.provider,status:t.status?t.status.toUpperCase():void 0,limit:t.limit,offset:t.offset});i(t,e.listOrders,{headers:["ID","Order #","Status","Payment","Fulfillment","Total"],rows:e.listOrders.map(i=>[r(i.id,12),i.orderNumber,i.status,i.paymentStatus,i.fulfillmentType,String(i.total)])});}catch(e){h$1(e);}}),r$1.command("get").description("Get an order by id").argument("<id>","Order ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1($,{id:t});if(!i$1.getOrder)throw new o(`Order ${t} not found`);i(e,i$1.getOrder);}catch(i){h$1(i);}}),r$1.command("place").description("Place an order").requiredOption("--customer <id>","Customer ID").requiredOption("--provider <id>","Provider ID").requiredOption("--fulfillment-type <t>","Fulfillment type (e.g. delivery, pickup)").requiredOption("--items <json>","Order items JSON array: [{ name, quantity, unitPrice, offeringId?, customizations? }]").option("--tax <n>","Tax",g).option("--delivery-fee <n>","Delivery fee",g).option("--discount <n>","Discount",g).option("--payment-method <m>","Payment method").option("--delivery-address <json>","Delivery address JSON").option("--notes <s>","Order notes").option("-f, --format <format>","Output format").action(async t=>{try{let e=c("items",t.items);if(!Array.isArray(e)||e.length===0)throw new o("--items must be a non-empty JSON array");let i$1={customerId:t.customer,providerId:t.provider,fulfillmentType:t.fulfillmentType,items:e};t.tax!==void 0&&(i$1.tax=t.tax),t.deliveryFee!==void 0&&(i$1.deliveryFee=t.deliveryFee),t.discount!==void 0&&(i$1.discount=t.discount),t.paymentMethod&&(i$1.paymentMethod=t.paymentMethod),t.deliveryAddress&&(i$1.deliveryAddress=c("delivery-address",t.deliveryAddress)),t.notes&&(i$1.notes=t.notes);let u=await b$1(L,{input:i$1});k(`Order placed: ${u.placeOrder.orderNumber}`),i(t,u.placeOrder);}catch(e){h$1(e);}}),r$1.command("set-status").description("Update an order status").argument("<id>","Order ID").requiredOption("--status <s>","PLACED|PENDING|CONFIRMED|PREPARING|READY|OUT_FOR_DELIVERY|DELIVERED|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(_,{id:t,status:e.status.toUpperCase()});k(`Order status set to ${i$1.updateOrderStatus.status}`),i(e,i$1.updateOrderStatus);}catch(i){h$1(i);}});}function X(d){let r$1=d.command("reviews").description("Kadaikodi reviews");r$1.command("list").description("List reviews for a provider").requiredOption("--provider <id>","Provider ID").option("--limit <n>","Page size",a,100).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(x,{providerId:t.provider,limit:t.limit,offset:t.offset});i(t,e.listReviews,{headers:["ID","Customer","Rating","Review","Responded"],rows:e.listReviews.map(i=>[r(i.id,12),r(i.customerId,12),String(i.rating),r(i.review??"-",30),i.response?"yes":"no"])});}catch(e){h$1(e);}}),r$1.command("create").description("Create a review").requiredOption("--provider <id>","Provider ID").requiredOption("--customer <id>","Customer ID").requiredOption("--rating <n>","Rating (1-5)",a).option("--order <id>","Order ID").option("--review <text>","Review text").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,customerId:t.customer,rating:t.rating};t.order&&(e.orderId=t.order),t.review&&(e.review=t.review);let i$1=await b$1(K,{input:e});k("Review created"),i(t,i$1.createReview);}catch(e){h$1(e);}}),r$1.command("respond").description("Respond to a review").argument("<id>","Review ID").requiredOption("--response <text>","Response text").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(q,{id:t,response:e.response});k("Response saved"),i(e,i$1.respondToReview);}catch(i){h$1(i);}});}function Z(d){let r$1=d.command("investments").description("Kadaikodi investment opportunities & investments");r$1.command("list-opportunities").description("List investment opportunities").option("--risk-level <r>","LOW|MEDIUM|HIGH").option("--status <s>","DRAFT|ACTIVE|FUNDED|CLOSED").option("--limit <n>","Page size",a,100).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{riskLevel:t.riskLevel?t.riskLevel.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,limit:t.limit,offset:t.offset});i(t,e.listInvestmentOpportunities,{headers:["ID","Title","Risk","Status","Target","Raised","Returns %"],rows:e.listInvestmentOpportunities.map(i=>[r(i.id,12),i.title,i.riskLevel,i.status,String(i.targetAmount),String(i.raisedAmount),String(i.expectedReturnsPct)])});}catch(e){h$1(e);}}),r$1.command("get-opportunity").description("Get an investment opportunity by id").argument("<id>","Opportunity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(M,{id:t});if(!i$1.getInvestmentOpportunity)throw new o(`Investment opportunity ${t} not found`);i(e,i$1.getInvestmentOpportunity);}catch(i){h$1(i);}}),r$1.command("create-opportunity").description("Create an investment opportunity").requiredOption("--provider <id>","Provider ID").requiredOption("--title <t>","Title").requiredOption("--target-amount <n>","Target amount",g).requiredOption("--minimum-investment <n>","Minimum investment",g).requiredOption("--expected-returns-pct <n>","Expected returns %",g).requiredOption("--lock-in-months <n>","Lock-in months",a).option("--risk-level <r>","LOW|MEDIUM|HIGH","MEDIUM").option("--description <s>","Description").option("--expires-at <iso>","Expiry (ISO date)").option("--business-metrics <json>","Business metrics JSON").option("--terms <json>","Terms JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,title:t.title,targetAmount:t.targetAmount,minimumInvestment:t.minimumInvestment,expectedReturnsPct:t.expectedReturnsPct,lockInMonths:t.lockInMonths,riskLevel:(t.riskLevel??"MEDIUM").toUpperCase()};t.description&&(e.description=t.description),t.expiresAt&&(e.expiresAt=t.expiresAt),t.businessMetrics&&(e.businessMetrics=c("business-metrics",t.businessMetrics)),t.terms&&(e.terms=c("terms",t.terms));let i$1=await b$1(F,{input:e});k(`Opportunity created: ${i$1.createInvestmentOpportunity.title}`),i(t,i$1.createInvestmentOpportunity);}catch(e){h$1(e);}}),r$1.command("list").description("List investments for an investor").requiredOption("--investor <id>","Investor ID").option("--limit <n>","Page size",a,100).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{investorId:t.investor,limit:t.limit,offset:t.offset});i(t,e.listInvestments,{headers:["ID","Opportunity","Amount","Current","Returns","Status"],rows:e.listInvestments.map(i=>[r(i.id,12),r(i.opportunityId,12),String(i.amount),String(i.currentValue),String(i.realizedReturns),i.status])});}catch(e){h$1(e);}}),r$1.command("invest").description("Invest in an opportunity").requiredOption("--investor <id>","Investor ID").requiredOption("--opportunity <id>","Opportunity ID").requiredOption("--amount <n>","Amount",g).option("-f, --format <format>","Output format").action(async t=>{try{let e={investorId:t.investor,opportunityId:t.opportunity,amount:t.amount},i$1=await b$1(W,{input:e});k(`Invested ${i$1.invest.amount} in ${i$1.invest.opportunityId}`),i(t,i$1.invest);}catch(e){h$1(e);}});}function tt(d$1){let r=d$1.command("analytics").description("Kadaikodi analytics & dashboard");r.command("admin").description("Admin analytics (category distribution, growth, revenue, top providers)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(G);i(t,e.kadaikodiAdminAnalytics);}catch(e){h$1(e);}}),r.command("dashboard").description("Dashboard stats (orders, revenue, providers, customers, rating)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(H);i(t,e.kadaikodiDashboardStats);}catch(e){h$1(e);}}),d$1.command("health").description("Kadaikodi service health check (public)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await d(J);k(e.kadaikodiHealth),i(t,{health:e.kadaikodiHealth});}catch(e){h$1(e);}});}var et={id:"kadaikodi",version:"1.0.0",displayName:"Kadaikodi",dependsOn:["auth","workspaces"],register(d,r){a$1(r);let t=d.command("kadaikodi").description("Kadaikodi local-services marketplace");j(t),z(t),Y(t),B(t),Q(t),X(t),Z(t),tt(t);}},Ut=et;export{Ut as default};
|
|
192
|
+
`;function c(d,r){try{return JSON.parse(r)}catch{throw new o(`--${d} must be valid JSON`)}}function s(d){let r=Number.parseInt(d,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${d}"`);return r}function g(d){let r=Number.parseFloat(d);if(Number.isNaN(r))throw new o(`Expected a number but got "${d}"`);return r}function j(d){let r$1=d.command("providers").description("Kadaikodi service providers");r$1.command("list").description("List service providers").option("--category <c>","Filter by service category").option("--status <s>","Filter by provider status").option("--query <q>","Free-text search").option("--open-only","Only providers currently open").option("--limit <n>","Page size",s,50).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1={};t.category&&(i$1.category=t.category.toUpperCase()),t.status&&(i$1.status=t.status.toUpperCase()),t.query&&(i$1.query=t.query),t.openOnly&&(i$1.openOnly=!0);let e=await b$1(S,{filter:Object.keys(i$1).length?i$1:void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.kadaikodiListServiceProviders,{headers:["ID","Name","Category","Status","Rating"],rows:e.kadaikodiListServiceProviders.map(p=>[r(p.id,12),p.name,p.category,p.status,`${p.rating??0} (${p.totalRatings??0})`])});}catch(i){h$1(i);}}),r$1.command("get").description("Get a service provider by id").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(w,{id:t});if(!e.kadaikodiServiceProvider)throw new o(`Provider ${t} not found`);i(i$1,e.kadaikodiServiceProvider);}catch(e){h$1(e);}}),r$1.command("create").description("Create a service provider").requiredOption("--owner <id>","Owner user ID").requiredOption("--name <name>","Provider name").requiredOption("--slug <slug>","URL slug").requiredOption("--category <c>","Service category").requiredOption("--location <json>","Location JSON (address/latitude/longitude)").option("--description <s>","Description").option("--offering-type <t>","product|service|both","both").option("--service-types <csv>","Comma-separated service types").option("--business-hours <json>","Business hours JSON").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={ownerId:t.owner,name:t.name,slug:t.slug,category:t.category.toUpperCase(),location:c("location",t.location),offeringType:t.offeringType??"both"};t.description&&(i$1.description=t.description),t.serviceTypes&&(i$1.serviceTypes=t.serviceTypes.split(",").map(p=>p.trim())),t.businessHours&&(i$1.businessHours=c("business-hours",t.businessHours));let e=await b$1(E,{input:i$1});k(`Provider created: ${e.kadaikodiCreateServiceProvider.name}`),i(t,e.kadaikodiCreateServiceProvider);}catch(i){h$1(i);}}),r$1.command("update").description("Update a service provider").argument("<id>","Provider ID").option("--name <name>","Provider name").option("--description <s>","Description").option("--status <s>","Provider status").option("--location <json>","Location JSON").option("--service-types <csv>","Comma-separated service types").option("--business-hours <json>","Business hours JSON").option("--analytics-snapshot <json>","Analytics snapshot JSON").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.description!==void 0&&(e.description=i$1.description),i$1.status&&(e.status=i$1.status.toUpperCase()),i$1.location&&(e.location=c("location",i$1.location)),i$1.serviceTypes&&(e.serviceTypes=i$1.serviceTypes.split(",").map(I=>I.trim())),i$1.businessHours&&(e.businessHours=c("business-hours",i$1.businessHours)),i$1.analyticsSnapshot&&(e.analyticsSnapshot=c("analytics-snapshot",i$1.analyticsSnapshot)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(T,{id:t,input:e});k("Provider updated"),i(i$1,p.kadaikodiUpdateServiceProvider);}catch(e){h$1(e);}});}function z(d){d.command("workers").description("Kadaikodi provider workers").command("list").description("List workers for a provider").requiredOption("--provider <id>","Provider ID").option("--limit <n>","Page size",s,50).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(P,{providerId:t.provider,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.kadaikodiListProviderWorkers,{headers:["ID","Name","Role","Status","Worker"],rows:i$1.kadaikodiListProviderWorkers.map(e=>[r(e.id,12),e.name,e.role,e.status,r(e.workerId,12)])});}catch(i){h$1(i);}});}function Y(d){d.command("tasks").description("Kadaikodi worker tasks").command("list").description("List the worker tasks assigned to the signed-in worker").option("--status <s>","Filter by status (ASSIGNED, IN_PROGRESS, BLOCKED, COMPLETED, CANCELLED)").option("--limit <n>","Page size",s,50).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(C,{status:t.status?.toUpperCase(),pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.kadaikodiWorkerTasks,{headers:["ID","Title","Type","Status","Priority","Due"],rows:i$1.kadaikodiWorkerTasks.map(e=>[r(e.id,12),e.title,e.type,e.status,e.priority,q$1(e.dueAt)])});}catch(i){h$1(i);}});}function B(d){let r$1=d.command("offerings").description("Kadaikodi offerings (products & services)");r$1.command("list").description("List offerings").option("--kind <k>","PRODUCT|SERVICE").option("--provider <id>","Filter by provider ID").option("--limit <n>","Page size",s,100).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(b,{kind:t.kind?t.kind.toUpperCase():void 0,providerId:t.provider,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.kadaikodiListOfferings,{headers:["ID","Name","Kind","Category","Price","Stock"],rows:i$1.kadaikodiListOfferings.map(e=>[r(e.id,12),e.name,e.kind,e.category,String(e.price),e.stock!=null?String(e.stock):"-"])});}catch(i){h$1(i);}}),r$1.command("get").description("Get an offering by id").argument("<id>","Offering ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(A,{id:t});if(!e.kadaikodiOffering)throw new o(`Offering ${t} not found`);i(i$1,e.kadaikodiOffering);}catch(e){h$1(e);}}),r$1.command("create").description("Create an offering").requiredOption("--provider <id>","Provider ID").requiredOption("--name <name>","Offering name").requiredOption("--slug <slug>","URL slug").requiredOption("--kind <k>","PRODUCT|SERVICE").requiredOption("--category <c>","Service category").requiredOption("--price <n>","Price",g).option("--description <s>","Description").option("--original-price <n>","Original price",g).option("--service-type <s>","Service type").option("--duration-minutes <n>","Duration (minutes)",s).option("--stock <n>","Stock",s).option("--tags <csv>","Comma-separated tags").option("--media <json>","Media JSON").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={providerId:t.provider,name:t.name,slug:t.slug,kind:t.kind.toUpperCase(),category:t.category.toUpperCase(),price:t.price};t.description&&(i$1.description=t.description),t.originalPrice!==void 0&&(i$1.originalPrice=t.originalPrice),t.serviceType&&(i$1.serviceType=t.serviceType),t.durationMinutes!==void 0&&(i$1.durationMinutes=t.durationMinutes),t.stock!==void 0&&(i$1.stock=t.stock),t.tags&&(i$1.tags=t.tags.split(",").map(p=>p.trim())),t.media&&(i$1.media=c("media",t.media)),t.metadata&&(i$1.metadata=c("metadata",t.metadata));let e=await b$1(h,{input:i$1});k(`Offering created: ${e.kadaikodiCreateOffering.name}`),i(t,e.kadaikodiCreateOffering);}catch(i){h$1(i);}}),r$1.command("update").description("Update an offering").argument("<id>","Offering ID").option("--name <name>","Offering name").option("--description <s>","Description").option("--price <n>","Price",g).option("--original-price <n>","Original price",g).option("--service-type <s>","Service type").option("--duration-minutes <n>","Duration (minutes)",s).option("--stock <n>","Stock",s).option("--available <bool>","true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("--media <json>","Media JSON").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.description!==void 0&&(e.description=i$1.description),i$1.price!==void 0&&(e.price=i$1.price),i$1.originalPrice!==void 0&&(e.originalPrice=i$1.originalPrice),i$1.serviceType&&(e.serviceType=i$1.serviceType),i$1.durationMinutes!==void 0&&(e.durationMinutes=i$1.durationMinutes),i$1.stock!==void 0&&(e.stock=i$1.stock),i$1.available!==void 0&&(e.isAvailable=i$1.available),i$1.tags&&(e.tags=i$1.tags.split(",").map(I=>I.trim())),i$1.media&&(e.media=c("media",i$1.media)),i$1.metadata&&(e.metadata=c("metadata",i$1.metadata)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(D,{id:t,input:e});k("Offering updated"),i(i$1,p.kadaikodiUpdateOffering);}catch(e){h$1(e);}});}function Q(d){let r$1=d.command("orders").description("Kadaikodi orders");r$1.command("list").description("List orders").option("--customer <id>","Filter by customer ID").option("--provider <id>","Filter by provider ID").option("--status <s>","Filter by order status").option("--limit <n>","Page size",s,100).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1($,{customerId:t.customer,providerId:t.provider,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.kadaikodiListOrders,{headers:["ID","Order #","Status","Payment","Fulfillment","Total"],rows:i$1.kadaikodiListOrders.map(e=>[r(e.id,12),e.orderNumber,e.status,e.paymentStatus,e.fulfillmentType,String(e.total)])});}catch(i){h$1(i);}}),r$1.command("get").description("Get an order by id").argument("<id>","Order ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(L,{id:t});if(!e.kadaikodiOrder)throw new o(`Order ${t} not found`);i(i$1,e.kadaikodiOrder);}catch(e){h$1(e);}}),r$1.command("place").description("Place an order").requiredOption("--customer <id>","Customer ID").requiredOption("--provider <id>","Provider ID").requiredOption("--fulfillment-type <t>","Fulfillment type (e.g. delivery, pickup)").requiredOption("--items <json>","Order items JSON array: [{ name, quantity, unitPrice, offeringId?, customizations? }]").option("--tax <n>","Tax",g).option("--delivery-fee <n>","Delivery fee",g).option("--discount <n>","Discount",g).option("--payment-method <m>","Payment method").option("--delivery-address <json>","Delivery address JSON").option("--notes <s>","Order notes").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=c("items",t.items);if(!Array.isArray(i$1)||i$1.length===0)throw new o("--items must be a non-empty JSON array");let e={customerId:t.customer,providerId:t.provider,fulfillmentType:t.fulfillmentType,items:i$1};t.tax!==void 0&&(e.tax=t.tax),t.deliveryFee!==void 0&&(e.deliveryFee=t.deliveryFee),t.discount!==void 0&&(e.discount=t.discount),t.paymentMethod&&(e.paymentMethod=t.paymentMethod),t.deliveryAddress&&(e.deliveryAddress=c("delivery-address",t.deliveryAddress)),t.notes&&(e.notes=t.notes);let p=await b$1(N,{input:e});k(`Order placed: ${p.kadaikodiPlaceOrder.orderNumber}`),i(t,p.kadaikodiPlaceOrder);}catch(i){h$1(i);}}),r$1.command("set-status").description("Update an order status").argument("<id>","Order ID").requiredOption("--status <s>","PLACED|PENDING|CONFIRMED|PREPARING|READY|OUT_FOR_DELIVERY|DELIVERED|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(_,{id:t,status:i$1.status.toUpperCase()});k(`Order status set to ${e.kadaikodiUpdateOrderStatus.status}`),i(i$1,e.kadaikodiUpdateOrderStatus);}catch(e){h$1(e);}});}function X(d){let r$1=d.command("reviews").description("Kadaikodi reviews");r$1.command("list").description("List reviews for a provider").requiredOption("--provider <id>","Provider ID").option("--limit <n>","Page size",s,100).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(K,{providerId:t.provider,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.kadaikodiListReviews,{headers:["ID","Customer","Rating","Review","Responded"],rows:i$1.kadaikodiListReviews.map(e=>[r(e.id,12),r(e.customerId,12),String(e.rating),r(e.review??"-",30),e.response?"yes":"no"])});}catch(i){h$1(i);}}),r$1.command("create").description("Create a review").requiredOption("--provider <id>","Provider ID").requiredOption("--customer <id>","Customer ID").requiredOption("--rating <n>","Rating (1-5)",s).option("--order <id>","Order ID").option("--review <text>","Review text").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={providerId:t.provider,customerId:t.customer,rating:t.rating};t.order&&(i$1.orderId=t.order),t.review&&(i$1.review=t.review);let e=await b$1(x,{input:i$1});k("Review created"),i(t,e.kadaikodiCreateReview);}catch(i){h$1(i);}}),r$1.command("respond").description("Respond to a review").argument("<id>","Review ID").requiredOption("--response <text>","Response text").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(U,{id:t,response:i$1.response});k("Response saved"),i(i$1,e.kadaikodiRespondToReview);}catch(e){h$1(e);}});}function Z(d){let r$1=d.command("investments").description("Kadaikodi investment opportunities & investments");r$1.command("list-opportunities").description("List investment opportunities").option("--risk-level <r>","LOW|MEDIUM|HIGH").option("--status <s>","DRAFT|ACTIVE|FUNDED|CLOSED").option("--limit <n>","Page size",s,100).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(q,{riskLevel:t.riskLevel?t.riskLevel.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.kadaikodiListInvestmentOpportunities,{headers:["ID","Title","Risk","Status","Target","Raised","Returns %"],rows:i$1.kadaikodiListInvestmentOpportunities.map(e=>[r(e.id,12),e.title,e.riskLevel,e.status,String(e.targetAmount),String(e.raisedAmount),String(e.expectedReturnsPct)])});}catch(i){h$1(i);}}),r$1.command("get-opportunity").description("Get an investment opportunity by id").argument("<id>","Opportunity ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(M,{id:t});if(!e.kadaikodiInvestmentOpportunity)throw new o(`Investment opportunity ${t} not found`);i(i$1,e.kadaikodiInvestmentOpportunity);}catch(e){h$1(e);}}),r$1.command("create-opportunity").description("Create an investment opportunity").requiredOption("--provider <id>","Provider ID").requiredOption("--title <t>","Title").requiredOption("--target-amount <n>","Target amount",g).requiredOption("--minimum-investment <n>","Minimum investment",g).requiredOption("--expected-returns-pct <n>","Expected returns %",g).requiredOption("--lock-in-months <n>","Lock-in months",s).option("--risk-level <r>","LOW|MEDIUM|HIGH","MEDIUM").option("--description <s>","Description").option("--expires-at <iso>","Expiry (ISO date)").option("--business-metrics <json>","Business metrics JSON").option("--terms <json>","Terms JSON").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={providerId:t.provider,title:t.title,targetAmount:t.targetAmount,minimumInvestment:t.minimumInvestment,expectedReturnsPct:t.expectedReturnsPct,lockInMonths:t.lockInMonths,riskLevel:(t.riskLevel??"MEDIUM").toUpperCase()};t.description&&(i$1.description=t.description),t.expiresAt&&(i$1.expiresAt=t.expiresAt),t.businessMetrics&&(i$1.businessMetrics=c("business-metrics",t.businessMetrics)),t.terms&&(i$1.terms=c("terms",t.terms));let e=await b$1(F,{input:i$1});k(`Opportunity created: ${e.kadaikodiCreateInvestmentOpportunity.title}`),i(t,e.kadaikodiCreateInvestmentOpportunity);}catch(i){h$1(i);}}),r$1.command("list").description("List investments for an investor").requiredOption("--investor <id>","Investor ID").option("--limit <n>","Page size",s,100).option("--offset <n>","Offset",s,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=(await b$1(V,{pagination:{limit:t.limit,offset:t.offset}})).kadaikodiListInvestments.filter(p=>p.investorId===t.investor);i(t,e,{headers:["ID","Opportunity","Amount","Current","Returns","Status"],rows:e.map(p=>[r(p.id,12),r(p.opportunityId,12),String(p.amount),String(p.currentValue),String(p.realizedReturns),p.status])});}catch(i){h$1(i);}}),r$1.command("invest").description("Invest in an opportunity").requiredOption("--investor <id>","Investor ID").requiredOption("--opportunity <id>","Opportunity ID").requiredOption("--amount <n>","Amount",g).option("-f, --format <format>","Output format").action(async t=>{try{let i$1={investorId:t.investor,opportunityId:t.opportunity,amount:t.amount},e=await b$1(W,{input:i$1});k(`Invested ${e.kadaikodiInvest.amount} in ${e.kadaikodiInvest.opportunityId}`),i(t,e.kadaikodiInvest);}catch(i){h$1(i);}});}function tt(d$1){let r=d$1.command("analytics").description("Kadaikodi analytics & dashboard");r.command("admin").description("Admin analytics (category distribution, growth, revenue, top providers)").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(G);i(t,i$1.kadaikodiAdminAnalytics);}catch(i){h$1(i);}}),r.command("dashboard").description("Dashboard stats (orders, revenue, providers, customers, rating)").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(H);i(t,i$1.kadaikodiDashboardStats);}catch(i){h$1(i);}}),d$1.command("health").description("Kadaikodi service health check (public)").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await d(J);k(i$1.kadaikodiHealth),i(t,{health:i$1.kadaikodiHealth});}catch(i){h$1(i);}});}var it={id:"kadaikodi",version:"1.0.0",displayName:"Kadaikodi",dependsOn:["auth","workspaces"],register(d,r){a(r);let t=d.command("kadaikodi").description("Kadaikodi local-services marketplace");j(t),z(t),Y(t),B(t),Q(t),X(t),Z(t),tt(t);}},qt=it;export{qt as default};
|
|
@@ -220,8 +220,11 @@
|
|
|
220
220
|
`,nt=`
|
|
221
221
|
query LabListPipelines {
|
|
222
222
|
labListPipelines {
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
items {
|
|
224
|
+
id workspaceId projectId name description engine version isActive definition tags
|
|
225
|
+
createdAt updatedAt
|
|
226
|
+
}
|
|
227
|
+
pageInfo { cursor hasMore }
|
|
225
228
|
}
|
|
226
229
|
}
|
|
227
230
|
`,rt=`
|
|
@@ -313,7 +316,8 @@
|
|
|
313
316
|
`,lt=`
|
|
314
317
|
query LabListInstruments($status: LabInstrumentStatus) {
|
|
315
318
|
labListInstruments(status: $status) {
|
|
316
|
-
id name model location status requiresApproval custodianId tags createdAt
|
|
319
|
+
items { id name model location status requiresApproval custodianId tags createdAt }
|
|
320
|
+
pageInfo { cursor hasMore }
|
|
317
321
|
}
|
|
318
322
|
}
|
|
319
323
|
`,gt=`
|
|
@@ -340,4 +344,4 @@
|
|
|
340
344
|
query LabHealth {
|
|
341
345
|
labHealth
|
|
342
346
|
}
|
|
343
|
-
`;function b(o,r){try{return JSON.parse(r)}catch{throw new u(`--${o} must be valid JSON`)}}function p(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new u(`Expected an integer but got "${o}"`);return r}function A(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new u(`Expected a number but got "${o}"`);return r}function l(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function g(o,r){return {limit:o,offset:r}}function yt(o){let r=o.command("projects").description("Labsofscience research projects");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("experiments").description("Labsofscience experiments");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("runs").description("Labsofscience reproducible experiment runs");r.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);}}),r.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);}}),r.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(o){let r=o.command("notebook").description("Labsofscience electronic lab notebook (ELN)");r.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);}}),r.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);}}),r.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(o){let r=o.command("protocols").description("Labsofscience versioned protocols");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("datasets").description("Labsofscience versioned datasets");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("pipelines").description("Labsofscience reproducible analysis pipelines");r.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);}}),r.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(rt,{input:e});c(`Pipeline created: ${n.labCreatePipeline.name}`),s(t,n.labCreatePipeline);}catch(e){i(e);}}),r.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(ot,{input:e});c(`Pipeline run queued: ${n.labRunPipeline.status}`),s(t,n.labRunPipeline);}catch(e){i(e);}}),r.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);}}),r.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(o){let r=o.command("inventory").description("Labsofscience lab inventory (reagents, samples, consumables)");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("instruments").description("Labsofscience instruments & bookings");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){o.command("health").description("Labsofscience service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await k(bt);c(t.labHealth),s(r,{health:t.labHealth});}catch(t){i(t);}});}var Ut={id:"labsofscience",version:"1.0.0",displayName:"Labsofscience",dependsOn:["auth","workspaces"],register(o,r){T(r);let t=o.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;
|
|
347
|
+
`;function b(o,r){try{return JSON.parse(r)}catch{throw new u(`--${o} must be valid JSON`)}}function p(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new u(`Expected an integer but got "${o}"`);return r}function A(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new u(`Expected a number but got "${o}"`);return r}function l(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function g(o,r){return {limit:o,offset:r}}function yt(o){let r=o.command("projects").description("Labsofscience research projects");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("experiments").description("Labsofscience experiments");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("runs").description("Labsofscience reproducible experiment runs");r.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);}}),r.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);}}),r.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(o){let r=o.command("notebook").description("Labsofscience electronic lab notebook (ELN)");r.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);}}),r.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);}}),r.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(o){let r=o.command("protocols").description("Labsofscience versioned protocols");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("datasets").description("Labsofscience versioned datasets");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("pipelines").description("Labsofscience reproducible analysis pipelines");r.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.items,{headers:["ID","Name","Engine","Version","Active"],rows:e.labListPipelines.items.map(n=>[d(n.id,12),n.name,n.engine,String(n.version),n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.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(rt,{input:e});c(`Pipeline created: ${n.labCreatePipeline.name}`),s(t,n.labCreatePipeline);}catch(e){i(e);}}),r.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(ot,{input:e});c(`Pipeline run queued: ${n.labRunPipeline.status}`),s(t,n.labRunPipeline);}catch(e){i(e);}}),r.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);}}),r.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(o){let r=o.command("inventory").description("Labsofscience lab inventory (reagents, samples, consumables)");r.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);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){let r=o.command("instruments").description("Labsofscience instruments & bookings");r.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.items,{headers:["ID","Name","Model","Location","Status","Approval"],rows:e.labListInstruments.items.map(n=>[d(n.id,12),n.name,n.model??"-",n.location??"-",n.status,n.requiresApproval?"yes":"no"])});}catch(e){i(e);}}),r.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);}}),r.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);}}),r.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);}}),r.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(o){o.command("health").description("Labsofscience service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await k(bt);c(t.labHealth),s(r,{health:t.labHealth});}catch(t){i(t);}});}var Ut={id:"labsofscience",version:"1.0.0",displayName:"Labsofscience",dependsOn:["auth","workspaces"],register(o,r){T(r);let t=o.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;
|