@burdenoff/cli-sdk 2026.1021.1 → 2026.1021.2
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/{chunk-NLEVVDXR.js → chunk-SQSFZFQZ.js} +1 -1
- package/dist/{chunk-IZXPWPKX.js → chunk-UAFYTYK6.js} +7 -7
- package/dist/core/index.cjs +7 -7
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.js +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +3 -3
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +6 -6
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +5 -5
- package/dist/modules/auth/index.js +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +2 -2
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +3 -3
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +3 -3
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +4 -4
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +4 -4
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +3 -3
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +2 -2
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +4 -4
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/fluidgrids/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs +3 -3
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +2 -2
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +6 -6
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +3 -3
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +3 -3
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.js +1 -1
- package/dist/modules/mybodyshield/index.cjs +4 -4
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +2 -2
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +4 -4
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +3 -3
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +4 -4
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +2 -2
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +2 -2
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +2 -2
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +2 -2
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.js +1 -1
- package/dist/modules/tours/index.cjs +2 -2
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.js +1 -1
- package/dist/modules/workspaces/index.cjs +3 -3
- package/dist/modules/workspaces/index.js +1 -1
- package/package.json +1 -1
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
id name status updatedAt workspaceId
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
`,
|
|
129
|
+
`,V=`
|
|
130
130
|
query IntCase($id: ID!) {
|
|
131
131
|
intCase(id: $id) {
|
|
132
132
|
id title classification status priority summary reference leadAnalystId
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
entries { id caseId kind body createdAt updatedAt workspaceId }
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
-
`,
|
|
137
|
+
`,H=`
|
|
138
138
|
query IntListCases($missionId: ID, $status: IntCaseStatus, $pagination: PaginationInput) {
|
|
139
139
|
intListCases(missionId: $missionId, status: $status, pagination: $pagination) {
|
|
140
140
|
items {
|
|
@@ -308,4 +308,4 @@
|
|
|
308
308
|
query IntHealth {
|
|
309
309
|
intHealth
|
|
310
310
|
}
|
|
311
|
-
`;function E(r,i){try{return JSON.parse(i)}catch{throw new m(`--${r} must be valid JSON`)}}function p(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new m(`Expected an integer but got "${r}"`);return i}function g(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new m(`Expected a number but got "${r}"`);return i}function l(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function ct(r){let i=r.command("sources").description("IntelWatchtower collection sources");i.command("list").description("List collection sources").option("--discipline <d>","HUMINT|SIGINT|GEOINT|OSINT|IMINT|MASINT|CYBER").option("--status <s>","PROVISIONING|ACTIVE|DEGRADED|OFFLINE|RETIRED").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(O,{discipline:t.discipline?t.discipline.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListSources.items,{headers:["ID","Name","Discipline","Status","Reliability"],rows:e.intListSources.items.map(n=>[u(n.id,12),n.name,n.discipline,n.status,String(n.reliability??0)])});}catch(e){o(e);}}),i.command("get").description("Get a source by id").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(k,{id:t});if(!n.intSource)throw new m(`Source ${t} not found`);s(e,n.intSource);}catch(n){o(n);}}),i.command("create").description("Create a collection source").requiredOption("--name <name>","Source name").requiredOption("--discipline <d>","HUMINT|SIGINT|GEOINT|OSINT|IMINT|MASINT|CYBER").option("--codename <c>","Codename").option("--description <s>","Description").option("--operator <id>","Operator user ID").option("--region <r>","Region").option("--reliability <n>","Reliability (0-100)",p).option("--status <s>","PROVISIONING|ACTIVE|DEGRADED|OFFLINE|RETIRED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,discipline:t.discipline.toUpperCase()};t.codename&&(e.codename=t.codename),t.description&&(e.description=t.description),t.operator&&(e.operatorId=t.operator),t.region&&(e.region=t.region),t.reliability!==void 0&&(e.reliability=t.reliability),t.status&&(e.status=t.status.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.tags&&(e.tags=l(t.tags));let n=await a(b,{input:e});c(`Source created: ${n.intCreateSource.name}`),s(t,n.intCreateSource);}catch(e){o(e);}}),i.command("update").description("Update a collection source").argument("<id>","Source ID").option("--name <name>","Source name").option("--discipline <d>","HUMINT|SIGINT|GEOINT|OSINT|IMINT|MASINT|CYBER").option("--codename <c>","Codename").option("--description <s>","Description").option("--operator <id>","Operator user ID").option("--region <r>","Region").option("--reliability <n>","Reliability (0-100)",p).option("--status <s>","PROVISIONING|ACTIVE|DEGRADED|OFFLINE|RETIRED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").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.discipline&&(n.discipline=e.discipline.toUpperCase()),e.codename&&(n.codename=e.codename),e.description!==void 0&&(n.description=e.description),e.operator&&(n.operatorId=e.operator),e.region&&(n.region=e.region),e.reliability!==void 0&&(n.reliability=e.reliability),e.status&&(n.status=e.status.toUpperCase()),e.classification&&(n.classification=e.classification.toUpperCase()),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new m("No updates specified");let T=await a(N,{id:t,input:n});c("Source updated"),s(e,T.intUpdateSource);}catch(n){o(n);}}),i.command("retire").description("Retire (delete) a collection source").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});c(`Source retired: ${n.intRetireSource}`),s(e,{retired:n.intRetireSource});}catch(n){o(n);}});}function dt(r){let i=r.command("entities").description("IntelWatchtower entities of interest");i.command("list").description("List entities").option("--type <t>","PERSON|ORGANIZATION|LOCATION|FACILITY|VEHICLE|VESSEL|AIRCRAFT|EVENT|NETWORK_NODE").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").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,{type:t.type?t.type.toUpperCase():void 0,confidence:t.confidence?t.confidence.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListEntities.items,{headers:["ID","Name","Type","Confidence","Threat"],rows:e.intListEntities.items.map(n=>[u(n.id,12),n.name,n.type,n.confidence,String(n.threatScore??0)])});}catch(e){o(e);}}),i.command("get").description("Get an entity by id").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(v,{id:t});if(!n.intEntity)throw new m(`Entity ${t} not found`);s(e,n.intEntity);}catch(n){o(n);}}),i.command("create").description("Create an entity of interest").requiredOption("--name <name>","Entity name").requiredOption("--type <t>","PERSON|ORGANIZATION|LOCATION|FACILITY|VEHICLE|VESSEL|AIRCRAFT|EVENT|NETWORK_NODE").option("--description <s>","Description").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--aliases <csv>","Comma-separated aliases").option("--latitude <n>","Latitude",g).option("--longitude <n>","Longitude",g).option("--threat-score <n>","Threat score",p).option("--tags <csv>","Comma-separated tags").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.confidence&&(e.confidence=t.confidence.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.aliases&&(e.aliases=l(t.aliases)),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.threatScore!==void 0&&(e.threatScore=t.threatScore),t.tags&&(e.tags=l(t.tags)),t.attributes&&(e.attributes=E("attributes",t.attributes));let n=await a(L,{input:e});c(`Entity created: ${n.intCreateEntity.name}`),s(t,n.intCreateEntity);}catch(e){o(e);}}),i.command("update").description("Update an entity of interest").argument("<id>","Entity ID").option("--name <name>","Entity name").option("--description <s>","Description").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--aliases <csv>","Comma-separated aliases").option("--latitude <n>","Latitude",g).option("--longitude <n>","Longitude",g).option("--threat-score <n>","Threat score",p).option("--tags <csv>","Comma-separated tags").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.confidence&&(n.confidence=e.confidence.toUpperCase()),e.classification&&(n.classification=e.classification.toUpperCase()),e.aliases&&(n.aliases=l(e.aliases)),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.threatScore!==void 0&&(n.threatScore=e.threatScore),e.tags&&(n.tags=l(e.tags)),e.attributes&&(n.attributes=E("attributes",e.attributes)),!Object.keys(n).length)throw new m("No updates specified");let T=await a($,{id:t,input:n});c("Entity updated"),s(e,T.intUpdateEntity);}catch(n){o(n);}});}function ut(r){let i=r.command("indicators").description("IntelWatchtower indicators (IOCs)");i.command("list").description("List indicators").option("--entity <id>","Filter by entity ID").option("--type <t>","IP_ADDRESS|DOMAIN|URL|EMAIL|FILE_HASH|GEO_COORDINATE|SIGNATURE|BEHAVIOR").option("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{entityId:t.entity,type:t.type?t.type.toUpperCase():void 0,isActive:t.active});s(t,e.intListIndicators,{headers:["ID","Type","Value","Confidence","Active"],rows:e.intListIndicators.map(n=>[u(n.id,12),n.type,u(n.value,30),n.confidence,n.isActive?"yes":"no"])});}catch(e){o(e);}}),i.command("create").description("Create an indicator").requiredOption("--type <t>","IP_ADDRESS|DOMAIN|URL|EMAIL|FILE_HASH|GEO_COORDINATE|SIGNATURE|BEHAVIOR").requiredOption("--value <v>","Indicator value").option("--entity <id>","Associated entity ID").option("--description <s>","Description").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--valid-from <iso>","Valid from (ISO date)").option("--valid-until <iso>","Valid until (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={type:t.type.toUpperCase(),value:t.value};t.entity&&(e.entityId=t.entity),t.description&&(e.description=t.description),t.confidence&&(e.confidence=t.confidence.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.validFrom&&(e.validFrom=t.validFrom),t.validUntil&&(e.validUntil=t.validUntil);let n=await a(q,{input:e});c(`Indicator created: ${n.intCreateIndicator.value}`),s(t,n.intCreateIndicator);}catch(e){o(e);}}),i.command("deactivate").description("Deactivate an indicator").argument("<id>","Indicator ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});c("Indicator deactivated"),s(e,n.intDeactivateIndicator);}catch(n){o(n);}});}function pt(r){r.command("feeds").description("IntelWatchtower source feeds").command("create").description("Create a source feed").requiredOption("--name <name>","Feed name").requiredOption("--source <id>","Source ID").option("--endpoint <url>","Feed endpoint URL").option("--format <fmt>","Feed payload format").option("--status <s>","CONNECTED|DISCONNECTED|ERROR|STALE").option("-f, --output-format <format>","Output format").action(async t=>{try{let e={name:t.name,sourceId:t.source};t.endpoint&&(e.endpoint=t.endpoint),t.format&&(e.format=t.format),t.status&&(e.status=t.status.toUpperCase());let n=await a(U,{input:e});c(`Feed created: ${n.intCreateFeed.name}`),s({format:t.outputFormat},n.intCreateFeed);}catch(e){o(e);}});}function mt(r){let i=r.command("missions").description("IntelWatchtower missions");i.command("list").description("List missions").option("--status <s>","PLANNING|READY|ACTIVE|PAUSED|COMPLETED|ABORTED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{status:t.status?t.status.toUpperCase():void 0});s(t,e.intListMissions,{headers:["ID","Name","Codename","Classification","Status"],rows:e.intListMissions.map(n=>[u(n.id,12),n.name,n.codename??"-",n.classification,n.status])});}catch(e){o(e);}}),i.command("get").description("Get a mission by id").argument("<id>","Mission ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t});if(!n.intMission)throw new m(`Mission ${t} not found`);s(e,n.intMission);}catch(n){o(n);}}),i.command("create").description("Create a mission").requiredOption("--name <name>","Mission name").option("--codename <c>","Codename").option("--objective <s>","Objective").option("--commander <id>","Commander user ID").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--start-at <iso>","Start (ISO date)").option("--end-at <iso>","End (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.codename&&(e.codename=t.codename),t.objective&&(e.objective=t.objective),t.commander&&(e.commanderId=t.commander),t.classification&&(e.classification=t.classification.toUpperCase()),t.startAt&&(e.startAt=t.startAt),t.endAt&&(e.endAt=t.endAt),t.tags&&(e.tags=l(t.tags));let n=await a(W,{input:e});c(`Mission created: ${n.intCreateMission.name}`),s(t,n.intCreateMission);}catch(e){o(e);}}),i.command("transition").description("Transition a mission to a new status").argument("<id>","Mission ID").requiredOption("--status <s>","PLANNING|READY|ACTIVE|PAUSED|COMPLETED|ABORTED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(G,{id:t,status:e.status.toUpperCase()});c(`Mission status set to ${n.intTransitionMission.status}`),s(e,n.intTransitionMission);}catch(n){o(n);}});}function lt(r){let i=r.command("cases").description("IntelWatchtower investigation cases");i.command("list").description("List cases").option("--mission <id>","Filter by mission ID").option("--status <s>","OPEN|ACTIVE|PENDING_REVIEW|CLOSED|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(V,{missionId:t.mission,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListCases.items,{headers:["ID","Title","Classification","Status","Priority"],rows:e.intListCases.items.map(n=>[u(n.id,12),n.title,n.classification,n.status,n.priority])});}catch(e){o(e);}}),i.command("get").description("Get a case by id").argument("<id>","Case ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(H,{id:t});if(!n.intCase)throw new m(`Case ${t} not found`);s(e,n.intCase);}catch(n){o(n);}}),i.command("create").description("Open a new case").requiredOption("--title <t>","Case title").option("--summary <s>","Summary").option("--reference <r>","External reference").option("--mission <id>","Mission ID").option("--lead-analyst <id>","Lead analyst user ID").option("--priority <p>","ROUTINE|PRIORITY|IMMEDIATE|FLASH").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.summary&&(e.summary=t.summary),t.reference&&(e.reference=t.reference),t.mission&&(e.missionId=t.mission),t.leadAnalyst&&(e.leadAnalystId=t.leadAnalyst),t.priority&&(e.priority=t.priority.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.tags&&(e.tags=l(t.tags));let n=await a(j,{input:e});c(`Case created: ${n.intCreateCase.title}`),s(t,n.intCreateCase);}catch(e){o(e);}}),i.command("close").description("Close a case").argument("<id>","Case ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(B,{id:t});c("Case closed"),s(e,n.intCloseCase);}catch(n){o(n);}}),i.command("add-entry").description("Add an entry to a case log").requiredOption("--case <id>","Case ID").requiredOption("--kind <k>","Entry kind (e.g. note, evidence, action)").requiredOption("--body <text>","Entry body").option("--file <id>","Evidence file ID (wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={caseId:t.case,kind:t.kind,body:t.body};t.file&&(e.fileId=t.file);let n=await a(Y,{input:e});c("Case entry added"),s(t,n.intAddCaseEntry);}catch(e){o(e);}});}function ft(r){let i=r.command("requirements").description("IntelWatchtower collection requirements");i.command("list").description("List collection requirements").option("--mission <id>","Filter by mission ID").option("--status <s>","DRAFT|SUBMITTED|APPROVED|TASKED|SATISFIED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(z,{missionId:t.mission,status:t.status?t.status.toUpperCase():void 0});s(t,e.intListRequirements,{headers:["ID","Title","Classification","Priority","Status"],rows:e.intListRequirements.map(n=>[u(n.id,12),n.title,n.classification,n.priority,n.status])});}catch(e){o(e);}}),i.command("create").description("Create a collection requirement").requiredOption("--title <t>","Requirement title").option("--description <s>","Description").option("--mission <id>","Mission ID").option("--requested-by <id>","Requesting user ID").option("--priority <p>","ROUTINE|PRIORITY|IMMEDIATE|FLASH").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--due-date <iso>","Due date (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.mission&&(e.missionId=t.mission),t.requestedBy&&(e.requestedById=t.requestedBy),t.priority&&(e.priority=t.priority.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=l(t.tags));let n=await a(K,{input:e});c(`Requirement created: ${n.intCreateRequirement.title}`),s(t,n.intCreateRequirement);}catch(e){o(e);}});}function gt(r){let i=r.command("tasks").description("IntelWatchtower collection tasks (taskings)");i.command("list").description("List collection tasks").option("--source <id>","Filter by source ID").option("--requirement <id>","Filter by requirement ID").option("--status <s>","PENDING|DISPATCHED|COLLECTING|COMPLETED|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(J,{sourceId:t.source,requirementId:t.requirement,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListTasks.items,{headers:["ID","Source","Requirement","Status"],rows:e.intListTasks.items.map(n=>[u(n.id,12),u(n.sourceId,12),n.requirementId?u(n.requirementId,12):"-",n.status])});}catch(e){o(e);}}),i.command("create").description("Create a collection task against a source").requiredOption("--source <id>","Source ID").option("--requirement <id>","Requirement ID").option("--instructions <s>","Tasking instructions").option("--start-at <iso>","Start (ISO date)").option("--end-at <iso>","End (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={sourceId:t.source};t.requirement&&(e.requirementId=t.requirement),t.instructions&&(e.instructions=t.instructions),t.startAt&&(e.startAt=t.startAt),t.endAt&&(e.endAt=t.endAt);let n=await a(Q,{input:e});c(`Task created: ${n.intCreateTask.id}`),s(t,n.intCreateTask);}catch(e){o(e);}}),i.command("transition").description("Advance a collection task to a new status").argument("<id>","Task ID").requiredOption("--status <s>","PENDING|DISPATCHED|COLLECTING|COMPLETED|FAILED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(X,{id:t,status:e.status.toUpperCase()});c(`Task status set to ${n.intTransitionTask.status}`),s(e,n.intTransitionTask);}catch(n){o(n);}});}function It(r){let i=r.command("observations").description("IntelWatchtower observations (collected reporting)");i.command("list").description("List observations").option("--entity <id>","Filter by entity ID").option("--source <id>","Filter by source ID").option("--task <id>","Filter by task ID").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(Z,{entityId:t.entity,sourceId:t.source,taskId:t.task,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListObservations.items,{headers:["ID","Source","Classification","Summary"],rows:e.intListObservations.items.map(n=>[u(n.id,12),u(n.sourceId,12),n.classification,u(n.summary,40)])});}catch(e){o(e);}}),i.command("record").description("Record an observation").requiredOption("--source <id>","Source ID").requiredOption("--summary <s>","Observation summary").requiredOption("--observed-at <iso>","Observed at (ISO date)").option("--entity <id>","Associated entity ID").option("--task <id>","Associated task ID").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--latitude <n>","Latitude",g).option("--longitude <n>","Longitude",g).option("--payload <json>","Payload JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={sourceId:t.source,summary:t.summary,observedAt:t.observedAt};t.entity&&(e.entityId=t.entity),t.task&&(e.taskId=t.task),t.classification&&(e.classification=t.classification.toUpperCase()),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.payload&&(e.payload=E("payload",t.payload));let n=await a(tt,{input:e});c(`Observation recorded: ${n.intRecordObservation.id}`),s(t,n.intRecordObservation);}catch(e){o(e);}});}function Ct(r){let i=r.command("alerts").description("IntelWatchtower alerts");i.command("list").description("List alerts").option("--entity <id>","Filter by entity ID").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--status <s>","OPEN|TRIAGED|ESCALATED|RESOLVED|FALSE_POSITIVE|SUPPRESSED").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(et,{entityId:t.entity,severity:t.severity?t.severity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListAlerts.items,{headers:["ID","Title","Severity","Status","Classification"],rows:e.intListAlerts.items.map(n=>[u(n.id,12),n.title,n.severity,n.status,n.classification])});}catch(e){o(e);}}),i.command("raise").description("Raise a new alert").requiredOption("--title <t>","Alert title").option("--description <s>","Description").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--entity <id>","Associated entity ID").option("--indicator <id>","Associated indicator ID").option("--mission <id>","Associated mission ID").option("--assigned-to <id>","Assignee user ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.severity&&(e.severity=t.severity.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.entity&&(e.entityId=t.entity),t.indicator&&(e.indicatorId=t.indicator),t.mission&&(e.missionId=t.mission),t.assignedTo&&(e.assignedToId=t.assignedTo);let n=await a(nt,{input:e});c(`Alert raised: ${n.intRaiseAlert.title}`),s(t,n.intRaiseAlert);}catch(e){o(e);}}),i.command("transition").description("Triage an alert through its lifecycle").argument("<id>","Alert ID").requiredOption("--status <s>","OPEN|TRIAGED|ESCALATED|RESOLVED|FALSE_POSITIVE|SUPPRESSED").option("--triage-notes <s>","Triage notes").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(it,{id:t,status:e.status.toUpperCase(),triageNotes:e.triageNotes});c(`Alert status set to ${n.intTransitionAlert.status}`),s(e,n.intTransitionAlert);}catch(n){o(n);}});}function yt(r){let i=r.command("reports").description("IntelWatchtower intelligence reports");i.command("list").description("List reports").option("--mission <id>","Filter by mission ID").option("--type <t>","SITREP|INTSUM|SPOT_REPORT|ASSESSMENT|WARNING").option("--status <s>","DRAFT|IN_REVIEW|RELEASED|RECALLED|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(rt,{missionId:t.mission,type:t.type?t.type.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListReports.items,{headers:["ID","Title","Type","Classification","Status"],rows:e.intListReports.items.map(n=>[u(n.id,12),n.title,n.type,n.classification,n.status])});}catch(e){o(e);}}),i.command("create").description("Create an intelligence report").requiredOption("--title <t>","Report title").option("--type <t>","SITREP|INTSUM|SPOT_REPORT|ASSESSMENT|WARNING").option("--summary <s>","Summary").option("--body <s>","Body").option("--author <id>","Author user ID").option("--case <id>","Associated case ID").option("--mission <id>","Associated mission ID").option("--file <id>","Rendered product file ID (wspace-files-svc)").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.type&&(e.type=t.type.toUpperCase()),t.summary&&(e.summary=t.summary),t.body&&(e.body=t.body),t.author&&(e.authorId=t.author),t.case&&(e.caseId=t.case),t.mission&&(e.missionId=t.mission),t.file&&(e.fileId=t.file),t.classification&&(e.classification=t.classification.toUpperCase()),t.tags&&(e.tags=l(t.tags));let n=await a(ot,{input:e});c(`Report created: ${n.intCreateReport.title}`),s(t,n.intCreateReport);}catch(e){o(e);}}),i.command("release").description("Release a report").argument("<id>","Report ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t});c("Report released"),s(e,n.intReleaseReport);}catch(n){o(n);}});}function Et(r){r.command("health").description("IntelWatchtower service health check (public)").option("-f, --format <format>","Output format").action(async i=>{try{let t=await w(at);c(t.intHealth),s(i,{health:t.intHealth});}catch(t){o(t);}});}var xt={id:"intelwatchtower",version:"1.0.0",displayName:"IntelWatchtower",dependsOn:["auth","workspaces"],register(r,i){h(i);let t=r.command("intelwatchtower").description("IntelWatchtower intelligence operations platform");ct(t),dt(t),ut(t),pt(t),mt(t),lt(t),ft(t),gt(t),It(t),Ct(t),yt(t),Et(t);}},Un=xt;module.exports=Un;
|
|
311
|
+
`;function E(r,i){try{return JSON.parse(i)}catch{throw new m(`--${r} must be valid JSON`)}}function p(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new m(`Expected an integer but got "${r}"`);return i}function g(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new m(`Expected a number but got "${r}"`);return i}function l(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function ct(r){let i=r.command("sources").description("IntelWatchtower collection sources");i.command("list").description("List collection sources").option("--discipline <d>","HUMINT|SIGINT|GEOINT|OSINT|IMINT|MASINT|CYBER").option("--status <s>","PROVISIONING|ACTIVE|DEGRADED|OFFLINE|RETIRED").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(O,{discipline:t.discipline?t.discipline.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListSources.items,{headers:["ID","Name","Discipline","Status","Reliability"],rows:e.intListSources.items.map(n=>[u(n.id,12),n.name,n.discipline,n.status,String(n.reliability??0)])});}catch(e){o(e);}}),i.command("get").description("Get a source by id").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(k,{id:t});if(!n.intSource)throw new m(`Source ${t} not found`);s(e,n.intSource);}catch(n){o(n);}}),i.command("create").description("Create a collection source").requiredOption("--name <name>","Source name").requiredOption("--discipline <d>","HUMINT|SIGINT|GEOINT|OSINT|IMINT|MASINT|CYBER").option("--codename <c>","Codename").option("--description <s>","Description").option("--operator <id>","Operator user ID").option("--region <r>","Region").option("--reliability <n>","Reliability (0-100)",p).option("--status <s>","PROVISIONING|ACTIVE|DEGRADED|OFFLINE|RETIRED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,discipline:t.discipline.toUpperCase()};t.codename&&(e.codename=t.codename),t.description&&(e.description=t.description),t.operator&&(e.operatorId=t.operator),t.region&&(e.region=t.region),t.reliability!==void 0&&(e.reliability=t.reliability),t.status&&(e.status=t.status.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.tags&&(e.tags=l(t.tags));let n=await a(b,{input:e});c(`Source created: ${n.intCreateSource.name}`),s(t,n.intCreateSource);}catch(e){o(e);}}),i.command("update").description("Update a collection source").argument("<id>","Source ID").option("--name <name>","Source name").option("--discipline <d>","HUMINT|SIGINT|GEOINT|OSINT|IMINT|MASINT|CYBER").option("--codename <c>","Codename").option("--description <s>","Description").option("--operator <id>","Operator user ID").option("--region <r>","Region").option("--reliability <n>","Reliability (0-100)",p).option("--status <s>","PROVISIONING|ACTIVE|DEGRADED|OFFLINE|RETIRED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").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.discipline&&(n.discipline=e.discipline.toUpperCase()),e.codename&&(n.codename=e.codename),e.description!==void 0&&(n.description=e.description),e.operator&&(n.operatorId=e.operator),e.region&&(n.region=e.region),e.reliability!==void 0&&(n.reliability=e.reliability),e.status&&(n.status=e.status.toUpperCase()),e.classification&&(n.classification=e.classification.toUpperCase()),e.tags&&(n.tags=l(e.tags)),!Object.keys(n).length)throw new m("No updates specified");let T=await a(N,{id:t,input:n});c("Source updated"),s(e,T.intUpdateSource);}catch(n){o(n);}}),i.command("retire").description("Retire (delete) a collection source").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});c(`Source retired: ${n.intRetireSource}`),s(e,{retired:n.intRetireSource});}catch(n){o(n);}});}function dt(r){let i=r.command("entities").description("IntelWatchtower entities of interest");i.command("list").description("List entities").option("--type <t>","PERSON|ORGANIZATION|LOCATION|FACILITY|VEHICLE|VESSEL|AIRCRAFT|EVENT|NETWORK_NODE").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").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,{type:t.type?t.type.toUpperCase():void 0,confidence:t.confidence?t.confidence.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListEntities.items,{headers:["ID","Name","Type","Confidence","Threat"],rows:e.intListEntities.items.map(n=>[u(n.id,12),n.name,n.type,n.confidence,String(n.threatScore??0)])});}catch(e){o(e);}}),i.command("get").description("Get an entity by id").argument("<id>","Entity ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(v,{id:t});if(!n.intEntity)throw new m(`Entity ${t} not found`);s(e,n.intEntity);}catch(n){o(n);}}),i.command("create").description("Create an entity of interest").requiredOption("--name <name>","Entity name").requiredOption("--type <t>","PERSON|ORGANIZATION|LOCATION|FACILITY|VEHICLE|VESSEL|AIRCRAFT|EVENT|NETWORK_NODE").option("--description <s>","Description").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--aliases <csv>","Comma-separated aliases").option("--latitude <n>","Latitude",g).option("--longitude <n>","Longitude",g).option("--threat-score <n>","Threat score",p).option("--tags <csv>","Comma-separated tags").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.confidence&&(e.confidence=t.confidence.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.aliases&&(e.aliases=l(t.aliases)),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.threatScore!==void 0&&(e.threatScore=t.threatScore),t.tags&&(e.tags=l(t.tags)),t.attributes&&(e.attributes=E("attributes",t.attributes));let n=await a(L,{input:e});c(`Entity created: ${n.intCreateEntity.name}`),s(t,n.intCreateEntity);}catch(e){o(e);}}),i.command("update").description("Update an entity of interest").argument("<id>","Entity ID").option("--name <name>","Entity name").option("--description <s>","Description").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--aliases <csv>","Comma-separated aliases").option("--latitude <n>","Latitude",g).option("--longitude <n>","Longitude",g).option("--threat-score <n>","Threat score",p).option("--tags <csv>","Comma-separated tags").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.confidence&&(n.confidence=e.confidence.toUpperCase()),e.classification&&(n.classification=e.classification.toUpperCase()),e.aliases&&(n.aliases=l(e.aliases)),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.threatScore!==void 0&&(n.threatScore=e.threatScore),e.tags&&(n.tags=l(e.tags)),e.attributes&&(n.attributes=E("attributes",e.attributes)),!Object.keys(n).length)throw new m("No updates specified");let T=await a($,{id:t,input:n});c("Entity updated"),s(e,T.intUpdateEntity);}catch(n){o(n);}});}function ut(r){let i=r.command("indicators").description("IntelWatchtower indicators (IOCs)");i.command("list").description("List indicators").option("--entity <id>","Filter by entity ID").option("--type <t>","IP_ADDRESS|DOMAIN|URL|EMAIL|FILE_HASH|GEO_COORDINATE|SIGNATURE|BEHAVIOR").option("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{entityId:t.entity,type:t.type?t.type.toUpperCase():void 0,isActive:t.active});s(t,e.intListIndicators,{headers:["ID","Type","Value","Confidence","Active"],rows:e.intListIndicators.map(n=>[u(n.id,12),n.type,u(n.value,30),n.confidence,n.isActive?"yes":"no"])});}catch(e){o(e);}}),i.command("create").description("Create an indicator").requiredOption("--type <t>","IP_ADDRESS|DOMAIN|URL|EMAIL|FILE_HASH|GEO_COORDINATE|SIGNATURE|BEHAVIOR").requiredOption("--value <v>","Indicator value").option("--entity <id>","Associated entity ID").option("--description <s>","Description").option("--confidence <c>","LOW|MODERATE|HIGH|CONFIRMED").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--valid-from <iso>","Valid from (ISO date)").option("--valid-until <iso>","Valid until (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={type:t.type.toUpperCase(),value:t.value};t.entity&&(e.entityId=t.entity),t.description&&(e.description=t.description),t.confidence&&(e.confidence=t.confidence.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.validFrom&&(e.validFrom=t.validFrom),t.validUntil&&(e.validUntil=t.validUntil);let n=await a(q,{input:e});c(`Indicator created: ${n.intCreateIndicator.value}`),s(t,n.intCreateIndicator);}catch(e){o(e);}}),i.command("deactivate").description("Deactivate an indicator").argument("<id>","Indicator ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});c("Indicator deactivated"),s(e,n.intDeactivateIndicator);}catch(n){o(n);}});}function pt(r){r.command("feeds").description("IntelWatchtower source feeds").command("create").description("Create a source feed").requiredOption("--name <name>","Feed name").requiredOption("--source <id>","Source ID").option("--endpoint <url>","Feed endpoint URL").option("--format <fmt>","Feed payload format").option("--status <s>","CONNECTED|DISCONNECTED|ERROR|STALE").option("-f, --output-format <format>","Output format").action(async t=>{try{let e={name:t.name,sourceId:t.source};t.endpoint&&(e.endpoint=t.endpoint),t.format&&(e.format=t.format),t.status&&(e.status=t.status.toUpperCase());let n=await a(U,{input:e});c(`Feed created: ${n.intCreateFeed.name}`),s({format:t.outputFormat},n.intCreateFeed);}catch(e){o(e);}});}function mt(r){let i=r.command("missions").description("IntelWatchtower missions");i.command("list").description("List missions").option("--status <s>","PLANNING|READY|ACTIVE|PAUSED|COMPLETED|ABORTED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{status:t.status?t.status.toUpperCase():void 0});s(t,e.intListMissions,{headers:["ID","Name","Codename","Classification","Status"],rows:e.intListMissions.map(n=>[u(n.id,12),n.name,n.codename??"-",n.classification,n.status])});}catch(e){o(e);}}),i.command("get").description("Get a mission by id").argument("<id>","Mission ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t});if(!n.intMission)throw new m(`Mission ${t} not found`);s(e,n.intMission);}catch(n){o(n);}}),i.command("create").description("Create a mission").requiredOption("--name <name>","Mission name").option("--codename <c>","Codename").option("--objective <s>","Objective").option("--commander <id>","Commander user ID").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--start-at <iso>","Start (ISO date)").option("--end-at <iso>","End (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.codename&&(e.codename=t.codename),t.objective&&(e.objective=t.objective),t.commander&&(e.commanderId=t.commander),t.classification&&(e.classification=t.classification.toUpperCase()),t.startAt&&(e.startAt=t.startAt),t.endAt&&(e.endAt=t.endAt),t.tags&&(e.tags=l(t.tags));let n=await a(W,{input:e});c(`Mission created: ${n.intCreateMission.name}`),s(t,n.intCreateMission);}catch(e){o(e);}}),i.command("transition").description("Transition a mission to a new status").argument("<id>","Mission ID").requiredOption("--status <s>","PLANNING|READY|ACTIVE|PAUSED|COMPLETED|ABORTED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(G,{id:t,status:e.status.toUpperCase()});c(`Mission status set to ${n.intTransitionMission.status}`),s(e,n.intTransitionMission);}catch(n){o(n);}});}function lt(r){let i=r.command("cases").description("IntelWatchtower investigation cases");i.command("list").description("List cases").option("--mission <id>","Filter by mission ID").option("--status <s>","OPEN|ACTIVE|PENDING_REVIEW|CLOSED|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(H,{missionId:t.mission,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListCases.items,{headers:["ID","Title","Classification","Status","Priority"],rows:e.intListCases.items.map(n=>[u(n.id,12),n.title,n.classification,n.status,n.priority])});}catch(e){o(e);}}),i.command("get").description("Get a case by id").argument("<id>","Case ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});if(!n.intCase)throw new m(`Case ${t} not found`);s(e,n.intCase);}catch(n){o(n);}}),i.command("create").description("Open a new case").requiredOption("--title <t>","Case title").option("--summary <s>","Summary").option("--reference <r>","External reference").option("--mission <id>","Mission ID").option("--lead-analyst <id>","Lead analyst user ID").option("--priority <p>","ROUTINE|PRIORITY|IMMEDIATE|FLASH").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.summary&&(e.summary=t.summary),t.reference&&(e.reference=t.reference),t.mission&&(e.missionId=t.mission),t.leadAnalyst&&(e.leadAnalystId=t.leadAnalyst),t.priority&&(e.priority=t.priority.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.tags&&(e.tags=l(t.tags));let n=await a(j,{input:e});c(`Case created: ${n.intCreateCase.title}`),s(t,n.intCreateCase);}catch(e){o(e);}}),i.command("close").description("Close a case").argument("<id>","Case ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(B,{id:t});c("Case closed"),s(e,n.intCloseCase);}catch(n){o(n);}}),i.command("add-entry").description("Add an entry to a case log").requiredOption("--case <id>","Case ID").requiredOption("--kind <k>","Entry kind (e.g. note, evidence, action)").requiredOption("--body <text>","Entry body").option("--file <id>","Evidence file ID (wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={caseId:t.case,kind:t.kind,body:t.body};t.file&&(e.fileId=t.file);let n=await a(Y,{input:e});c("Case entry added"),s(t,n.intAddCaseEntry);}catch(e){o(e);}});}function ft(r){let i=r.command("requirements").description("IntelWatchtower collection requirements");i.command("list").description("List collection requirements").option("--mission <id>","Filter by mission ID").option("--status <s>","DRAFT|SUBMITTED|APPROVED|TASKED|SATISFIED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(z,{missionId:t.mission,status:t.status?t.status.toUpperCase():void 0});s(t,e.intListRequirements,{headers:["ID","Title","Classification","Priority","Status"],rows:e.intListRequirements.map(n=>[u(n.id,12),n.title,n.classification,n.priority,n.status])});}catch(e){o(e);}}),i.command("create").description("Create a collection requirement").requiredOption("--title <t>","Requirement title").option("--description <s>","Description").option("--mission <id>","Mission ID").option("--requested-by <id>","Requesting user ID").option("--priority <p>","ROUTINE|PRIORITY|IMMEDIATE|FLASH").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--due-date <iso>","Due date (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.mission&&(e.missionId=t.mission),t.requestedBy&&(e.requestedById=t.requestedBy),t.priority&&(e.priority=t.priority.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=l(t.tags));let n=await a(K,{input:e});c(`Requirement created: ${n.intCreateRequirement.title}`),s(t,n.intCreateRequirement);}catch(e){o(e);}});}function gt(r){let i=r.command("tasks").description("IntelWatchtower collection tasks (taskings)");i.command("list").description("List collection tasks").option("--source <id>","Filter by source ID").option("--requirement <id>","Filter by requirement ID").option("--status <s>","PENDING|DISPATCHED|COLLECTING|COMPLETED|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(J,{sourceId:t.source,requirementId:t.requirement,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListTasks.items,{headers:["ID","Source","Requirement","Status"],rows:e.intListTasks.items.map(n=>[u(n.id,12),u(n.sourceId,12),n.requirementId?u(n.requirementId,12):"-",n.status])});}catch(e){o(e);}}),i.command("create").description("Create a collection task against a source").requiredOption("--source <id>","Source ID").option("--requirement <id>","Requirement ID").option("--instructions <s>","Tasking instructions").option("--start-at <iso>","Start (ISO date)").option("--end-at <iso>","End (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={sourceId:t.source};t.requirement&&(e.requirementId=t.requirement),t.instructions&&(e.instructions=t.instructions),t.startAt&&(e.startAt=t.startAt),t.endAt&&(e.endAt=t.endAt);let n=await a(Q,{input:e});c(`Task created: ${n.intCreateTask.id}`),s(t,n.intCreateTask);}catch(e){o(e);}}),i.command("transition").description("Advance a collection task to a new status").argument("<id>","Task ID").requiredOption("--status <s>","PENDING|DISPATCHED|COLLECTING|COMPLETED|FAILED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(X,{id:t,status:e.status.toUpperCase()});c(`Task status set to ${n.intTransitionTask.status}`),s(e,n.intTransitionTask);}catch(n){o(n);}});}function It(r){let i=r.command("observations").description("IntelWatchtower observations (collected reporting)");i.command("list").description("List observations").option("--entity <id>","Filter by entity ID").option("--source <id>","Filter by source ID").option("--task <id>","Filter by task ID").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(Z,{entityId:t.entity,sourceId:t.source,taskId:t.task,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListObservations.items,{headers:["ID","Source","Classification","Summary"],rows:e.intListObservations.items.map(n=>[u(n.id,12),u(n.sourceId,12),n.classification,u(n.summary,40)])});}catch(e){o(e);}}),i.command("record").description("Record an observation").requiredOption("--source <id>","Source ID").requiredOption("--summary <s>","Observation summary").requiredOption("--observed-at <iso>","Observed at (ISO date)").option("--entity <id>","Associated entity ID").option("--task <id>","Associated task ID").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--latitude <n>","Latitude",g).option("--longitude <n>","Longitude",g).option("--payload <json>","Payload JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={sourceId:t.source,summary:t.summary,observedAt:t.observedAt};t.entity&&(e.entityId=t.entity),t.task&&(e.taskId=t.task),t.classification&&(e.classification=t.classification.toUpperCase()),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.payload&&(e.payload=E("payload",t.payload));let n=await a(tt,{input:e});c(`Observation recorded: ${n.intRecordObservation.id}`),s(t,n.intRecordObservation);}catch(e){o(e);}});}function Ct(r){let i=r.command("alerts").description("IntelWatchtower alerts");i.command("list").description("List alerts").option("--entity <id>","Filter by entity ID").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--status <s>","OPEN|TRIAGED|ESCALATED|RESOLVED|FALSE_POSITIVE|SUPPRESSED").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(et,{entityId:t.entity,severity:t.severity?t.severity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListAlerts.items,{headers:["ID","Title","Severity","Status","Classification"],rows:e.intListAlerts.items.map(n=>[u(n.id,12),n.title,n.severity,n.status,n.classification])});}catch(e){o(e);}}),i.command("raise").description("Raise a new alert").requiredOption("--title <t>","Alert title").option("--description <s>","Description").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--entity <id>","Associated entity ID").option("--indicator <id>","Associated indicator ID").option("--mission <id>","Associated mission ID").option("--assigned-to <id>","Assignee user ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.severity&&(e.severity=t.severity.toUpperCase()),t.classification&&(e.classification=t.classification.toUpperCase()),t.entity&&(e.entityId=t.entity),t.indicator&&(e.indicatorId=t.indicator),t.mission&&(e.missionId=t.mission),t.assignedTo&&(e.assignedToId=t.assignedTo);let n=await a(nt,{input:e});c(`Alert raised: ${n.intRaiseAlert.title}`),s(t,n.intRaiseAlert);}catch(e){o(e);}}),i.command("transition").description("Triage an alert through its lifecycle").argument("<id>","Alert ID").requiredOption("--status <s>","OPEN|TRIAGED|ESCALATED|RESOLVED|FALSE_POSITIVE|SUPPRESSED").option("--triage-notes <s>","Triage notes").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(it,{id:t,status:e.status.toUpperCase(),triageNotes:e.triageNotes});c(`Alert status set to ${n.intTransitionAlert.status}`),s(e,n.intTransitionAlert);}catch(n){o(n);}});}function yt(r){let i=r.command("reports").description("IntelWatchtower intelligence reports");i.command("list").description("List reports").option("--mission <id>","Filter by mission ID").option("--type <t>","SITREP|INTSUM|SPOT_REPORT|ASSESSMENT|WARNING").option("--status <s>","DRAFT|IN_REVIEW|RELEASED|RECALLED|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(rt,{missionId:t.mission,type:t.type?t.type.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.intListReports.items,{headers:["ID","Title","Type","Classification","Status"],rows:e.intListReports.items.map(n=>[u(n.id,12),n.title,n.type,n.classification,n.status])});}catch(e){o(e);}}),i.command("create").description("Create an intelligence report").requiredOption("--title <t>","Report title").option("--type <t>","SITREP|INTSUM|SPOT_REPORT|ASSESSMENT|WARNING").option("--summary <s>","Summary").option("--body <s>","Body").option("--author <id>","Author user ID").option("--case <id>","Associated case ID").option("--mission <id>","Associated mission ID").option("--file <id>","Rendered product file ID (wspace-files-svc)").option("--classification <c>","UNCLASSIFIED|CONFIDENTIAL|SECRET|TOP_SECRET").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.type&&(e.type=t.type.toUpperCase()),t.summary&&(e.summary=t.summary),t.body&&(e.body=t.body),t.author&&(e.authorId=t.author),t.case&&(e.caseId=t.case),t.mission&&(e.missionId=t.mission),t.file&&(e.fileId=t.file),t.classification&&(e.classification=t.classification.toUpperCase()),t.tags&&(e.tags=l(t.tags));let n=await a(ot,{input:e});c(`Report created: ${n.intCreateReport.title}`),s(t,n.intCreateReport);}catch(e){o(e);}}),i.command("release").description("Release a report").argument("<id>","Report ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t});c("Report released"),s(e,n.intReleaseReport);}catch(n){o(n);}});}function Et(r){r.command("health").description("IntelWatchtower service health check (public)").option("-f, --format <format>","Output format").action(async i=>{try{let t=await w(at);c(t.intHealth),s(i,{health:t.intHealth});}catch(t){o(t);}});}var xt={id:"intelwatchtower",version:"1.0.0",displayName:"IntelWatchtower",dependsOn:["auth","workspaces"],register(r,i){h(i);let t=r.command("intelwatchtower").description("IntelWatchtower intelligence operations platform");ct(t),dt(t),ut(t),pt(t),mt(t),lt(t),ft(t),gt(t),It(t),Ct(t),yt(t),Et(t);}},Un=xt;module.exports=Un;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h as h$1,p as p$1,g as g$1,i,d}from'../../chunk-
|
|
1
|
+
import {a,b as b$1,h as h$1,p as p$1,g as g$1,i,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var A=`
|
|
2
2
|
query IntSource($id: ID!) {
|
|
3
3
|
intSource(id: $id) {
|
|
4
4
|
id classification codename createdAt description discipline lastSeenAt
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a as a$1,b as b$1,h as h$1,p,g as g$1,i,o as o$1,d}from'../../chunk-
|
|
1
|
+
import {a as a$1,b as b$1,h as h$1,p,g as g$1,i,o as o$1,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var w=`
|
|
2
2
|
query KadaikodiGetServiceProvider($id: ID!) {
|
|
3
3
|
getServiceProvider(id: $id) {
|
|
4
4
|
id ownerId name slug description category status location
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
id experimentId runNumber status observations notes completedAt updatedAt
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
`,
|
|
100
|
+
`,V=`
|
|
101
101
|
query LabListNotebookEntries(
|
|
102
102
|
$experimentId: ID
|
|
103
103
|
$projectId: ID
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
pageInfo { cursor hasMore }
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
`,
|
|
120
|
+
`,F=`
|
|
121
121
|
mutation LabCreateNotebookEntry($input: LabCreateNotebookEntryInput!) {
|
|
122
122
|
labCreateNotebookEntry(input: $input) {
|
|
123
123
|
id workspaceId projectId experimentId runId title body status
|
|
@@ -340,4 +340,4 @@
|
|
|
340
340
|
query LabHealth {
|
|
341
341
|
labHealth
|
|
342
342
|
}
|
|
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;
|
|
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(V,{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(F,{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;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-
|
|
1
|
+
import {a,b,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var P=`
|
|
2
2
|
query LabProject($id: ID!) {
|
|
3
3
|
labProject(id: $id) {
|
|
4
4
|
id workspaceId name code description field status visibility
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-
|
|
1
|
+
import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var R=`
|
|
2
2
|
query ManGetWorkCenter($id: ID!) {
|
|
3
3
|
manWorkCenter(id: $id) {
|
|
4
4
|
id code name type description capacityHours idealRunRate isActive
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h as h$1,p,g,i}from'../../chunk-
|
|
1
|
+
import {a,b as b$1,h as h$1,p,g,i}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var D=`
|
|
2
2
|
query MovethewheelsGetCustomer($id: ID!) {
|
|
3
3
|
customer(id: $id) {
|
|
4
4
|
id name email phone company type taxId businessLicense address rating
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var p=class extends Error{exitCode;hint;constructor(n,e){super(n),this.name="CliUserError",this.exitCode=e?.exitCode??1,this.hint=e?.hint;}},h=class extends p{constructor(n,e){super(n,{exitCode:2,hint:e?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},b=class extends Error{cause;constructor(n,e){super(n),this.name="CliInternalError",this.cause=e;}};var C=null;function E(o){C=o;}function I(){if(!C)throw new b("vibecontrols module helpers used before setHelpersContext was called");return C}function De(){let o=I();if(!o.auth.isAuthenticated())throw new h("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function c(o,n){return De(),I().gql.workspace.request(o,n)}async function w(o,n){return I().gql.workspaceAuthOnly.request(o,n)}function
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var p=class extends Error{exitCode;hint;constructor(n,e){super(n),this.name="CliUserError",this.exitCode=e?.exitCode??1,this.hint=e?.hint;}},h=class extends p{constructor(n,e){super(n,{exitCode:2,hint:e?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},b=class extends Error{cause;constructor(n,e){super(n),this.name="CliInternalError",this.cause=e;}};var C=null;function E(o){C=o;}function I(){if(!C)throw new b("vibecontrols module helpers used before setHelpersContext was called");return C}function De(){let o=I();if(!o.auth.isAuthenticated())throw new h("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function c(o,n){return De(),I().gql.workspace.request(o,n)}async function w(o,n){return I().gql.workspaceAuthOnly.request(o,n)}function s(o){let n=o instanceof Error?o.message:String(o);throw new p(n)}function a(o,n,e){I().output.formatAndOutput(o,n,e);}function d(o){I().output.printSuccess(o);}function y(o){return I().output.formatDate(o)}function m(o,n){return I().output.truncate(o,n)}var S=`
|
|
2
2
|
query MybListPrograms(
|
|
3
3
|
$memberId: ID
|
|
4
4
|
$status: MybProgramStatus
|
|
@@ -268,14 +268,14 @@
|
|
|
268
268
|
shareMetrics notes createdAt workspaceId
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
|
-
`,
|
|
271
|
+
`,se=`
|
|
272
272
|
mutation MybTransitionCoaching($id: ID!, $status: MybCoachingStatus!) {
|
|
273
273
|
mybTransitionCoaching(id: $id, status: $status) {
|
|
274
274
|
id coachId memberId status startedAt endedAt updatedAt
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
|
-
`,
|
|
277
|
+
`,ae=`
|
|
278
278
|
query MybHealth {
|
|
279
279
|
mybHealth
|
|
280
280
|
}
|
|
281
|
-
`;function i(o){let n=Number.parseInt(o,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${o}"`);return n}function l(o){let n=Number.parseFloat(o);if(Number.isNaN(n))throw new p(`Expected a number but got "${o}"`);return n}function k(o){return o.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function ce(o){let n=o.command("programs").description("Mybodyshield training programs");n.command("list").description("List training programs").option("--member <id>","Filter by member ID").option("--status <s>","DRAFT|ACTIVE|COMPLETED|ARCHIVED").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(S,{memberId:e.member,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.mybListPrograms.items,{headers:["ID","Name","Goal","Level","Phase","Status"],rows:t.mybListPrograms.items.map(r=>[m(r.id,12),r.name,r.goalType,r.level,r.phase,r.status])});}catch(t){a(t);}}),n.command("get").description("Get a training program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(x,{id:e});if(!r.mybProgram)throw new p(`Program ${e} not found`);s(t,r.mybProgram);}catch(r){a(r);}}),n.command("workouts").description("List workouts for a program").argument("<programId>","Program ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(O,{programId:e});s(t,r.mybProgramWorkouts,{headers:["ID","Name","Type","Day","Week","Duration"],rows:r.mybProgramWorkouts.map(g=>[m(g.id,12),g.name,g.type,g.dayOfWeek!=null?String(g.dayOfWeek):"-",g.weekNumber!=null?String(g.weekNumber):"-",g.durationMin!=null?String(g.durationMin):"-"])});}catch(r){a(r);}}),n.command("create").description("Create a training program").requiredOption("--name <name>","Program name").option("--member <id>","Member ID").option("--coach <id>","Coach ID").option("--description <s>","Description").option("--goal-type <t>","WEIGHT_LOSS|MUSCLE_GAIN|STRENGTH|ENDURANCE|MOBILITY|GENERAL_FITNESS").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|ELITE").option("--phase <p>","BUILD|PEAK|DELOAD|MAINTENANCE").option("--weeks <n>","Number of weeks",i).option("--days-per-week <n>","Days per week",i).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.member&&(t.memberId=e.member),e.coach&&(t.coachId=e.coach),e.description&&(t.description=e.description),e.goalType&&(t.goalType=e.goalType.toUpperCase()),e.level&&(t.level=e.level.toUpperCase()),e.phase&&(t.phase=e.phase.toUpperCase()),e.weeks!==void 0&&(t.weeks=e.weeks),e.daysPerWeek!==void 0&&(t.daysPerWeek=e.daysPerWeek),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.tags&&(t.tags=k(e.tags));let r=await c(D,{input:t});d(`Program created: ${r.mybCreateProgram.name}`),s(e,r.mybCreateProgram);}catch(t){a(t);}}),n.command("update").description("Update a training program").argument("<id>","Program ID").option("--name <name>","Program name").option("--description <s>","Description").option("--goal-type <t>","Goal type").option("--level <l>","Fitness level").option("--phase <p>","Program phase").option("--weeks <n>","Number of weeks",i).option("--days-per-week <n>","Days per week",i).option("--coach <id>","Coach ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.goalType&&(r.goalType=t.goalType.toUpperCase()),t.level&&(r.level=t.level.toUpperCase()),t.phase&&(r.phase=t.phase.toUpperCase()),t.weeks!==void 0&&(r.weeks=t.weeks),t.daysPerWeek!==void 0&&(r.daysPerWeek=t.daysPerWeek),t.coach&&(r.coachId=t.coach),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),t.tags&&(r.tags=k(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let g=await c(v,{id:e,input:r});d("Program updated"),s(t,g.mybUpdateProgram);}catch(r){a(r);}}),n.command("transition").description("Advance a program through its lifecycle").argument("<id>","Program ID").requiredOption("--status <s>","DRAFT|ACTIVE|COMPLETED|ARCHIVED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(R,{id:e,status:t.status.toUpperCase()});d(`Program transitioned to ${r.mybTransitionProgram.status}`),s(t,r.mybTransitionProgram);}catch(r){a(r);}}),n.command("archive").description("Archive a training program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(P,{id:e});d(r.mybArchiveProgram?"Program archived":"Program not archived"),s(t,{archived:r.mybArchiveProgram});}catch(r){a(r);}});}function de(o){let n=o.command("workouts").description("Mybodyshield workouts & exercises");n.command("add").description("Add a workout to a program").requiredOption("--program <id>","Program ID").requiredOption("--name <name>","Workout name").option("--description <s>","Description").option("--type <t>","STRENGTH|CARDIO|HIIT|MOBILITY|RECOVERY|YOGA").option("--day-of-week <n>","Day of week (0-6)",i).option("--week-number <n>","Week number",i).option("--duration-min <n>","Duration (minutes)",i).option("--order-index <n>","Order index",i).option("-f, --format <format>","Output format").action(async e=>{try{let t={programId:e.program,name:e.name};e.description&&(t.description=e.description),e.type&&(t.type=e.type.toUpperCase()),e.dayOfWeek!==void 0&&(t.dayOfWeek=e.dayOfWeek),e.weekNumber!==void 0&&(t.weekNumber=e.weekNumber),e.durationMin!==void 0&&(t.durationMin=e.durationMin),e.orderIndex!==void 0&&(t.orderIndex=e.orderIndex);let r=await c(M,{input:t});d(`Workout added: ${r.mybAddWorkout.name}`),s(e,r.mybAddWorkout);}catch(t){a(t);}}),n.command("add-exercise").description("Add an exercise to a workout").requiredOption("--workout <id>","Workout ID").requiredOption("--name <name>","Exercise name").option("--muscle-group <g>","CHEST|BACK|LEGS|SHOULDERS|ARMS|CORE|FULL_BODY").option("--sets <n>","Sets",i).option("--reps <n>","Reps",i).option("--rest-seconds <n>","Rest (seconds)",i).option("--target-weight <n>","Target weight",l).option("--order-index <n>","Order index",i).option("--instructions <s>","Instructions").option("--demo-file-id <id>","Demo file ID").option("-f, --format <format>","Output format").action(async e=>{try{let t={workoutId:e.workout,name:e.name};e.muscleGroup&&(t.muscleGroup=e.muscleGroup.toUpperCase()),e.sets!==void 0&&(t.sets=e.sets),e.reps!==void 0&&(t.reps=e.reps),e.restSeconds!==void 0&&(t.restSeconds=e.restSeconds),e.targetWeight!==void 0&&(t.targetWeight=e.targetWeight),e.orderIndex!==void 0&&(t.orderIndex=e.orderIndex),e.instructions&&(t.instructions=e.instructions),e.demoFileId&&(t.demoFileId=e.demoFileId);let r=await c(N,{input:t});d(`Exercise added: ${r.mybAddExercise.name}`),s(e,r.mybAddExercise);}catch(t){a(t);}});}function ue(o){let n=o.command("sessions").description("Mybodyshield workout sessions");n.command("list").description("List workout sessions").option("--program <id>","Filter by program ID").option("--status <s>","SCHEDULED|IN_PROGRESS|COMPLETED|SKIPPED").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(L,{programId:e.program,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.mybListSessions.items,{headers:["ID","Member","Status","Scheduled","Started"],rows:t.mybListSessions.items.map(r=>[m(r.id,12),m(r.memberId,12),r.status,y(r.scheduledFor),y(r.startedAt)])});}catch(t){a(t);}}),n.command("get").description("Get a workout session by id").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c($,{id:e});if(!r.mybSession)throw new p(`Session ${e} not found`);s(t,r.mybSession);}catch(r){a(r);}}),n.command("start").description("Start a workout session").option("--program <id>","Program ID").option("--workout <id>","Workout ID").option("--scheduled-for <iso>","Scheduled time (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.program&&(t.programId=e.program),e.workout&&(t.workoutId=e.workout),e.scheduledFor&&(t.scheduledFor=e.scheduledFor),e.notes&&(t.notes=e.notes);let r=await c(G,{input:t});d(`Session started: ${m(r.mybStartSession.id,12)}`),s(e,r.mybStartSession);}catch(t){a(t);}}),n.command("log-set").description("Log a set within a session").requiredOption("--session <id>","Session ID").requiredOption("--exercise-name <name>","Exercise name").option("--set-number <n>","Set number",i).option("--reps <n>","Reps",i).option("--weight <n>","Weight",l).option("--distance-m <n>","Distance (meters)",l).option("--duration-sec <n>","Duration (seconds)",i).option("--personal-record","Mark as a personal record").option("-f, --format <format>","Output format").action(async e=>{try{let t={sessionId:e.session,exerciseName:e.exerciseName};e.setNumber!==void 0&&(t.setNumber=e.setNumber),e.reps!==void 0&&(t.reps=e.reps),e.weight!==void 0&&(t.weight=e.weight),e.distanceM!==void 0&&(t.distanceM=e.distanceM),e.durationSec!==void 0&&(t.durationSec=e.durationSec),e.personalRecord&&(t.isPersonalRecord=!0);let r=await c(_,{input:t});d(`Set logged for ${r.mybLogSet.exerciseName}`),s(e,r.mybLogSet);}catch(t){a(t);}}),n.command("complete").description("Complete a workout session").argument("<id>","Session ID").option("--calories-burned <n>","Calories burned",i).option("--perceived-exertion <n>","Perceived exertion (1-10)",i).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};t.caloriesBurned!==void 0&&(r.caloriesBurned=t.caloriesBurned),t.perceivedExertion!==void 0&&(r.perceivedExertion=t.perceivedExertion),t.notes&&(r.notes=t.notes);let g=await c(W,{id:e,input:r});d("Session completed"),s(t,g.mybCompleteSession);}catch(r){a(r);}});}function pe(o){let n=o.command("goals").description("Mybodyshield fitness goals");n.command("list").description("List fitness goals").option("--member <id>","Filter by member ID").option("--status <s>","ACTIVE|ACHIEVED|PAUSED|ABANDONED").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(U,{memberId:e.member,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.mybListGoals.items,{headers:["ID","Title","Type","Status","Current","Target"],rows:t.mybListGoals.items.map(r=>[m(r.id,12),r.title,r.type,r.status,`${r.currentValue??0}${r.unit?` ${r.unit}`:""}`,`${r.targetValue??0}${r.unit?` ${r.unit}`:""}`])});}catch(t){a(t);}}),n.command("get").description("Get a goal by id").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(q,{id:e});if(!r.mybGoal)throw new p(`Goal ${e} not found`);s(t,r.mybGoal);}catch(r){a(r);}}),n.command("create").description("Create a fitness goal").requiredOption("--title <t>","Goal title").option("--member <id>","Member ID").option("--type <t>","WEIGHT_LOSS|MUSCLE_GAIN|STRENGTH|ENDURANCE|MOBILITY|GENERAL_FITNESS").option("--description <s>","Description").option("--target-value <n>","Target value",l).option("--baseline-value <n>","Baseline value",l).option("--unit <u>","Unit").option("--target-date <iso>","Target date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title};e.member&&(t.memberId=e.member),e.type&&(t.type=e.type.toUpperCase()),e.description&&(t.description=e.description),e.targetValue!==void 0&&(t.targetValue=e.targetValue),e.baselineValue!==void 0&&(t.baselineValue=e.baselineValue),e.unit&&(t.unit=e.unit),e.targetDate&&(t.targetDate=e.targetDate);let r=await c(F,{input:t});d(`Goal created: ${r.mybCreateGoal.title}`),s(e,r.mybCreateGoal);}catch(t){a(t);}}),n.command("update").description("Update a fitness goal").argument("<id>","Goal ID").option("--title <t>","Goal title").option("--type <t>","Goal type").option("--description <s>","Description").option("--target-value <n>","Target value",l).option("--current-value <n>","Current value",l).option("--baseline-value <n>","Baseline value",l).option("--unit <u>","Unit").option("--target-date <iso>","Target date (ISO)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.type&&(r.type=t.type.toUpperCase()),t.description!==void 0&&(r.description=t.description),t.targetValue!==void 0&&(r.targetValue=t.targetValue),t.currentValue!==void 0&&(r.currentValue=t.currentValue),t.baselineValue!==void 0&&(r.baselineValue=t.baselineValue),t.unit&&(r.unit=t.unit),t.targetDate&&(r.targetDate=t.targetDate),!Object.keys(r).length)throw new p("No updates specified");let g=await c(V,{id:e,input:r});d("Goal updated"),s(t,g.mybUpdateGoal);}catch(r){a(r);}}),n.command("achieve").description("Mark a goal as achieved").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(H,{id:e});d(`Goal achieved: ${r.mybAchieveGoal.title}`),s(t,r.mybAchieveGoal);}catch(r){a(r);}});}function me(o){let n=o.command("metrics").description("Mybodyshield body metrics");n.command("list").description("List body metrics").option("--member <id>","Filter by member ID").option("--type <t>","WEIGHT|BODY_FAT|CHEST|WAIST|HIPS|THIGH|ARM|RESTING_HEART_RATE").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(B,{memberId:e.member,type:e.type?e.type.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.mybListBodyMetrics.items,{headers:["ID","Type","Value","Unit","Measured"],rows:t.mybListBodyMetrics.items.map(r=>[m(r.id,12),r.type,String(r.value),r.unit,y(r.measuredAt)])});}catch(t){a(t);}}),n.command("record").description("Record a body metric").requiredOption("--type <t>","WEIGHT|BODY_FAT|CHEST|WAIST|HIPS|THIGH|ARM|RESTING_HEART_RATE").requiredOption("--value <n>","Measured value",l).option("--member <id>","Member ID").option("--unit <u>","Unit").option("--measured-at <iso>","Measured at (ISO)").option("--notes <s>","Notes").option("--photo-file-id <id>","Progress photo file ID").option("-f, --format <format>","Output format").action(async e=>{try{let t={type:e.type.toUpperCase(),value:e.value};e.member&&(t.memberId=e.member),e.unit&&(t.unit=e.unit),e.measuredAt&&(t.measuredAt=e.measuredAt),e.notes&&(t.notes=e.notes),e.photoFileId&&(t.photoFileId=e.photoFileId);let r=await c(j,{input:t});d(`Metric recorded: ${r.mybRecordBodyMetric.type}`),s(e,r.mybRecordBodyMetric);}catch(t){a(t);}});}function ge(o){let n=o.command("nutrition").description("Mybodyshield nutrition plans");n.command("get").description("Get a nutrition plan by id").argument("<id>","Plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(Y,{id:e});if(!r.mybNutritionPlan)throw new p(`Nutrition plan ${e} not found`);s(t,r.mybNutritionPlan);}catch(r){a(r);}}),n.command("active").description("Get a member's active nutrition plan").option("--member <id>","Member ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(z,{memberId:e.member});if(!t.mybActiveNutritionPlan)throw new p("No active nutrition plan found");s(e,t.mybActiveNutritionPlan);}catch(t){a(t);}}),n.command("macros").description("Roll up a member's logged meals for a day against the active plan").option("--member <id>","Member ID").option("--date <iso>","Date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(K,{memberId:e.member,date:e.date});s(e,t.mybDailyMacros);}catch(t){a(t);}}),n.command("create").description("Create a nutrition plan").requiredOption("--name <name>","Plan name").option("--member <id>","Member ID").option("--coach <id>","Coach ID").option("--goal-type <t>","WEIGHT_LOSS|MUSCLE_GAIN|STRENGTH|ENDURANCE|MOBILITY|GENERAL_FITNESS").option("--calorie-target <n>","Calorie target",i).option("--protein-target <n>","Protein target (g)",i).option("--carbs-target <n>","Carbs target (g)",i).option("--fat-target <n>","Fat target (g)",i).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.member&&(t.memberId=e.member),e.coach&&(t.coachId=e.coach),e.goalType&&(t.goalType=e.goalType.toUpperCase()),e.calorieTarget!==void 0&&(t.calorieTarget=e.calorieTarget),e.proteinTarget!==void 0&&(t.proteinTarget=e.proteinTarget),e.carbsTarget!==void 0&&(t.carbsTarget=e.carbsTarget),e.fatTarget!==void 0&&(t.fatTarget=e.fatTarget),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.notes&&(t.notes=e.notes);let r=await c(J,{input:t});d(`Nutrition plan created: ${r.mybCreateNutritionPlan.name}`),s(e,r.mybCreateNutritionPlan);}catch(t){a(t);}}),n.command("update").description("Update a nutrition plan").argument("<id>","Plan ID").option("--name <name>","Plan name").option("--goal-type <t>","Goal type").option("--calorie-target <n>","Calorie target",i).option("--protein-target <n>","Protein target (g)",i).option("--carbs-target <n>","Carbs target (g)",i).option("--fat-target <n>","Fat target (g)",i).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.goalType&&(r.goalType=t.goalType.toUpperCase()),t.calorieTarget!==void 0&&(r.calorieTarget=t.calorieTarget),t.proteinTarget!==void 0&&(r.proteinTarget=t.proteinTarget),t.carbsTarget!==void 0&&(r.carbsTarget=t.carbsTarget),t.fatTarget!==void 0&&(r.fatTarget=t.fatTarget),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),t.notes!==void 0&&(r.notes=t.notes),!Object.keys(r).length)throw new p("No updates specified");let g=await c(Q,{id:e,input:r});d("Nutrition plan updated"),s(t,g.mybUpdateNutritionPlan);}catch(r){a(r);}}),n.command("activate").description("Activate a nutrition plan").argument("<id>","Plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(X,{id:e});d(`Nutrition plan activated: ${r.mybActivateNutritionPlan.name}`),s(t,r.mybActivateNutritionPlan);}catch(r){a(r);}});}function le(o){let n=o.command("meals").description("Mybodyshield meal logs");n.command("list").description("List logged meals").option("--meal-type <t>","BREAKFAST|LUNCH|DINNER|SNACK").option("--plan <id>","Filter by nutrition plan ID").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(Z,{mealType:e.mealType?e.mealType.toUpperCase():void 0,planId:e.plan,pagination:{limit:e.limit,offset:e.offset}});s(e,t.mybListMeals.items,{headers:["ID","Name","Meal","Calories","Protein"],rows:t.mybListMeals.items.map(r=>[m(r.id,12),r.name,r.mealType,String(r.calories??0),`${r.proteinG??0}g`])});}catch(t){a(t);}}),n.command("log").description("Log a meal").requiredOption("--name <name>","Meal name").option("--meal-type <t>","BREAKFAST|LUNCH|DINNER|SNACK").option("--plan <id>","Nutrition plan ID").option("--calories <n>","Calories",i).option("--protein-g <n>","Protein (g)",i).option("--carbs-g <n>","Carbs (g)",i).option("--fat-g <n>","Fat (g)",i).option("--servings <n>","Servings",l).option("--favorite","Mark as favorite").option("--logged-at <iso>","Logged at (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.mealType&&(t.mealType=e.mealType.toUpperCase()),e.plan&&(t.planId=e.plan),e.calories!==void 0&&(t.calories=e.calories),e.proteinG!==void 0&&(t.proteinG=e.proteinG),e.carbsG!==void 0&&(t.carbsG=e.carbsG),e.fatG!==void 0&&(t.fatG=e.fatG),e.servings!==void 0&&(t.servings=e.servings),e.favorite&&(t.isFavorite=!0),e.loggedAt&&(t.loggedAt=e.loggedAt);let r=await c(ee,{input:t});d(`Meal logged: ${r.mybLogMeal.name}`),s(e,r.mybLogMeal);}catch(t){a(t);}}),n.command("delete").description("Delete a logged meal").argument("<id>","Meal log ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(te,{id:e});d(r.mybDeleteMeal?"Meal deleted":"Meal not deleted"),s(t,{deleted:r.mybDeleteMeal});}catch(r){a(r);}});}function fe(o){let n=o.command("recovery").description("Mybodyshield recovery logs");n.command("list").description("List recovery logs").option("--member <id>","Filter by member ID").option("--metric <m>","READINESS|SLEEP|SORENESS|STRESS|MOOD").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(re,{memberId:e.member,metric:e.metric?e.metric.toUpperCase():void 0});s(e,t.mybListRecoveryLogs,{headers:["ID","Metric","Score","Sleep (h)","Logged"],rows:t.mybListRecoveryLogs.map(r=>[m(r.id,12),r.metric,String(r.score),r.sleepHours!=null?String(r.sleepHours):"-",y(r.loggedAt)])});}catch(t){a(t);}}),n.command("log").description("Log a recovery metric").option("--member <id>","Member ID").option("--metric <m>","READINESS|SLEEP|SORENESS|STRESS|MOOD").option("--score <n>","Score",i).option("--sleep-hours <n>","Sleep hours",l).option("--notes <s>","Notes").option("--logged-at <iso>","Logged at (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.member&&(t.memberId=e.member),e.metric&&(t.metric=e.metric.toUpperCase()),e.score!==void 0&&(t.score=e.score),e.sleepHours!==void 0&&(t.sleepHours=e.sleepHours),e.notes&&(t.notes=e.notes),e.loggedAt&&(t.loggedAt=e.loggedAt);let r=await c(ne,{input:t});d(`Recovery logged: ${r.mybLogRecovery.metric}`),s(e,r.mybLogRecovery);}catch(t){a(t);}});}function ye(o){let n=o.command("coaching").description("Mybodyshield coaching relationships");n.command("list").description("List coaching relationships").option("--member <id>","Filter by member ID").option("--status <s>","PENDING|ACTIVE|PAUSED|ENDED").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(oe,{memberId:e.member,status:e.status?e.status.toUpperCase():void 0});s(e,t.mybListCoaching,{headers:["ID","Coach","Member","Status","Specialty"],rows:t.mybListCoaching.map(r=>[m(r.id,12),m(r.coachId,12),m(r.memberId,12),r.status,r.specialty??"-"])});}catch(t){a(t);}}),n.command("create").description("Create a coaching relationship").requiredOption("--coach <id>","Coach ID").requiredOption("--member <id>","Member ID").option("--specialty <s>","Specialty").option("--share-workouts","Share workouts with the coach").option("--share-nutrition","Share nutrition with the coach").option("--share-metrics","Share body metrics with the coach").option("-f, --format <format>","Output format").action(async e=>{try{let t={coachId:e.coach,memberId:e.member};e.specialty&&(t.specialty=e.specialty),e.shareWorkouts&&(t.shareWorkouts=!0),e.shareNutrition&&(t.shareNutrition=!0),e.shareMetrics&&(t.shareMetrics=!0);let r=await c(ie,{input:t});d("Coaching relationship created"),s(e,r.mybCreateCoaching);}catch(t){a(t);}}),n.command("transition").description("Transition a coaching relationship status").argument("<id>","Coaching relationship ID").requiredOption("--status <s>","PENDING|ACTIVE|PAUSED|ENDED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(ae,{id:e,status:t.status.toUpperCase()});d(`Coaching transitioned to ${r.mybTransitionCoaching.status}`),s(t,r.mybTransitionCoaching);}catch(r){a(r);}});}function be(o){o.command("health").description("Mybodyshield service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await w(se);d(e.mybHealth),s(n,{health:e.mybHealth});}catch(e){a(e);}});}var ve={id:"mybodyshield",version:"1.0.0",displayName:"Mybodyshield",dependsOn:["auth","workspaces"],register(o,n){E(n);let e=o.command("mybodyshield").description("Mybodyshield fitness coaching platform");ce(e),de(e),ue(e),pe(e),me(e),ge(e),le(e),fe(e),ye(e),be(e);}},Sr=ve;module.exports=Sr;
|
|
281
|
+
`;function i(o){let n=Number.parseInt(o,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${o}"`);return n}function l(o){let n=Number.parseFloat(o);if(Number.isNaN(n))throw new p(`Expected a number but got "${o}"`);return n}function k(o){return o.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function ce(o){let n=o.command("programs").description("Mybodyshield training programs");n.command("list").description("List training programs").option("--member <id>","Filter by member ID").option("--status <s>","DRAFT|ACTIVE|COMPLETED|ARCHIVED").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(S,{memberId:e.member,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});a(e,t.mybListPrograms.items,{headers:["ID","Name","Goal","Level","Phase","Status"],rows:t.mybListPrograms.items.map(r=>[m(r.id,12),r.name,r.goalType,r.level,r.phase,r.status])});}catch(t){s(t);}}),n.command("get").description("Get a training program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(x,{id:e});if(!r.mybProgram)throw new p(`Program ${e} not found`);a(t,r.mybProgram);}catch(r){s(r);}}),n.command("workouts").description("List workouts for a program").argument("<programId>","Program ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(O,{programId:e});a(t,r.mybProgramWorkouts,{headers:["ID","Name","Type","Day","Week","Duration"],rows:r.mybProgramWorkouts.map(g=>[m(g.id,12),g.name,g.type,g.dayOfWeek!=null?String(g.dayOfWeek):"-",g.weekNumber!=null?String(g.weekNumber):"-",g.durationMin!=null?String(g.durationMin):"-"])});}catch(r){s(r);}}),n.command("create").description("Create a training program").requiredOption("--name <name>","Program name").option("--member <id>","Member ID").option("--coach <id>","Coach ID").option("--description <s>","Description").option("--goal-type <t>","WEIGHT_LOSS|MUSCLE_GAIN|STRENGTH|ENDURANCE|MOBILITY|GENERAL_FITNESS").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|ELITE").option("--phase <p>","BUILD|PEAK|DELOAD|MAINTENANCE").option("--weeks <n>","Number of weeks",i).option("--days-per-week <n>","Days per week",i).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.member&&(t.memberId=e.member),e.coach&&(t.coachId=e.coach),e.description&&(t.description=e.description),e.goalType&&(t.goalType=e.goalType.toUpperCase()),e.level&&(t.level=e.level.toUpperCase()),e.phase&&(t.phase=e.phase.toUpperCase()),e.weeks!==void 0&&(t.weeks=e.weeks),e.daysPerWeek!==void 0&&(t.daysPerWeek=e.daysPerWeek),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.tags&&(t.tags=k(e.tags));let r=await c(D,{input:t});d(`Program created: ${r.mybCreateProgram.name}`),a(e,r.mybCreateProgram);}catch(t){s(t);}}),n.command("update").description("Update a training program").argument("<id>","Program ID").option("--name <name>","Program name").option("--description <s>","Description").option("--goal-type <t>","Goal type").option("--level <l>","Fitness level").option("--phase <p>","Program phase").option("--weeks <n>","Number of weeks",i).option("--days-per-week <n>","Days per week",i).option("--coach <id>","Coach ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.goalType&&(r.goalType=t.goalType.toUpperCase()),t.level&&(r.level=t.level.toUpperCase()),t.phase&&(r.phase=t.phase.toUpperCase()),t.weeks!==void 0&&(r.weeks=t.weeks),t.daysPerWeek!==void 0&&(r.daysPerWeek=t.daysPerWeek),t.coach&&(r.coachId=t.coach),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),t.tags&&(r.tags=k(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let g=await c(v,{id:e,input:r});d("Program updated"),a(t,g.mybUpdateProgram);}catch(r){s(r);}}),n.command("transition").description("Advance a program through its lifecycle").argument("<id>","Program ID").requiredOption("--status <s>","DRAFT|ACTIVE|COMPLETED|ARCHIVED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(R,{id:e,status:t.status.toUpperCase()});d(`Program transitioned to ${r.mybTransitionProgram.status}`),a(t,r.mybTransitionProgram);}catch(r){s(r);}}),n.command("archive").description("Archive a training program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(P,{id:e});d(r.mybArchiveProgram?"Program archived":"Program not archived"),a(t,{archived:r.mybArchiveProgram});}catch(r){s(r);}});}function de(o){let n=o.command("workouts").description("Mybodyshield workouts & exercises");n.command("add").description("Add a workout to a program").requiredOption("--program <id>","Program ID").requiredOption("--name <name>","Workout name").option("--description <s>","Description").option("--type <t>","STRENGTH|CARDIO|HIIT|MOBILITY|RECOVERY|YOGA").option("--day-of-week <n>","Day of week (0-6)",i).option("--week-number <n>","Week number",i).option("--duration-min <n>","Duration (minutes)",i).option("--order-index <n>","Order index",i).option("-f, --format <format>","Output format").action(async e=>{try{let t={programId:e.program,name:e.name};e.description&&(t.description=e.description),e.type&&(t.type=e.type.toUpperCase()),e.dayOfWeek!==void 0&&(t.dayOfWeek=e.dayOfWeek),e.weekNumber!==void 0&&(t.weekNumber=e.weekNumber),e.durationMin!==void 0&&(t.durationMin=e.durationMin),e.orderIndex!==void 0&&(t.orderIndex=e.orderIndex);let r=await c(M,{input:t});d(`Workout added: ${r.mybAddWorkout.name}`),a(e,r.mybAddWorkout);}catch(t){s(t);}}),n.command("add-exercise").description("Add an exercise to a workout").requiredOption("--workout <id>","Workout ID").requiredOption("--name <name>","Exercise name").option("--muscle-group <g>","CHEST|BACK|LEGS|SHOULDERS|ARMS|CORE|FULL_BODY").option("--sets <n>","Sets",i).option("--reps <n>","Reps",i).option("--rest-seconds <n>","Rest (seconds)",i).option("--target-weight <n>","Target weight",l).option("--order-index <n>","Order index",i).option("--instructions <s>","Instructions").option("--demo-file-id <id>","Demo file ID").option("-f, --format <format>","Output format").action(async e=>{try{let t={workoutId:e.workout,name:e.name};e.muscleGroup&&(t.muscleGroup=e.muscleGroup.toUpperCase()),e.sets!==void 0&&(t.sets=e.sets),e.reps!==void 0&&(t.reps=e.reps),e.restSeconds!==void 0&&(t.restSeconds=e.restSeconds),e.targetWeight!==void 0&&(t.targetWeight=e.targetWeight),e.orderIndex!==void 0&&(t.orderIndex=e.orderIndex),e.instructions&&(t.instructions=e.instructions),e.demoFileId&&(t.demoFileId=e.demoFileId);let r=await c(N,{input:t});d(`Exercise added: ${r.mybAddExercise.name}`),a(e,r.mybAddExercise);}catch(t){s(t);}});}function ue(o){let n=o.command("sessions").description("Mybodyshield workout sessions");n.command("list").description("List workout sessions").option("--program <id>","Filter by program ID").option("--status <s>","SCHEDULED|IN_PROGRESS|COMPLETED|SKIPPED").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(L,{programId:e.program,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});a(e,t.mybListSessions.items,{headers:["ID","Member","Status","Scheduled","Started"],rows:t.mybListSessions.items.map(r=>[m(r.id,12),m(r.memberId,12),r.status,y(r.scheduledFor),y(r.startedAt)])});}catch(t){s(t);}}),n.command("get").description("Get a workout session by id").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c($,{id:e});if(!r.mybSession)throw new p(`Session ${e} not found`);a(t,r.mybSession);}catch(r){s(r);}}),n.command("start").description("Start a workout session").option("--program <id>","Program ID").option("--workout <id>","Workout ID").option("--scheduled-for <iso>","Scheduled time (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.program&&(t.programId=e.program),e.workout&&(t.workoutId=e.workout),e.scheduledFor&&(t.scheduledFor=e.scheduledFor),e.notes&&(t.notes=e.notes);let r=await c(G,{input:t});d(`Session started: ${m(r.mybStartSession.id,12)}`),a(e,r.mybStartSession);}catch(t){s(t);}}),n.command("log-set").description("Log a set within a session").requiredOption("--session <id>","Session ID").requiredOption("--exercise-name <name>","Exercise name").option("--set-number <n>","Set number",i).option("--reps <n>","Reps",i).option("--weight <n>","Weight",l).option("--distance-m <n>","Distance (meters)",l).option("--duration-sec <n>","Duration (seconds)",i).option("--personal-record","Mark as a personal record").option("-f, --format <format>","Output format").action(async e=>{try{let t={sessionId:e.session,exerciseName:e.exerciseName};e.setNumber!==void 0&&(t.setNumber=e.setNumber),e.reps!==void 0&&(t.reps=e.reps),e.weight!==void 0&&(t.weight=e.weight),e.distanceM!==void 0&&(t.distanceM=e.distanceM),e.durationSec!==void 0&&(t.durationSec=e.durationSec),e.personalRecord&&(t.isPersonalRecord=!0);let r=await c(_,{input:t});d(`Set logged for ${r.mybLogSet.exerciseName}`),a(e,r.mybLogSet);}catch(t){s(t);}}),n.command("complete").description("Complete a workout session").argument("<id>","Session ID").option("--calories-burned <n>","Calories burned",i).option("--perceived-exertion <n>","Perceived exertion (1-10)",i).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};t.caloriesBurned!==void 0&&(r.caloriesBurned=t.caloriesBurned),t.perceivedExertion!==void 0&&(r.perceivedExertion=t.perceivedExertion),t.notes&&(r.notes=t.notes);let g=await c(W,{id:e,input:r});d("Session completed"),a(t,g.mybCompleteSession);}catch(r){s(r);}});}function pe(o){let n=o.command("goals").description("Mybodyshield fitness goals");n.command("list").description("List fitness goals").option("--member <id>","Filter by member ID").option("--status <s>","ACTIVE|ACHIEVED|PAUSED|ABANDONED").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(U,{memberId:e.member,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});a(e,t.mybListGoals.items,{headers:["ID","Title","Type","Status","Current","Target"],rows:t.mybListGoals.items.map(r=>[m(r.id,12),r.title,r.type,r.status,`${r.currentValue??0}${r.unit?` ${r.unit}`:""}`,`${r.targetValue??0}${r.unit?` ${r.unit}`:""}`])});}catch(t){s(t);}}),n.command("get").description("Get a goal by id").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(q,{id:e});if(!r.mybGoal)throw new p(`Goal ${e} not found`);a(t,r.mybGoal);}catch(r){s(r);}}),n.command("create").description("Create a fitness goal").requiredOption("--title <t>","Goal title").option("--member <id>","Member ID").option("--type <t>","WEIGHT_LOSS|MUSCLE_GAIN|STRENGTH|ENDURANCE|MOBILITY|GENERAL_FITNESS").option("--description <s>","Description").option("--target-value <n>","Target value",l).option("--baseline-value <n>","Baseline value",l).option("--unit <u>","Unit").option("--target-date <iso>","Target date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title};e.member&&(t.memberId=e.member),e.type&&(t.type=e.type.toUpperCase()),e.description&&(t.description=e.description),e.targetValue!==void 0&&(t.targetValue=e.targetValue),e.baselineValue!==void 0&&(t.baselineValue=e.baselineValue),e.unit&&(t.unit=e.unit),e.targetDate&&(t.targetDate=e.targetDate);let r=await c(F,{input:t});d(`Goal created: ${r.mybCreateGoal.title}`),a(e,r.mybCreateGoal);}catch(t){s(t);}}),n.command("update").description("Update a fitness goal").argument("<id>","Goal ID").option("--title <t>","Goal title").option("--type <t>","Goal type").option("--description <s>","Description").option("--target-value <n>","Target value",l).option("--current-value <n>","Current value",l).option("--baseline-value <n>","Baseline value",l).option("--unit <u>","Unit").option("--target-date <iso>","Target date (ISO)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.type&&(r.type=t.type.toUpperCase()),t.description!==void 0&&(r.description=t.description),t.targetValue!==void 0&&(r.targetValue=t.targetValue),t.currentValue!==void 0&&(r.currentValue=t.currentValue),t.baselineValue!==void 0&&(r.baselineValue=t.baselineValue),t.unit&&(r.unit=t.unit),t.targetDate&&(r.targetDate=t.targetDate),!Object.keys(r).length)throw new p("No updates specified");let g=await c(V,{id:e,input:r});d("Goal updated"),a(t,g.mybUpdateGoal);}catch(r){s(r);}}),n.command("achieve").description("Mark a goal as achieved").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(H,{id:e});d(`Goal achieved: ${r.mybAchieveGoal.title}`),a(t,r.mybAchieveGoal);}catch(r){s(r);}});}function me(o){let n=o.command("metrics").description("Mybodyshield body metrics");n.command("list").description("List body metrics").option("--member <id>","Filter by member ID").option("--type <t>","WEIGHT|BODY_FAT|CHEST|WAIST|HIPS|THIGH|ARM|RESTING_HEART_RATE").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(B,{memberId:e.member,type:e.type?e.type.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});a(e,t.mybListBodyMetrics.items,{headers:["ID","Type","Value","Unit","Measured"],rows:t.mybListBodyMetrics.items.map(r=>[m(r.id,12),r.type,String(r.value),r.unit,y(r.measuredAt)])});}catch(t){s(t);}}),n.command("record").description("Record a body metric").requiredOption("--type <t>","WEIGHT|BODY_FAT|CHEST|WAIST|HIPS|THIGH|ARM|RESTING_HEART_RATE").requiredOption("--value <n>","Measured value",l).option("--member <id>","Member ID").option("--unit <u>","Unit").option("--measured-at <iso>","Measured at (ISO)").option("--notes <s>","Notes").option("--photo-file-id <id>","Progress photo file ID").option("-f, --format <format>","Output format").action(async e=>{try{let t={type:e.type.toUpperCase(),value:e.value};e.member&&(t.memberId=e.member),e.unit&&(t.unit=e.unit),e.measuredAt&&(t.measuredAt=e.measuredAt),e.notes&&(t.notes=e.notes),e.photoFileId&&(t.photoFileId=e.photoFileId);let r=await c(j,{input:t});d(`Metric recorded: ${r.mybRecordBodyMetric.type}`),a(e,r.mybRecordBodyMetric);}catch(t){s(t);}});}function ge(o){let n=o.command("nutrition").description("Mybodyshield nutrition plans");n.command("get").description("Get a nutrition plan by id").argument("<id>","Plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(Y,{id:e});if(!r.mybNutritionPlan)throw new p(`Nutrition plan ${e} not found`);a(t,r.mybNutritionPlan);}catch(r){s(r);}}),n.command("active").description("Get a member's active nutrition plan").option("--member <id>","Member ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(z,{memberId:e.member});if(!t.mybActiveNutritionPlan)throw new p("No active nutrition plan found");a(e,t.mybActiveNutritionPlan);}catch(t){s(t);}}),n.command("macros").description("Roll up a member's logged meals for a day against the active plan").option("--member <id>","Member ID").option("--date <iso>","Date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(K,{memberId:e.member,date:e.date});a(e,t.mybDailyMacros);}catch(t){s(t);}}),n.command("create").description("Create a nutrition plan").requiredOption("--name <name>","Plan name").option("--member <id>","Member ID").option("--coach <id>","Coach ID").option("--goal-type <t>","WEIGHT_LOSS|MUSCLE_GAIN|STRENGTH|ENDURANCE|MOBILITY|GENERAL_FITNESS").option("--calorie-target <n>","Calorie target",i).option("--protein-target <n>","Protein target (g)",i).option("--carbs-target <n>","Carbs target (g)",i).option("--fat-target <n>","Fat target (g)",i).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.member&&(t.memberId=e.member),e.coach&&(t.coachId=e.coach),e.goalType&&(t.goalType=e.goalType.toUpperCase()),e.calorieTarget!==void 0&&(t.calorieTarget=e.calorieTarget),e.proteinTarget!==void 0&&(t.proteinTarget=e.proteinTarget),e.carbsTarget!==void 0&&(t.carbsTarget=e.carbsTarget),e.fatTarget!==void 0&&(t.fatTarget=e.fatTarget),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.notes&&(t.notes=e.notes);let r=await c(J,{input:t});d(`Nutrition plan created: ${r.mybCreateNutritionPlan.name}`),a(e,r.mybCreateNutritionPlan);}catch(t){s(t);}}),n.command("update").description("Update a nutrition plan").argument("<id>","Plan ID").option("--name <name>","Plan name").option("--goal-type <t>","Goal type").option("--calorie-target <n>","Calorie target",i).option("--protein-target <n>","Protein target (g)",i).option("--carbs-target <n>","Carbs target (g)",i).option("--fat-target <n>","Fat target (g)",i).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.goalType&&(r.goalType=t.goalType.toUpperCase()),t.calorieTarget!==void 0&&(r.calorieTarget=t.calorieTarget),t.proteinTarget!==void 0&&(r.proteinTarget=t.proteinTarget),t.carbsTarget!==void 0&&(r.carbsTarget=t.carbsTarget),t.fatTarget!==void 0&&(r.fatTarget=t.fatTarget),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),t.notes!==void 0&&(r.notes=t.notes),!Object.keys(r).length)throw new p("No updates specified");let g=await c(Q,{id:e,input:r});d("Nutrition plan updated"),a(t,g.mybUpdateNutritionPlan);}catch(r){s(r);}}),n.command("activate").description("Activate a nutrition plan").argument("<id>","Plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(X,{id:e});d(`Nutrition plan activated: ${r.mybActivateNutritionPlan.name}`),a(t,r.mybActivateNutritionPlan);}catch(r){s(r);}});}function le(o){let n=o.command("meals").description("Mybodyshield meal logs");n.command("list").description("List logged meals").option("--meal-type <t>","BREAKFAST|LUNCH|DINNER|SNACK").option("--plan <id>","Filter by nutrition plan ID").option("--limit <n>","Page size",i,50).option("--offset <n>","Offset",i,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(Z,{mealType:e.mealType?e.mealType.toUpperCase():void 0,planId:e.plan,pagination:{limit:e.limit,offset:e.offset}});a(e,t.mybListMeals.items,{headers:["ID","Name","Meal","Calories","Protein"],rows:t.mybListMeals.items.map(r=>[m(r.id,12),r.name,r.mealType,String(r.calories??0),`${r.proteinG??0}g`])});}catch(t){s(t);}}),n.command("log").description("Log a meal").requiredOption("--name <name>","Meal name").option("--meal-type <t>","BREAKFAST|LUNCH|DINNER|SNACK").option("--plan <id>","Nutrition plan ID").option("--calories <n>","Calories",i).option("--protein-g <n>","Protein (g)",i).option("--carbs-g <n>","Carbs (g)",i).option("--fat-g <n>","Fat (g)",i).option("--servings <n>","Servings",l).option("--favorite","Mark as favorite").option("--logged-at <iso>","Logged at (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.mealType&&(t.mealType=e.mealType.toUpperCase()),e.plan&&(t.planId=e.plan),e.calories!==void 0&&(t.calories=e.calories),e.proteinG!==void 0&&(t.proteinG=e.proteinG),e.carbsG!==void 0&&(t.carbsG=e.carbsG),e.fatG!==void 0&&(t.fatG=e.fatG),e.servings!==void 0&&(t.servings=e.servings),e.favorite&&(t.isFavorite=!0),e.loggedAt&&(t.loggedAt=e.loggedAt);let r=await c(ee,{input:t});d(`Meal logged: ${r.mybLogMeal.name}`),a(e,r.mybLogMeal);}catch(t){s(t);}}),n.command("delete").description("Delete a logged meal").argument("<id>","Meal log ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(te,{id:e});d(r.mybDeleteMeal?"Meal deleted":"Meal not deleted"),a(t,{deleted:r.mybDeleteMeal});}catch(r){s(r);}});}function fe(o){let n=o.command("recovery").description("Mybodyshield recovery logs");n.command("list").description("List recovery logs").option("--member <id>","Filter by member ID").option("--metric <m>","READINESS|SLEEP|SORENESS|STRESS|MOOD").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(re,{memberId:e.member,metric:e.metric?e.metric.toUpperCase():void 0});a(e,t.mybListRecoveryLogs,{headers:["ID","Metric","Score","Sleep (h)","Logged"],rows:t.mybListRecoveryLogs.map(r=>[m(r.id,12),r.metric,String(r.score),r.sleepHours!=null?String(r.sleepHours):"-",y(r.loggedAt)])});}catch(t){s(t);}}),n.command("log").description("Log a recovery metric").option("--member <id>","Member ID").option("--metric <m>","READINESS|SLEEP|SORENESS|STRESS|MOOD").option("--score <n>","Score",i).option("--sleep-hours <n>","Sleep hours",l).option("--notes <s>","Notes").option("--logged-at <iso>","Logged at (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.member&&(t.memberId=e.member),e.metric&&(t.metric=e.metric.toUpperCase()),e.score!==void 0&&(t.score=e.score),e.sleepHours!==void 0&&(t.sleepHours=e.sleepHours),e.notes&&(t.notes=e.notes),e.loggedAt&&(t.loggedAt=e.loggedAt);let r=await c(ne,{input:t});d(`Recovery logged: ${r.mybLogRecovery.metric}`),a(e,r.mybLogRecovery);}catch(t){s(t);}});}function ye(o){let n=o.command("coaching").description("Mybodyshield coaching relationships");n.command("list").description("List coaching relationships").option("--member <id>","Filter by member ID").option("--status <s>","PENDING|ACTIVE|PAUSED|ENDED").option("-f, --format <format>","Output format").action(async e=>{try{let t=await c(oe,{memberId:e.member,status:e.status?e.status.toUpperCase():void 0});a(e,t.mybListCoaching,{headers:["ID","Coach","Member","Status","Specialty"],rows:t.mybListCoaching.map(r=>[m(r.id,12),m(r.coachId,12),m(r.memberId,12),r.status,r.specialty??"-"])});}catch(t){s(t);}}),n.command("create").description("Create a coaching relationship").requiredOption("--coach <id>","Coach ID").requiredOption("--member <id>","Member ID").option("--specialty <s>","Specialty").option("--share-workouts","Share workouts with the coach").option("--share-nutrition","Share nutrition with the coach").option("--share-metrics","Share body metrics with the coach").option("-f, --format <format>","Output format").action(async e=>{try{let t={coachId:e.coach,memberId:e.member};e.specialty&&(t.specialty=e.specialty),e.shareWorkouts&&(t.shareWorkouts=!0),e.shareNutrition&&(t.shareNutrition=!0),e.shareMetrics&&(t.shareMetrics=!0);let r=await c(ie,{input:t});d("Coaching relationship created"),a(e,r.mybCreateCoaching);}catch(t){s(t);}}),n.command("transition").description("Transition a coaching relationship status").argument("<id>","Coaching relationship ID").requiredOption("--status <s>","PENDING|ACTIVE|PAUSED|ENDED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await c(se,{id:e,status:t.status.toUpperCase()});d(`Coaching transitioned to ${r.mybTransitionCoaching.status}`),a(t,r.mybTransitionCoaching);}catch(r){s(r);}});}function be(o){o.command("health").description("Mybodyshield service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await w(ae);d(e.mybHealth),a(n,{health:e.mybHealth});}catch(e){s(e);}});}var ve={id:"mybodyshield",version:"1.0.0",displayName:"Mybodyshield",dependsOn:["auth","workspaces"],register(o,n){E(n);let e=o.command("mybodyshield").description("Mybodyshield fitness coaching platform");ce(e),de(e),ue(e),pe(e),me(e),ge(e),le(e),fe(e),ye(e),be(e);}},Sr=ve;module.exports=Sr;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b,h as h$1,p,g,i,o as o$2,d}from'../../chunk-
|
|
1
|
+
import {a,b,h as h$1,p,g,i,o as o$2,d}from'../../chunk-SQSFZFQZ.js';import {o as o$1}from'../../chunk-UAFYTYK6.js';var T=`
|
|
2
2
|
query MybListPrograms(
|
|
3
3
|
$memberId: ID
|
|
4
4
|
$status: MybProgramStatus
|