@burdenoff/cli-sdk 2026.1102.2 → 2026.1102.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/adaptercloud/index.cjs +6 -3
- package/dist/modules/adaptercloud/index.js +6 -3
- package/dist/modules/assethandler/index.cjs +22 -57
- package/dist/modules/assethandler/index.js +27 -62
- package/dist/modules/atheletebridge/index.cjs +33 -19
- package/dist/modules/atheletebridge/index.js +32 -18
- package/dist/modules/buildmyiq/index.cjs +64 -67
- package/dist/modules/buildmyiq/index.js +60 -63
- package/dist/modules/comradecircle/index.cjs +23 -15
- package/dist/modules/comradecircle/index.js +19 -11
- package/dist/modules/coolandlovely/index.cjs +27 -14
- package/dist/modules/coolandlovely/index.js +29 -16
- package/dist/modules/crewfoundry/index.cjs +63 -116
- package/dist/modules/crewfoundry/index.js +62 -115
- package/dist/modules/ecoimpacthub/index.cjs +19 -9
- package/dist/modules/ecoimpacthub/index.js +19 -9
- package/dist/modules/eventfullymanaged/index.cjs +77 -77
- package/dist/modules/eventfullymanaged/index.js +78 -78
- package/dist/modules/govcitizenhub/index.cjs +7 -4
- package/dist/modules/govcitizenhub/index.js +7 -4
- package/dist/modules/headshotmarketing/index.cjs +92 -261
- package/dist/modules/headshotmarketing/index.js +94 -263
- package/dist/modules/hookmovies/index.cjs +17 -6
- package/dist/modules/hookmovies/index.js +20 -9
- package/dist/modules/housingvista/index.cjs +31 -24
- package/dist/modules/housingvista/index.js +26 -19
- package/dist/modules/intelwatchtower/index.cjs +24 -12
- package/dist/modules/intelwatchtower/index.js +24 -12
- package/dist/modules/kadaikodi/index.cjs +56 -90
- package/dist/modules/kadaikodi/index.js +60 -94
- package/dist/modules/labsofscience/index.cjs +8 -4
- package/dist/modules/labsofscience/index.js +8 -4
- package/dist/modules/manufacturedops/index.cjs +35 -22
- package/dist/modules/manufacturedops/index.js +34 -21
- package/dist/modules/movethewheels/index.cjs +103 -231
- package/dist/modules/movethewheels/index.js +103 -231
- package/dist/modules/planmagnet/index.cjs +21 -21
- package/dist/modules/planmagnet/index.js +32 -32
- package/dist/modules/proserviceworld/index.cjs +17 -12
- package/dist/modules/proserviceworld/index.js +17 -12
- package/dist/modules/subscriberbot/index.cjs +43 -19
- package/dist/modules/subscriberbot/index.js +46 -22
- package/dist/modules/technospam/index.cjs +17 -8
- package/dist/modules/technospam/index.js +17 -8
- package/dist/modules/theculturepost/index.cjs +27 -22
- package/dist/modules/theculturepost/index.js +31 -26
- package/dist/modules/theglobalfuel/index.cjs +65 -60
- package/dist/modules/theglobalfuel/index.js +65 -60
- package/dist/modules/timecampus/index.cjs +31 -85
- package/dist/modules/timecampus/index.js +32 -86
- package/package.json +1 -1
|
@@ -163,31 +163,36 @@
|
|
|
163
163
|
$subjectType: String
|
|
164
164
|
$pagination: PaginationInput
|
|
165
165
|
) {
|
|
166
|
-
pswListComplianceChecks(
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
resolvedAt details evidenceFileId createdAt updatedAt workspaceId
|
|
166
|
+
pswListComplianceChecks(status: $status, subjectId: $subjectId, subjectType: $subjectType, pagination: $pagination) {
|
|
167
|
+
items {
|
|
168
|
+
id type status title subjectId subjectType reviewerId dueDate resolvedAt details
|
|
169
|
+
evidenceFileId createdAt updatedAt workspaceId
|
|
170
|
+
}
|
|
171
|
+
pageInfo { cursor hasMore }
|
|
172
|
+
totalCount
|
|
174
173
|
}
|
|
175
174
|
}
|
|
176
175
|
`,B=`
|
|
177
176
|
query PswListConflictChecks($clientId: ID, $pagination: PaginationInput) {
|
|
178
177
|
pswListConflictChecks(clientId: $clientId, pagination: $pagination) {
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
items {
|
|
179
|
+
id clientId matterId status searchedParties findings waiverReason clearedById
|
|
180
|
+
resolvedAt createdAt updatedAt workspaceId
|
|
181
|
+
}
|
|
182
|
+
pageInfo { cursor hasMore }
|
|
183
|
+
totalCount
|
|
181
184
|
}
|
|
182
185
|
}
|
|
183
186
|
`,K=`
|
|
184
187
|
query PswListPracticeAreas($pagination: PaginationInput) {
|
|
185
188
|
pswListPracticeAreas(pagination: $pagination) {
|
|
186
|
-
id name code description isActive createdAt updatedAt workspaceId
|
|
189
|
+
items { id name code description isActive createdAt updatedAt workspaceId }
|
|
190
|
+
pageInfo { cursor hasMore }
|
|
191
|
+
totalCount
|
|
187
192
|
}
|
|
188
193
|
}
|
|
189
194
|
`,J=`
|
|
190
195
|
query PswHealth {
|
|
191
196
|
pswHealth
|
|
192
197
|
}
|
|
193
|
-
`;function Y(i,r){try{return JSON.parse(r)}catch{throw new u(`--${i} must be valid JSON`)}}function p(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new u(`Expected an integer but got "${i}"`);return r}function f(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new u(`Expected a number but got "${i}"`);return r}function C(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function l(i){let r={};return i.limit!==void 0&&(r.limit=i.limit),i.offset!==void 0&&(r.offset=i.offset),i.cursor!==void 0&&(r.cursor=i.cursor),Object.keys(r).length?r:void 0}function Q(i){let r=i.command("clients").description("ProServiceWorld clients");r.command("list").description("List clients").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{status:t.status?t.status.toUpperCase():void 0,pagination:l(t)});s(t,e.pswListClients.items,{headers:["ID","Name","Type","Status","Industry","Contact"],rows:e.pswListClients.items.map(n=>[g(n.id,12),n.name,n.type,n.status,n.industry??"-",n.contactName??"-"])});}catch(e){o(e);}}),r.command("get").description("Get a client by id").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(x,{id:t});if(!n.pswClient)throw new u(`Client ${t} not found`);s(e,n.pswClient);}catch(n){o(n);}}),r.command("create").description("Create a client").requiredOption("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.industry&&(e.industry=t.industry),t.contactName&&(e.contactName=t.contactName),t.contactEmail&&(e.contactEmail=t.contactEmail),t.contactPhone&&(e.contactPhone=t.contactPhone),t.address&&(e.address=t.address),t.notes&&(e.notes=t.notes),t.relationshipOwner&&(e.relationshipOwnerId=t.relationshipOwner),t.tags&&(e.tags=C(t.tags));let n=await a(D,{input:e});d(`Client created: ${n.pswCreateClient.name}`),s(t,n.pswCreateClient);}catch(e){o(e);}}),r.command("update").description("Update a client").argument("<id>","Client ID").option("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").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.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.industry!==void 0&&(n.industry=e.industry),e.contactName!==void 0&&(n.contactName=e.contactName),e.contactEmail!==void 0&&(n.contactEmail=e.contactEmail),e.contactPhone!==void 0&&(n.contactPhone=e.contactPhone),e.address!==void 0&&(n.address=e.address),e.notes!==void 0&&(n.notes=e.notes),e.relationshipOwner&&(n.relationshipOwnerId=e.relationshipOwner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let E=await a(O,{id:t,input:n});d("Client updated"),s(e,E.pswUpdateClient);}catch(n){o(n);}}),r.command("archive").description("Archive a client").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(S,{id:t});d(n.pswArchiveClient?`Client ${t} archived`:`Client ${t} not archived`),s(e,{archived:n.pswArchiveClient});}catch(n){o(n);}});}function X(i){let r=i.command("engagements").description("ProServiceWorld engagements");r.command("list").description("List engagements").option("--client <id>","Filter by client ID").option("--status <s>","Engagement status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(R,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:l(t)});s(t,e.pswListEngagements.items,{headers:["ID","Name","Status","Fee","Amount","Currency"],rows:e.pswListEngagements.items.map(n=>[g(n.id,12),n.name,n.status,n.feeArrangement??"-",n.feeAmount!=null?String(n.feeAmount):"-",n.currency??"-"])});}catch(e){o(e);}}),r.command("get").description("Get an engagement by id").argument("<id>","Engagement ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});if(!n.pswEngagement)throw new u(`Engagement ${t} not found`);s(e,n.pswEngagement);}catch(n){o(n);}}),r.command("create").description("Create an engagement").requiredOption("--client <id>","Client ID").requiredOption("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",f).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,name:t.name};t.description&&(e.description=t.description),t.feeArrangement&&(e.feeArrangement=t.feeArrangement.toUpperCase()),t.feeAmount!==void 0&&(e.feeAmount=t.feeAmount),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.responsiblePartner&&(e.responsiblePartnerId=t.responsiblePartner),t.tags&&(e.tags=C(t.tags));let n=await a($,{input:e});d(`Engagement created: ${n.pswCreateEngagement.name}`),s(t,n.pswCreateEngagement);}catch(e){o(e);}}),r.command("update").description("Update an engagement").argument("<id>","Engagement ID").option("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",f).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").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.description!==void 0&&(n.description=e.description),e.feeArrangement&&(n.feeArrangement=e.feeArrangement.toUpperCase()),e.feeAmount!==void 0&&(n.feeAmount=e.feeAmount),e.currency&&(n.currency=e.currency),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.responsiblePartner&&(n.responsiblePartnerId=e.responsiblePartner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let E=await a(N,{id:t,input:n});d("Engagement updated"),s(e,E.pswUpdateEngagement);}catch(n){o(n);}}),r.command("transition").description("Advance an engagement through its delivery lifecycle").argument("<id>","Engagement ID").requiredOption("--status <s>","PROPOSAL|ACCEPTED|IN_PROGRESS|REVIEW|DELIVERED|INVOICED|CLOSED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t,status:e.status.toUpperCase()});d(`Engagement transitioned to ${n.pswTransitionEngagement.status}`),s(e,n.pswTransitionEngagement);}catch(n){o(n);}});}function Z(i){let r=i.command("matters").description("ProServiceWorld matters");r.command("list").description("List matters").option("--client <id>","Filter by client ID").option("--engagement <id>","Filter by engagement ID").option("--status <s>","OPEN|ON_HOLD|CLOSED|ARCHIVED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{clientId:t.client,engagementId:t.engagement,status:t.status?t.status.toUpperCase():void 0,pagination:l(t)});s(t,e.pswListMatters.items,{headers:["ID","Title","Reference","Status","Priority","Privileged"],rows:e.pswListMatters.items.map(n=>[g(n.id,12),n.title,n.reference??"-",n.status,n.priority,n.isPrivileged?"yes":"no"])});}catch(e){o(e);}}),r.command("get").description("Get a matter by id").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(_,{id:t});if(!n.pswMatter)throw new u(`Matter ${t} not found`);s(e,n.pswMatter);}catch(n){o(n);}}),r.command("create").description("Create a matter").requiredOption("--client <id>","Client ID").requiredOption("--title <t>","Matter title").option("--reference <r>","External reference").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged","Mark as privileged").option("--due-date <iso>","Due date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,title:t.title};t.reference&&(e.reference=t.reference),t.description&&(e.description=t.description),t.engagement&&(e.engagementId=t.engagement),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.leadPractitioner&&(e.leadPractitionerId=t.leadPractitioner),t.priority&&(e.priority=t.priority.toUpperCase()),t.privileged&&(e.isPrivileged=!0),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=C(t.tags));let n=await a(U,{input:e});d(`Matter created: ${n.pswCreateMatter.title}`),s(t,n.pswCreateMatter);}catch(e){o(e);}}),r.command("update").description("Update a matter").argument("<id>","Matter ID").option("--title <t>","Matter title").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged <bool>","true|false",t=>t==="true").option("--due-date <iso>","Due date (ISO)").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.engagement&&(n.engagementId=e.engagement),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.leadPractitioner&&(n.leadPractitionerId=e.leadPractitioner),e.priority&&(n.priority=e.priority.toUpperCase()),e.privileged!==void 0&&(n.isPrivileged=e.privileged),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let E=await a(G,{id:t,input:n});d("Matter updated"),s(e,E.pswUpdateMatter);}catch(n){o(n);}}),r.command("close").description("Close a matter").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t});d(`Matter closed: ${n.pswCloseMatter.status}`),s(e,n.pswCloseMatter);}catch(n){o(n);}});}function tt(i){let r=i.command("invoices").description("ProServiceWorld invoices");r.command("list").description("List invoices").option("--client <id>","Filter by client ID").option("--status <s>","DRAFT|SENT|PAID|OVERDUE|CANCELLED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:l(t)});s(t,e.pswListInvoices.items,{headers:["ID","Number","Status","Total","Currency"],rows:e.pswListInvoices.items.map(n=>[g(n.id,12),n.number,n.status,n.total!=null?String(n.total):"-",n.currency??"-"])});}catch(e){o(e);}}),r.command("create").description("Create an invoice").requiredOption("--client <id>","Client ID").requiredOption("--number <n>","Invoice number").option("--engagement <id>","Engagement ID").option("--currency <c>","Currency code").option("--issue-date <iso>","Issue date (ISO)").option("--due-date <iso>","Due date (ISO)").option("--subtotal <n>","Subtotal",f).option("--tax-amount <n>","Tax amount",f).option("--total <n>","Total",f).option("--line-items <json>","Line items JSON").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,number:t.number};t.engagement&&(e.engagementId=t.engagement),t.currency&&(e.currency=t.currency),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=Y("line-items",t.lineItems)),t.notes&&(e.notes=t.notes);let n=await a(F,{input:e});d(`Invoice created: ${n.pswCreateInvoice.number}`),s(t,n.pswCreateInvoice);}catch(e){o(e);}}),r.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});d(`Invoice ${n.pswMarkInvoicePaid.number} marked ${n.pswMarkInvoicePaid.status}`),s(e,n.pswMarkInvoicePaid);}catch(n){o(n);}});}function et(i){i.command("time-entries").description("ProServiceWorld time entries").command("log").description("Log a time entry").requiredOption("--date <iso>","Entry date (ISO)").requiredOption("--minutes <n>","Minutes worked",p).option("--matter <id>","Matter ID").option("--engagement <id>","Engagement ID").option("--rate <n>","Hourly rate",f).option("--narrative <s>","Narrative").option("--non-billable","Mark entry as non-billable").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.matter&&!t.engagement)throw new u("Provide --matter or --engagement to log time against");let e={date:t.date,minutes:t.minutes,billable:!t.nonBillable};t.matter&&(e.matterId=t.matter),t.engagement&&(e.engagementId=t.engagement),t.rate!==void 0&&(e.rate=t.rate),t.narrative&&(e.narrative=t.narrative);let n=await a(H,{input:e});d(`Time entry logged: ${n.pswLogTimeEntry.minutes} minutes`),s(t,n.pswLogTimeEntry);}catch(e){o(e);}});}function nt(i){i.command("compliance").description("ProServiceWorld compliance checks").command("list").description("List compliance checks").option("--status <s>","PENDING|IN_REVIEW|PASSED|FAILED|WAIVED").option("--subject <id>","Filter by subject ID").option("--subject-type <t>","Filter by subject type").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(z,{status:t.status?t.status.toUpperCase():void 0,subjectId:t.subject,subjectType:t.subjectType,pagination:l(t)});s(t,e.pswListComplianceChecks,{headers:["ID","Title","Type","Status","Subject","Due"],rows:e.pswListComplianceChecks.map(n=>[g(n.id,12),n.title,n.type,n.status,g(n.subjectId,12),b(n.dueDate)])});}catch(e){o(e);}});}function rt(i){i.command("conflicts").description("ProServiceWorld conflict-of-interest checks").command("list").description("List conflict checks").option("--client <id>","Filter by client ID").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{clientId:t.client,pagination:l(t)});s(t,e.pswListConflictChecks,{headers:["ID","Client","Matter","Status","Parties"],rows:e.pswListConflictChecks.map(n=>[g(n.id,12),g(n.clientId,12),n.matterId?g(n.matterId,12):"-",n.status,String(n.searchedParties.length)])});}catch(e){o(e);}});}function it(i){i.command("practice-areas").description("ProServiceWorld practice areas").command("list").description("List practice areas").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{pagination:l(t)});s(t,e.pswListPracticeAreas,{headers:["ID","Name","Code","Active"],rows:e.pswListPracticeAreas.map(n=>[g(n.id,12),n.name,n.code??"-",n.isActive?"yes":"no"])});}catch(e){o(e);}});}function ot(i){i.command("health").description("ProServiceWorld service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await A(J);d(t.pswHealth),s(r,{health:t.pswHealth});}catch(t){o(t);}});}var It={id:"proserviceworld",version:"1.0.0",displayName:"ProServiceWorld",dependsOn:["auth","workspaces"],register(i,r){v(r);let t=i.command("proserviceworld").description("ProServiceWorld professional-services automation");Q(t),X(t),Z(t),tt(t),et(t),nt(t),rt(t),it(t),ot(t);}},dn=It;module.exports=dn;
|
|
198
|
+
`;function Y(i,r){try{return JSON.parse(r)}catch{throw new u(`--${i} must be valid JSON`)}}function p(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new u(`Expected an integer but got "${i}"`);return r}function f(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new u(`Expected a number but got "${i}"`);return r}function C(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function m(i){let r={};return i.limit!==void 0&&(r.limit=i.limit),i.offset!==void 0&&(r.offset=i.offset),i.cursor!==void 0&&(r.cursor=i.cursor),Object.keys(r).length?r:void 0}function Q(i){let r=i.command("clients").description("ProServiceWorld clients");r.command("list").description("List clients").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{status:t.status?t.status.toUpperCase():void 0,pagination:m(t)});s(t,e.pswListClients.items,{headers:["ID","Name","Type","Status","Industry","Contact"],rows:e.pswListClients.items.map(n=>[g(n.id,12),n.name,n.type,n.status,n.industry??"-",n.contactName??"-"])});}catch(e){o(e);}}),r.command("get").description("Get a client by id").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(x,{id:t});if(!n.pswClient)throw new u(`Client ${t} not found`);s(e,n.pswClient);}catch(n){o(n);}}),r.command("create").description("Create a client").requiredOption("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.industry&&(e.industry=t.industry),t.contactName&&(e.contactName=t.contactName),t.contactEmail&&(e.contactEmail=t.contactEmail),t.contactPhone&&(e.contactPhone=t.contactPhone),t.address&&(e.address=t.address),t.notes&&(e.notes=t.notes),t.relationshipOwner&&(e.relationshipOwnerId=t.relationshipOwner),t.tags&&(e.tags=C(t.tags));let n=await a(D,{input:e});d(`Client created: ${n.pswCreateClient.name}`),s(t,n.pswCreateClient);}catch(e){o(e);}}),r.command("update").description("Update a client").argument("<id>","Client ID").option("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").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.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.industry!==void 0&&(n.industry=e.industry),e.contactName!==void 0&&(n.contactName=e.contactName),e.contactEmail!==void 0&&(n.contactEmail=e.contactEmail),e.contactPhone!==void 0&&(n.contactPhone=e.contactPhone),e.address!==void 0&&(n.address=e.address),e.notes!==void 0&&(n.notes=e.notes),e.relationshipOwner&&(n.relationshipOwnerId=e.relationshipOwner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let E=await a(O,{id:t,input:n});d("Client updated"),s(e,E.pswUpdateClient);}catch(n){o(n);}}),r.command("archive").description("Archive a client").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(S,{id:t});d(n.pswArchiveClient?`Client ${t} archived`:`Client ${t} not archived`),s(e,{archived:n.pswArchiveClient});}catch(n){o(n);}});}function X(i){let r=i.command("engagements").description("ProServiceWorld engagements");r.command("list").description("List engagements").option("--client <id>","Filter by client ID").option("--status <s>","Engagement status").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(R,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:m(t)});s(t,e.pswListEngagements.items,{headers:["ID","Name","Status","Fee","Amount","Currency"],rows:e.pswListEngagements.items.map(n=>[g(n.id,12),n.name,n.status,n.feeArrangement??"-",n.feeAmount!=null?String(n.feeAmount):"-",n.currency??"-"])});}catch(e){o(e);}}),r.command("get").description("Get an engagement by id").argument("<id>","Engagement ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});if(!n.pswEngagement)throw new u(`Engagement ${t} not found`);s(e,n.pswEngagement);}catch(n){o(n);}}),r.command("create").description("Create an engagement").requiredOption("--client <id>","Client ID").requiredOption("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",f).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,name:t.name};t.description&&(e.description=t.description),t.feeArrangement&&(e.feeArrangement=t.feeArrangement.toUpperCase()),t.feeAmount!==void 0&&(e.feeAmount=t.feeAmount),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.responsiblePartner&&(e.responsiblePartnerId=t.responsiblePartner),t.tags&&(e.tags=C(t.tags));let n=await a($,{input:e});d(`Engagement created: ${n.pswCreateEngagement.name}`),s(t,n.pswCreateEngagement);}catch(e){o(e);}}),r.command("update").description("Update an engagement").argument("<id>","Engagement ID").option("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",f).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").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.description!==void 0&&(n.description=e.description),e.feeArrangement&&(n.feeArrangement=e.feeArrangement.toUpperCase()),e.feeAmount!==void 0&&(n.feeAmount=e.feeAmount),e.currency&&(n.currency=e.currency),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.responsiblePartner&&(n.responsiblePartnerId=e.responsiblePartner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let E=await a(N,{id:t,input:n});d("Engagement updated"),s(e,E.pswUpdateEngagement);}catch(n){o(n);}}),r.command("transition").description("Advance an engagement through its delivery lifecycle").argument("<id>","Engagement ID").requiredOption("--status <s>","PROPOSAL|ACCEPTED|IN_PROGRESS|REVIEW|DELIVERED|INVOICED|CLOSED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t,status:e.status.toUpperCase()});d(`Engagement transitioned to ${n.pswTransitionEngagement.status}`),s(e,n.pswTransitionEngagement);}catch(n){o(n);}});}function Z(i){let r=i.command("matters").description("ProServiceWorld matters");r.command("list").description("List matters").option("--client <id>","Filter by client ID").option("--engagement <id>","Filter by engagement ID").option("--status <s>","OPEN|ON_HOLD|CLOSED|ARCHIVED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{clientId:t.client,engagementId:t.engagement,status:t.status?t.status.toUpperCase():void 0,pagination:m(t)});s(t,e.pswListMatters.items,{headers:["ID","Title","Reference","Status","Priority","Privileged"],rows:e.pswListMatters.items.map(n=>[g(n.id,12),n.title,n.reference??"-",n.status,n.priority,n.isPrivileged?"yes":"no"])});}catch(e){o(e);}}),r.command("get").description("Get a matter by id").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(_,{id:t});if(!n.pswMatter)throw new u(`Matter ${t} not found`);s(e,n.pswMatter);}catch(n){o(n);}}),r.command("create").description("Create a matter").requiredOption("--client <id>","Client ID").requiredOption("--title <t>","Matter title").option("--reference <r>","External reference").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged","Mark as privileged").option("--due-date <iso>","Due date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,title:t.title};t.reference&&(e.reference=t.reference),t.description&&(e.description=t.description),t.engagement&&(e.engagementId=t.engagement),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.leadPractitioner&&(e.leadPractitionerId=t.leadPractitioner),t.priority&&(e.priority=t.priority.toUpperCase()),t.privileged&&(e.isPrivileged=!0),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=C(t.tags));let n=await a(U,{input:e});d(`Matter created: ${n.pswCreateMatter.title}`),s(t,n.pswCreateMatter);}catch(e){o(e);}}),r.command("update").description("Update a matter").argument("<id>","Matter ID").option("--title <t>","Matter title").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged <bool>","true|false",t=>t==="true").option("--due-date <iso>","Due date (ISO)").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.engagement&&(n.engagementId=e.engagement),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.leadPractitioner&&(n.leadPractitionerId=e.leadPractitioner),e.priority&&(n.priority=e.priority.toUpperCase()),e.privileged!==void 0&&(n.isPrivileged=e.privileged),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new u("No updates specified");let E=await a(G,{id:t,input:n});d("Matter updated"),s(e,E.pswUpdateMatter);}catch(n){o(n);}}),r.command("close").description("Close a matter").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t});d(`Matter closed: ${n.pswCloseMatter.status}`),s(e,n.pswCloseMatter);}catch(n){o(n);}});}function tt(i){let r=i.command("invoices").description("ProServiceWorld invoices");r.command("list").description("List invoices").option("--client <id>","Filter by client ID").option("--status <s>","DRAFT|SENT|PAID|OVERDUE|CANCELLED").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:m(t)});s(t,e.pswListInvoices.items,{headers:["ID","Number","Status","Total","Currency"],rows:e.pswListInvoices.items.map(n=>[g(n.id,12),n.number,n.status,n.total!=null?String(n.total):"-",n.currency??"-"])});}catch(e){o(e);}}),r.command("create").description("Create an invoice").requiredOption("--client <id>","Client ID").requiredOption("--number <n>","Invoice number").option("--engagement <id>","Engagement ID").option("--currency <c>","Currency code").option("--issue-date <iso>","Issue date (ISO)").option("--due-date <iso>","Due date (ISO)").option("--subtotal <n>","Subtotal",f).option("--tax-amount <n>","Tax amount",f).option("--total <n>","Total",f).option("--line-items <json>","Line items JSON").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,number:t.number};t.engagement&&(e.engagementId=t.engagement),t.currency&&(e.currency=t.currency),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=Y("line-items",t.lineItems)),t.notes&&(e.notes=t.notes);let n=await a(F,{input:e});d(`Invoice created: ${n.pswCreateInvoice.number}`),s(t,n.pswCreateInvoice);}catch(e){o(e);}}),r.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});d(`Invoice ${n.pswMarkInvoicePaid.number} marked ${n.pswMarkInvoicePaid.status}`),s(e,n.pswMarkInvoicePaid);}catch(n){o(n);}});}function et(i){i.command("time-entries").description("ProServiceWorld time entries").command("log").description("Log a time entry").requiredOption("--date <iso>","Entry date (ISO)").requiredOption("--minutes <n>","Minutes worked",p).option("--matter <id>","Matter ID").option("--engagement <id>","Engagement ID").option("--rate <n>","Hourly rate",f).option("--narrative <s>","Narrative").option("--non-billable","Mark entry as non-billable").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.matter&&!t.engagement)throw new u("Provide --matter or --engagement to log time against");let e={date:t.date,minutes:t.minutes,billable:!t.nonBillable};t.matter&&(e.matterId=t.matter),t.engagement&&(e.engagementId=t.engagement),t.rate!==void 0&&(e.rate=t.rate),t.narrative&&(e.narrative=t.narrative);let n=await a(H,{input:e});d(`Time entry logged: ${n.pswLogTimeEntry.minutes} minutes`),s(t,n.pswLogTimeEntry);}catch(e){o(e);}});}function nt(i){i.command("compliance").description("ProServiceWorld compliance checks").command("list").description("List compliance checks").option("--status <s>","PENDING|IN_REVIEW|PASSED|FAILED|WAIVED").option("--subject <id>","Filter by subject ID").option("--subject-type <t>","Filter by subject type").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(z,{status:t.status?t.status.toUpperCase():void 0,subjectId:t.subject,subjectType:t.subjectType,pagination:m(t)});s(t,e.pswListComplianceChecks.items,{headers:["ID","Title","Type","Status","Subject","Due"],rows:e.pswListComplianceChecks.items.map(n=>[g(n.id,12),n.title,n.type,n.status,g(n.subjectId,12),b(n.dueDate)])});}catch(e){o(e);}});}function rt(i){i.command("conflicts").description("ProServiceWorld conflict-of-interest checks").command("list").description("List conflict checks").option("--client <id>","Filter by client ID").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{clientId:t.client,pagination:m(t)});s(t,e.pswListConflictChecks.items,{headers:["ID","Client","Matter","Status","Parties"],rows:e.pswListConflictChecks.items.map(n=>[g(n.id,12),g(n.clientId,12),n.matterId?g(n.matterId,12):"-",n.status,String(n.searchedParties.length)])});}catch(e){o(e);}});}function it(i){i.command("practice-areas").description("ProServiceWorld practice areas").command("list").description("List practice areas").option("--limit <n>","Page size",p,50).option("--offset <n>","Offset",p,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{pagination:m(t)});s(t,e.pswListPracticeAreas.items,{headers:["ID","Name","Code","Active"],rows:e.pswListPracticeAreas.items.map(n=>[g(n.id,12),n.name,n.code??"-",n.isActive?"yes":"no"])});}catch(e){o(e);}});}function ot(i){i.command("health").description("ProServiceWorld service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await A(J);d(t.pswHealth),s(r,{health:t.pswHealth});}catch(t){o(t);}});}var It={id:"proserviceworld",version:"1.0.0",displayName:"ProServiceWorld",dependsOn:["auth","workspaces"],register(i,r){v(r);let t=i.command("proserviceworld").description("ProServiceWorld professional-services automation");Q(t),X(t),Z(t),tt(t),et(t),nt(t),rt(t),it(t),ot(t);}},dn=It;module.exports=dn;
|
|
@@ -163,31 +163,36 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,q as q$1,d}from'../../chunk-O6UCQ5IT.js
|
|
|
163
163
|
$subjectType: String
|
|
164
164
|
$pagination: PaginationInput
|
|
165
165
|
) {
|
|
166
|
-
pswListComplianceChecks(
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
resolvedAt details evidenceFileId createdAt updatedAt workspaceId
|
|
166
|
+
pswListComplianceChecks(status: $status, subjectId: $subjectId, subjectType: $subjectType, pagination: $pagination) {
|
|
167
|
+
items {
|
|
168
|
+
id type status title subjectId subjectType reviewerId dueDate resolvedAt details
|
|
169
|
+
evidenceFileId createdAt updatedAt workspaceId
|
|
170
|
+
}
|
|
171
|
+
pageInfo { cursor hasMore }
|
|
172
|
+
totalCount
|
|
174
173
|
}
|
|
175
174
|
}
|
|
176
175
|
`,V=`
|
|
177
176
|
query PswListConflictChecks($clientId: ID, $pagination: PaginationInput) {
|
|
178
177
|
pswListConflictChecks(clientId: $clientId, pagination: $pagination) {
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
items {
|
|
179
|
+
id clientId matterId status searchedParties findings waiverReason clearedById
|
|
180
|
+
resolvedAt createdAt updatedAt workspaceId
|
|
181
|
+
}
|
|
182
|
+
pageInfo { cursor hasMore }
|
|
183
|
+
totalCount
|
|
181
184
|
}
|
|
182
185
|
}
|
|
183
186
|
`,W=`
|
|
184
187
|
query PswListPracticeAreas($pagination: PaginationInput) {
|
|
185
188
|
pswListPracticeAreas(pagination: $pagination) {
|
|
186
|
-
id name code description isActive createdAt updatedAt workspaceId
|
|
189
|
+
items { id name code description isActive createdAt updatedAt workspaceId }
|
|
190
|
+
pageInfo { cursor hasMore }
|
|
191
|
+
totalCount
|
|
187
192
|
}
|
|
188
193
|
}
|
|
189
194
|
`,F=`
|
|
190
195
|
query PswHealth {
|
|
191
196
|
pswHealth
|
|
192
197
|
}
|
|
193
|
-
`;function q(r,i){try{return JSON.parse(i)}catch{throw new o(`--${r} must be valid JSON`)}}function c(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${r}"`);return i}function I(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new o(`Expected a number but got "${r}"`);return i}function C(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function u(r){let i={};return r.limit!==void 0&&(i.limit=r.limit),r.offset!==void 0&&(i.offset=r.offset),r.cursor!==void 0&&(i.cursor=r.cursor),Object.keys(i).length?i:void 0}function z(r$1){let i$1=r$1.command("clients").description("ProServiceWorld clients");i$1.command("list").description("List clients").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(D,{status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListClients.items,{headers:["ID","Name","Type","Status","Industry","Contact"],rows:e.pswListClients.items.map(n=>[r(n.id,12),n.name,n.type,n.status,n.industry??"-",n.contactName??"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a client by id").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(P,{id:t});if(!n.pswClient)throw new o(`Client ${t} not found`);i(e,n.pswClient);}catch(n){h$1(n);}}),i$1.command("create").description("Create a client").requiredOption("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.industry&&(e.industry=t.industry),t.contactName&&(e.contactName=t.contactName),t.contactEmail&&(e.contactEmail=t.contactEmail),t.contactPhone&&(e.contactPhone=t.contactPhone),t.address&&(e.address=t.address),t.notes&&(e.notes=t.notes),t.relationshipOwner&&(e.relationshipOwnerId=t.relationshipOwner),t.tags&&(e.tags=C(t.tags));let n=await b$1(h,{input:e});k$1(`Client created: ${n.pswCreateClient.name}`),i(t,n.pswCreateClient);}catch(e){h$1(e);}}),i$1.command("update").description("Update a client").argument("<id>","Client ID").option("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").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.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.industry!==void 0&&(n.industry=e.industry),e.contactName!==void 0&&(n.contactName=e.contactName),e.contactEmail!==void 0&&(n.contactEmail=e.contactEmail),e.contactPhone!==void 0&&(n.contactPhone=e.contactPhone),e.address!==void 0&&(n.address=e.address),e.notes!==void 0&&(n.notes=e.notes),e.relationshipOwner&&(n.relationshipOwnerId=e.relationshipOwner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let w=await b$1(b,{id:t,input:n});k$1("Client updated"),i(e,w.pswUpdateClient);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a client").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(T,{id:t});k$1(n.pswArchiveClient?`Client ${t} archived`:`Client ${t} not archived`),i(e,{archived:n.pswArchiveClient});}catch(n){h$1(n);}});}function K(r$1){let i$1=r$1.command("engagements").description("ProServiceWorld engagements");i$1.command("list").description("List engagements").option("--client <id>","Filter by client ID").option("--status <s>","Engagement status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(v,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListEngagements.items,{headers:["ID","Name","Status","Fee","Amount","Currency"],rows:e.pswListEngagements.items.map(n=>[r(n.id,12),n.name,n.status,n.feeArrangement??"-",n.feeAmount!=null?String(n.feeAmount):"-",n.currency??"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an engagement by id").argument("<id>","Engagement ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(O,{id:t});if(!n.pswEngagement)throw new o(`Engagement ${t} not found`);i(e,n.pswEngagement);}catch(n){h$1(n);}}),i$1.command("create").description("Create an engagement").requiredOption("--client <id>","Client ID").requiredOption("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",I).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,name:t.name};t.description&&(e.description=t.description),t.feeArrangement&&(e.feeArrangement=t.feeArrangement.toUpperCase()),t.feeAmount!==void 0&&(e.feeAmount=t.feeAmount),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.responsiblePartner&&(e.responsiblePartnerId=t.responsiblePartner),t.tags&&(e.tags=C(t.tags));let n=await b$1(L,{input:e});k$1(`Engagement created: ${n.pswCreateEngagement.name}`),i(t,n.pswCreateEngagement);}catch(e){h$1(e);}}),i$1.command("update").description("Update an engagement").argument("<id>","Engagement ID").option("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",I).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").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.description!==void 0&&(n.description=e.description),e.feeArrangement&&(n.feeArrangement=e.feeArrangement.toUpperCase()),e.feeAmount!==void 0&&(n.feeAmount=e.feeAmount),e.currency&&(n.currency=e.currency),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.responsiblePartner&&(n.responsiblePartnerId=e.responsiblePartner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let w=await b$1(N,{id:t,input:n});k$1("Engagement updated"),i(e,w.pswUpdateEngagement);}catch(n){h$1(n);}}),i$1.command("transition").description("Advance an engagement through its delivery lifecycle").argument("<id>","Engagement ID").requiredOption("--status <s>","PROPOSAL|ACCEPTED|IN_PROGRESS|REVIEW|DELIVERED|INVOICED|CLOSED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(M,{id:t,status:e.status.toUpperCase()});k$1(`Engagement transitioned to ${n.pswTransitionEngagement.status}`),i(e,n.pswTransitionEngagement);}catch(n){h$1(n);}});}function B(r$1){let i$1=r$1.command("matters").description("ProServiceWorld matters");i$1.command("list").description("List matters").option("--client <id>","Filter by client ID").option("--engagement <id>","Filter by engagement ID").option("--status <s>","OPEN|ON_HOLD|CLOSED|ARCHIVED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(S,{clientId:t.client,engagementId:t.engagement,status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListMatters.items,{headers:["ID","Title","Reference","Status","Priority","Privileged"],rows:e.pswListMatters.items.map(n=>[r(n.id,12),n.title,n.reference??"-",n.status,n.priority,n.isPrivileged?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a matter by id").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(R,{id:t});if(!n.pswMatter)throw new o(`Matter ${t} not found`);i(e,n.pswMatter);}catch(n){h$1(n);}}),i$1.command("create").description("Create a matter").requiredOption("--client <id>","Client ID").requiredOption("--title <t>","Matter title").option("--reference <r>","External reference").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged","Mark as privileged").option("--due-date <iso>","Due date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,title:t.title};t.reference&&(e.reference=t.reference),t.description&&(e.description=t.description),t.engagement&&(e.engagementId=t.engagement),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.leadPractitioner&&(e.leadPractitionerId=t.leadPractitioner),t.priority&&(e.priority=t.priority.toUpperCase()),t.privileged&&(e.isPrivileged=!0),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=C(t.tags));let n=await b$1($,{input:e});k$1(`Matter created: ${n.pswCreateMatter.title}`),i(t,n.pswCreateMatter);}catch(e){h$1(e);}}),i$1.command("update").description("Update a matter").argument("<id>","Matter ID").option("--title <t>","Matter title").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged <bool>","true|false",t=>t==="true").option("--due-date <iso>","Due date (ISO)").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.engagement&&(n.engagementId=e.engagement),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.leadPractitioner&&(n.leadPractitionerId=e.leadPractitioner),e.priority&&(n.priority=e.priority.toUpperCase()),e.privileged!==void 0&&(n.isPrivileged=e.privileged),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let w=await b$1(k,{id:t,input:n});k$1("Matter updated"),i(e,w.pswUpdateMatter);}catch(n){h$1(n);}}),i$1.command("close").description("Close a matter").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(_,{id:t});k$1(`Matter closed: ${n.pswCloseMatter.status}`),i(e,n.pswCloseMatter);}catch(n){h$1(n);}});}function J(r$1){let i$1=r$1.command("invoices").description("ProServiceWorld invoices");i$1.command("list").description("List invoices").option("--client <id>","Filter by client ID").option("--status <s>","DRAFT|SENT|PAID|OVERDUE|CANCELLED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListInvoices.items,{headers:["ID","Number","Status","Total","Currency"],rows:e.pswListInvoices.items.map(n=>[r(n.id,12),n.number,n.status,n.total!=null?String(n.total):"-",n.currency??"-"])});}catch(e){h$1(e);}}),i$1.command("create").description("Create an invoice").requiredOption("--client <id>","Client ID").requiredOption("--number <n>","Invoice number").option("--engagement <id>","Engagement ID").option("--currency <c>","Currency code").option("--issue-date <iso>","Issue date (ISO)").option("--due-date <iso>","Due date (ISO)").option("--subtotal <n>","Subtotal",I).option("--tax-amount <n>","Tax amount",I).option("--total <n>","Total",I).option("--line-items <json>","Line items JSON").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,number:t.number};t.engagement&&(e.engagementId=t.engagement),t.currency&&(e.currency=t.currency),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=q("line-items",t.lineItems)),t.notes&&(e.notes=t.notes);let n=await b$1(G,{input:e});k$1(`Invoice created: ${n.pswCreateInvoice.number}`),i(t,n.pswCreateInvoice);}catch(e){h$1(e);}}),i$1.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(x,{id:t});k$1(`Invoice ${n.pswMarkInvoicePaid.number} marked ${n.pswMarkInvoicePaid.status}`),i(e,n.pswMarkInvoicePaid);}catch(n){h$1(n);}});}function Y(r){r.command("time-entries").description("ProServiceWorld time entries").command("log").description("Log a time entry").requiredOption("--date <iso>","Entry date (ISO)").requiredOption("--minutes <n>","Minutes worked",c).option("--matter <id>","Matter ID").option("--engagement <id>","Engagement ID").option("--rate <n>","Hourly rate",I).option("--narrative <s>","Narrative").option("--non-billable","Mark entry as non-billable").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.matter&&!t.engagement)throw new o("Provide --matter or --engagement to log time against");let e={date:t.date,minutes:t.minutes,billable:!t.nonBillable};t.matter&&(e.matterId=t.matter),t.engagement&&(e.engagementId=t.engagement),t.rate!==void 0&&(e.rate=t.rate),t.narrative&&(e.narrative=t.narrative);let n=await b$1(H,{input:e});k$1(`Time entry logged: ${n.pswLogTimeEntry.minutes} minutes`),i(t,n.pswLogTimeEntry);}catch(e){h$1(e);}});}function X(r$1){r$1.command("compliance").description("ProServiceWorld compliance checks").command("list").description("List compliance checks").option("--status <s>","PENDING|IN_REVIEW|PASSED|FAILED|WAIVED").option("--subject <id>","Filter by subject ID").option("--subject-type <t>","Filter by subject type").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{status:t.status?t.status.toUpperCase():void 0,subjectId:t.subject,subjectType:t.subjectType,pagination:u(t)});i(t,e.pswListComplianceChecks,{headers:["ID","Title","Type","Status","Subject","Due"],rows:e.pswListComplianceChecks.map(n=>[r(n.id,12),n.title,n.type,n.status,r(n.subjectId,12),q$1(n.dueDate)])});}catch(e){h$1(e);}});}function Z(r$1){r$1.command("conflicts").description("ProServiceWorld conflict-of-interest checks").command("list").description("List conflict checks").option("--client <id>","Filter by client ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{clientId:t.client,pagination:u(t)});i(t,e.pswListConflictChecks,{headers:["ID","Client","Matter","Status","Parties"],rows:e.pswListConflictChecks.map(n=>[r(n.id,12),r(n.clientId,12),n.matterId?r(n.matterId,12):"-",n.status,String(n.searchedParties.length)])});}catch(e){h$1(e);}});}function Q(r$1){r$1.command("practice-areas").description("ProServiceWorld practice areas").command("list").description("List practice areas").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(W,{pagination:u(t)});i(t,e.pswListPracticeAreas,{headers:["ID","Name","Code","Active"],rows:e.pswListPracticeAreas.map(n=>[r(n.id,12),n.name,n.code??"-",n.isActive?"yes":"no"])});}catch(e){h$1(e);}});}function tt(r){r.command("health").description("ProServiceWorld service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(F);k$1(t.pswHealth),i(i$1,{health:t.pswHealth});}catch(t){h$1(t);}});}var et={id:"proserviceworld",version:"1.0.0",displayName:"ProServiceWorld",dependsOn:["auth","workspaces"],register(r,i){a(i);let t=r.command("proserviceworld").description("ProServiceWorld professional-services automation");z(t),K(t),B(t),J(t),Y(t),X(t),Z(t),Q(t),tt(t);}},Ft=et;export{Ft as default};
|
|
198
|
+
`;function q(r,i){try{return JSON.parse(i)}catch{throw new o(`--${r} must be valid JSON`)}}function c(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${r}"`);return i}function I(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new o(`Expected a number but got "${r}"`);return i}function C(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function u(r){let i={};return r.limit!==void 0&&(i.limit=r.limit),r.offset!==void 0&&(i.offset=r.offset),r.cursor!==void 0&&(i.cursor=r.cursor),Object.keys(i).length?i:void 0}function z(r$1){let i$1=r$1.command("clients").description("ProServiceWorld clients");i$1.command("list").description("List clients").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(D,{status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListClients.items,{headers:["ID","Name","Type","Status","Industry","Contact"],rows:e.pswListClients.items.map(n=>[r(n.id,12),n.name,n.type,n.status,n.industry??"-",n.contactName??"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a client by id").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(P,{id:t});if(!n.pswClient)throw new o(`Client ${t} not found`);i(e,n.pswClient);}catch(n){h$1(n);}}),i$1.command("create").description("Create a client").requiredOption("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.industry&&(e.industry=t.industry),t.contactName&&(e.contactName=t.contactName),t.contactEmail&&(e.contactEmail=t.contactEmail),t.contactPhone&&(e.contactPhone=t.contactPhone),t.address&&(e.address=t.address),t.notes&&(e.notes=t.notes),t.relationshipOwner&&(e.relationshipOwnerId=t.relationshipOwner),t.tags&&(e.tags=C(t.tags));let n=await b$1(h,{input:e});k$1(`Client created: ${n.pswCreateClient.name}`),i(t,n.pswCreateClient);}catch(e){h$1(e);}}),i$1.command("update").description("Update a client").argument("<id>","Client ID").option("--name <name>","Client name").option("--type <t>","INDIVIDUAL|ORGANIZATION").option("--status <s>","PROSPECT|ACTIVE|INACTIVE|ARCHIVED").option("--industry <i>","Industry").option("--contact-name <n>","Primary contact name").option("--contact-email <e>","Primary contact email").option("--contact-phone <p>","Primary contact phone").option("--address <a>","Address").option("--notes <n>","Notes").option("--relationship-owner <id>","Relationship owner user ID").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.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.industry!==void 0&&(n.industry=e.industry),e.contactName!==void 0&&(n.contactName=e.contactName),e.contactEmail!==void 0&&(n.contactEmail=e.contactEmail),e.contactPhone!==void 0&&(n.contactPhone=e.contactPhone),e.address!==void 0&&(n.address=e.address),e.notes!==void 0&&(n.notes=e.notes),e.relationshipOwner&&(n.relationshipOwnerId=e.relationshipOwner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let w=await b$1(b,{id:t,input:n});k$1("Client updated"),i(e,w.pswUpdateClient);}catch(n){h$1(n);}}),i$1.command("archive").description("Archive a client").argument("<id>","Client ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(T,{id:t});k$1(n.pswArchiveClient?`Client ${t} archived`:`Client ${t} not archived`),i(e,{archived:n.pswArchiveClient});}catch(n){h$1(n);}});}function K(r$1){let i$1=r$1.command("engagements").description("ProServiceWorld engagements");i$1.command("list").description("List engagements").option("--client <id>","Filter by client ID").option("--status <s>","Engagement status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(v,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListEngagements.items,{headers:["ID","Name","Status","Fee","Amount","Currency"],rows:e.pswListEngagements.items.map(n=>[r(n.id,12),n.name,n.status,n.feeArrangement??"-",n.feeAmount!=null?String(n.feeAmount):"-",n.currency??"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an engagement by id").argument("<id>","Engagement ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(O,{id:t});if(!n.pswEngagement)throw new o(`Engagement ${t} not found`);i(e,n.pswEngagement);}catch(n){h$1(n);}}),i$1.command("create").description("Create an engagement").requiredOption("--client <id>","Client ID").requiredOption("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",I).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,name:t.name};t.description&&(e.description=t.description),t.feeArrangement&&(e.feeArrangement=t.feeArrangement.toUpperCase()),t.feeAmount!==void 0&&(e.feeAmount=t.feeAmount),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.responsiblePartner&&(e.responsiblePartnerId=t.responsiblePartner),t.tags&&(e.tags=C(t.tags));let n=await b$1(L,{input:e});k$1(`Engagement created: ${n.pswCreateEngagement.name}`),i(t,n.pswCreateEngagement);}catch(e){h$1(e);}}),i$1.command("update").description("Update an engagement").argument("<id>","Engagement ID").option("--name <name>","Engagement name").option("--description <s>","Description").option("--fee-arrangement <f>","FIXED|HOURLY|RETAINER|VALUE_BASED").option("--fee-amount <n>","Fee amount",I).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--practice-area <id>","Practice area ID").option("--responsible-partner <id>","Responsible partner user ID").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.description!==void 0&&(n.description=e.description),e.feeArrangement&&(n.feeArrangement=e.feeArrangement.toUpperCase()),e.feeAmount!==void 0&&(n.feeAmount=e.feeAmount),e.currency&&(n.currency=e.currency),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.responsiblePartner&&(n.responsiblePartnerId=e.responsiblePartner),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let w=await b$1(N,{id:t,input:n});k$1("Engagement updated"),i(e,w.pswUpdateEngagement);}catch(n){h$1(n);}}),i$1.command("transition").description("Advance an engagement through its delivery lifecycle").argument("<id>","Engagement ID").requiredOption("--status <s>","PROPOSAL|ACCEPTED|IN_PROGRESS|REVIEW|DELIVERED|INVOICED|CLOSED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(M,{id:t,status:e.status.toUpperCase()});k$1(`Engagement transitioned to ${n.pswTransitionEngagement.status}`),i(e,n.pswTransitionEngagement);}catch(n){h$1(n);}});}function B(r$1){let i$1=r$1.command("matters").description("ProServiceWorld matters");i$1.command("list").description("List matters").option("--client <id>","Filter by client ID").option("--engagement <id>","Filter by engagement ID").option("--status <s>","OPEN|ON_HOLD|CLOSED|ARCHIVED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(S,{clientId:t.client,engagementId:t.engagement,status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListMatters.items,{headers:["ID","Title","Reference","Status","Priority","Privileged"],rows:e.pswListMatters.items.map(n=>[r(n.id,12),n.title,n.reference??"-",n.status,n.priority,n.isPrivileged?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a matter by id").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(R,{id:t});if(!n.pswMatter)throw new o(`Matter ${t} not found`);i(e,n.pswMatter);}catch(n){h$1(n);}}),i$1.command("create").description("Create a matter").requiredOption("--client <id>","Client ID").requiredOption("--title <t>","Matter title").option("--reference <r>","External reference").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged","Mark as privileged").option("--due-date <iso>","Due date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,title:t.title};t.reference&&(e.reference=t.reference),t.description&&(e.description=t.description),t.engagement&&(e.engagementId=t.engagement),t.practiceArea&&(e.practiceAreaId=t.practiceArea),t.leadPractitioner&&(e.leadPractitionerId=t.leadPractitioner),t.priority&&(e.priority=t.priority.toUpperCase()),t.privileged&&(e.isPrivileged=!0),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=C(t.tags));let n=await b$1($,{input:e});k$1(`Matter created: ${n.pswCreateMatter.title}`),i(t,n.pswCreateMatter);}catch(e){h$1(e);}}),i$1.command("update").description("Update a matter").argument("<id>","Matter ID").option("--title <t>","Matter title").option("--description <s>","Description").option("--engagement <id>","Engagement ID").option("--practice-area <id>","Practice area ID").option("--lead-practitioner <id>","Lead practitioner user ID").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--privileged <bool>","true|false",t=>t==="true").option("--due-date <iso>","Due date (ISO)").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.engagement&&(n.engagementId=e.engagement),e.practiceArea&&(n.practiceAreaId=e.practiceArea),e.leadPractitioner&&(n.leadPractitionerId=e.leadPractitioner),e.priority&&(n.priority=e.priority.toUpperCase()),e.privileged!==void 0&&(n.isPrivileged=e.privileged),e.dueDate&&(n.dueDate=e.dueDate),e.tags&&(n.tags=C(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let w=await b$1(k,{id:t,input:n});k$1("Matter updated"),i(e,w.pswUpdateMatter);}catch(n){h$1(n);}}),i$1.command("close").description("Close a matter").argument("<id>","Matter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(_,{id:t});k$1(`Matter closed: ${n.pswCloseMatter.status}`),i(e,n.pswCloseMatter);}catch(n){h$1(n);}});}function J(r$1){let i$1=r$1.command("invoices").description("ProServiceWorld invoices");i$1.command("list").description("List invoices").option("--client <id>","Filter by client ID").option("--status <s>","DRAFT|SENT|PAID|OVERDUE|CANCELLED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{clientId:t.client,status:t.status?t.status.toUpperCase():void 0,pagination:u(t)});i(t,e.pswListInvoices.items,{headers:["ID","Number","Status","Total","Currency"],rows:e.pswListInvoices.items.map(n=>[r(n.id,12),n.number,n.status,n.total!=null?String(n.total):"-",n.currency??"-"])});}catch(e){h$1(e);}}),i$1.command("create").description("Create an invoice").requiredOption("--client <id>","Client ID").requiredOption("--number <n>","Invoice number").option("--engagement <id>","Engagement ID").option("--currency <c>","Currency code").option("--issue-date <iso>","Issue date (ISO)").option("--due-date <iso>","Due date (ISO)").option("--subtotal <n>","Subtotal",I).option("--tax-amount <n>","Tax amount",I).option("--total <n>","Total",I).option("--line-items <json>","Line items JSON").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={clientId:t.client,number:t.number};t.engagement&&(e.engagementId=t.engagement),t.currency&&(e.currency=t.currency),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=q("line-items",t.lineItems)),t.notes&&(e.notes=t.notes);let n=await b$1(G,{input:e});k$1(`Invoice created: ${n.pswCreateInvoice.number}`),i(t,n.pswCreateInvoice);}catch(e){h$1(e);}}),i$1.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(x,{id:t});k$1(`Invoice ${n.pswMarkInvoicePaid.number} marked ${n.pswMarkInvoicePaid.status}`),i(e,n.pswMarkInvoicePaid);}catch(n){h$1(n);}});}function Y(r){r.command("time-entries").description("ProServiceWorld time entries").command("log").description("Log a time entry").requiredOption("--date <iso>","Entry date (ISO)").requiredOption("--minutes <n>","Minutes worked",c).option("--matter <id>","Matter ID").option("--engagement <id>","Engagement ID").option("--rate <n>","Hourly rate",I).option("--narrative <s>","Narrative").option("--non-billable","Mark entry as non-billable").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.matter&&!t.engagement)throw new o("Provide --matter or --engagement to log time against");let e={date:t.date,minutes:t.minutes,billable:!t.nonBillable};t.matter&&(e.matterId=t.matter),t.engagement&&(e.engagementId=t.engagement),t.rate!==void 0&&(e.rate=t.rate),t.narrative&&(e.narrative=t.narrative);let n=await b$1(H,{input:e});k$1(`Time entry logged: ${n.pswLogTimeEntry.minutes} minutes`),i(t,n.pswLogTimeEntry);}catch(e){h$1(e);}});}function X(r$1){r$1.command("compliance").description("ProServiceWorld compliance checks").command("list").description("List compliance checks").option("--status <s>","PENDING|IN_REVIEW|PASSED|FAILED|WAIVED").option("--subject <id>","Filter by subject ID").option("--subject-type <t>","Filter by subject type").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{status:t.status?t.status.toUpperCase():void 0,subjectId:t.subject,subjectType:t.subjectType,pagination:u(t)});i(t,e.pswListComplianceChecks.items,{headers:["ID","Title","Type","Status","Subject","Due"],rows:e.pswListComplianceChecks.items.map(n=>[r(n.id,12),n.title,n.type,n.status,r(n.subjectId,12),q$1(n.dueDate)])});}catch(e){h$1(e);}});}function Z(r$1){r$1.command("conflicts").description("ProServiceWorld conflict-of-interest checks").command("list").description("List conflict checks").option("--client <id>","Filter by client ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{clientId:t.client,pagination:u(t)});i(t,e.pswListConflictChecks.items,{headers:["ID","Client","Matter","Status","Parties"],rows:e.pswListConflictChecks.items.map(n=>[r(n.id,12),r(n.clientId,12),n.matterId?r(n.matterId,12):"-",n.status,String(n.searchedParties.length)])});}catch(e){h$1(e);}});}function Q(r$1){r$1.command("practice-areas").description("ProServiceWorld practice areas").command("list").description("List practice areas").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(W,{pagination:u(t)});i(t,e.pswListPracticeAreas.items,{headers:["ID","Name","Code","Active"],rows:e.pswListPracticeAreas.items.map(n=>[r(n.id,12),n.name,n.code??"-",n.isActive?"yes":"no"])});}catch(e){h$1(e);}});}function tt(r){r.command("health").description("ProServiceWorld service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(F);k$1(t.pswHealth),i(i$1,{health:t.pswHealth});}catch(t){h$1(t);}});}var et={id:"proserviceworld",version:"1.0.0",displayName:"ProServiceWorld",dependsOn:["auth","workspaces"],register(r,i){a(i);let t=r.command("proserviceworld").description("ProServiceWorld professional-services automation");z(t),K(t),B(t),J(t),Y(t),X(t),Z(t),Q(t),tt(t);}},Ft=et;export{Ft as default};
|
|
@@ -50,8 +50,11 @@
|
|
|
50
50
|
`,P=`
|
|
51
51
|
query SubListPlans($providerId: ID) {
|
|
52
52
|
subListPlans(providerId: $providerId) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
items {
|
|
54
|
+
id providerId name description amount currency interval features isActive createdAt
|
|
55
|
+
updatedAt workspaceId
|
|
56
|
+
}
|
|
57
|
+
pageInfo { cursor hasMore }
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
60
|
`,D=`
|
|
@@ -125,16 +128,21 @@
|
|
|
125
128
|
`,W=`
|
|
126
129
|
query SubListRenewalEvents($relationshipId: ID, $upcomingOnly: Boolean) {
|
|
127
130
|
subListRenewalEvents(relationshipId: $relationshipId, upcomingOnly: $upcomingOnly) {
|
|
128
|
-
|
|
129
|
-
|
|
131
|
+
items {
|
|
132
|
+
id relationshipId eventType detail amount currency occursAt notified createdAt
|
|
133
|
+
updatedAt workspaceId
|
|
134
|
+
}
|
|
135
|
+
pageInfo { cursor hasMore }
|
|
130
136
|
}
|
|
131
137
|
}
|
|
132
138
|
`,F=`
|
|
133
139
|
query SubListAssets($relationshipId: ID!) {
|
|
134
140
|
subListAssets(relationshipId: $relationshipId) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
141
|
+
items {
|
|
142
|
+
id relationshipId name type secretRef expiresAt createdAt updatedAt workspaceId
|
|
143
|
+
file { id }
|
|
144
|
+
}
|
|
145
|
+
pageInfo { cursor hasMore }
|
|
138
146
|
}
|
|
139
147
|
}
|
|
140
148
|
`,G=`
|
|
@@ -147,8 +155,11 @@
|
|
|
147
155
|
`,H=`
|
|
148
156
|
query SubListEntitlements($relationshipId: ID!) {
|
|
149
157
|
subListEntitlements(relationshipId: $relationshipId) {
|
|
150
|
-
|
|
151
|
-
|
|
158
|
+
items {
|
|
159
|
+
id relationshipId name description type quota unit used isActive createdAt updatedAt
|
|
160
|
+
workspaceId
|
|
161
|
+
}
|
|
162
|
+
pageInfo { cursor hasMore }
|
|
152
163
|
}
|
|
153
164
|
}
|
|
154
165
|
`,V=`
|
|
@@ -188,8 +199,11 @@
|
|
|
188
199
|
`,K=`
|
|
189
200
|
query SubListPaymentInstruments($ownerId: ID) {
|
|
190
201
|
subListPaymentInstruments(ownerId: $ownerId) {
|
|
191
|
-
|
|
192
|
-
|
|
202
|
+
items {
|
|
203
|
+
id ownerId label type status brand last4 expiryMonth expiryYear isDefault createdAt
|
|
204
|
+
updatedAt workspaceId
|
|
205
|
+
}
|
|
206
|
+
pageInfo { cursor hasMore }
|
|
193
207
|
}
|
|
194
208
|
}
|
|
195
209
|
`,z=`
|
|
@@ -206,8 +220,11 @@
|
|
|
206
220
|
`,Q=`
|
|
207
221
|
query SubListChannels($ownerId: ID) {
|
|
208
222
|
subListChannels(ownerId: $ownerId) {
|
|
209
|
-
|
|
210
|
-
|
|
223
|
+
items {
|
|
224
|
+
id ownerId type address label status ingestEnabled verifiedAt createdAt updatedAt
|
|
225
|
+
workspaceId
|
|
226
|
+
}
|
|
227
|
+
pageInfo { cursor hasMore }
|
|
211
228
|
}
|
|
212
229
|
}
|
|
213
230
|
`,X=`
|
|
@@ -270,7 +287,8 @@
|
|
|
270
287
|
`,it=`
|
|
271
288
|
query SubListAgents($kind: SubAgentKind, $ownerId: ID, $status: SubAgentStatus) {
|
|
272
289
|
subListAgents(kind: $kind, ownerId: $ownerId, status: $status) {
|
|
273
|
-
id ownerId name description kind status lastRunAt createdAt
|
|
290
|
+
items { id ownerId name description kind status lastRunAt createdAt }
|
|
291
|
+
pageInfo { cursor hasMore }
|
|
274
292
|
}
|
|
275
293
|
}
|
|
276
294
|
`,ot=`
|
|
@@ -288,8 +306,11 @@
|
|
|
288
306
|
`,at=`
|
|
289
307
|
query SubListPolicies($agentId: ID) {
|
|
290
308
|
subListPolicies(agentId: $agentId) {
|
|
291
|
-
|
|
292
|
-
|
|
309
|
+
items {
|
|
310
|
+
id agentId name description action condition isEnabled triggerCount lastTriggeredAt
|
|
311
|
+
createdAt updatedAt workspaceId
|
|
312
|
+
}
|
|
313
|
+
pageInfo { cursor hasMore }
|
|
293
314
|
}
|
|
294
315
|
}
|
|
295
316
|
`,ut=`
|
|
@@ -302,8 +323,11 @@
|
|
|
302
323
|
`,ct=`
|
|
303
324
|
query SubListWorkflows($status: SubWorkflowStatus) {
|
|
304
325
|
subListWorkflows(status: $status) {
|
|
305
|
-
|
|
306
|
-
|
|
326
|
+
items {
|
|
327
|
+
id name description triggerEvent status runCount lastRunAt createdAt updatedAt
|
|
328
|
+
workspaceId
|
|
329
|
+
}
|
|
330
|
+
pageInfo { cursor hasMore }
|
|
307
331
|
}
|
|
308
332
|
}
|
|
309
333
|
`,dt=`
|
|
@@ -322,4 +346,4 @@
|
|
|
322
346
|
query SubHealth {
|
|
323
347
|
subHealth
|
|
324
348
|
}
|
|
325
|
-
`;function y(i,r){try{return JSON.parse(r)}catch{throw new l(`--${i} must be valid JSON`)}}function p(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new l(`Expected an integer but got "${i}"`);return r}function f(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new l(`Expected a number but got "${i}"`);return r}function b(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function mt(i){let r=i.command("providers").description("SubscriberBot provider registry (vendors / publishers / services)");r.command("list").description("List / search providers in the registry").option("--category <c>","Filter by provider category").option("--status <s>","Filter by provider status").option("--search <q>","Free-text search").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,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,search:t.search,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListProviders.items,{headers:["ID","Name","Category","Status","Region","Churn"],rows:e.subListProviders.items.map(n=>[c(n.id,12),n.name,n.category,n.status,n.region??"-",n.churnRiskScore!=null?String(n.churnRiskScore):"-"])});}catch(e){o(e);}}),r.command("get").description("Get a provider by id").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.subProvider)throw new l(`Provider ${t} not found`);s(e,n.subProvider);}catch(n){o(n);}}),r.command("create").description("Create a provider").requiredOption("--name <name>","Provider name").option("--category <c>","Provider category","OTHER").option("--status <s>","Provider status","UNVERIFIED").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"OTHER").toUpperCase(),status:(t.status??"UNVERIFIED").toUpperCase()};t.slug&&(e.slug=t.slug),t.description&&(e.description=t.description),t.industry&&(e.industry=t.industry),t.language&&(e.language=t.language),t.region&&(e.region=t.region),t.websiteUrl&&(e.websiteUrl=t.websiteUrl),t.logoFileId&&(e.logoFileId=t.logoFileId),t.tags&&(e.tags=b(t.tags));let n=await a(T,{input:e});u(`Provider created: ${n.subCreateProvider.name}`),s(t,n.subCreateProvider);}catch(e){o(e);}}),r.command("update").description("Update a provider").argument("<id>","Provider ID").option("--name <name>","Provider name").option("--category <c>","Provider category").option("--status <s>","Provider status").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--churn-risk-score <n>","Churn risk score",p).option("--vendor-health-score <n>","Vendor health score",p).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.category&&(n.category=e.category.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.slug&&(n.slug=e.slug),e.description!==void 0&&(n.description=e.description),e.industry&&(n.industry=e.industry),e.language&&(n.language=e.language),e.region&&(n.region=e.region),e.websiteUrl&&(n.websiteUrl=e.websiteUrl),e.logoFileId&&(n.logoFileId=e.logoFileId),e.churnRiskScore!==void 0&&(n.churnRiskScore=e.churnRiskScore),e.vendorHealthScore!==void 0&&(n.vendorHealthScore=e.vendorHealthScore),e.tags&&(n.tags=b(e.tags)),!Object.keys(n).length)throw new l("No updates specified");let C=await a(O,{id:t,input:n});u("Provider updated"),s(e,C.subUpdateProvider);}catch(n){o(n);}}),r.command("archive").description("Archive (soft-delete) a provider").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});u(`Provider ${t} archived`),s(e,{archived:n.subArchiveProvider});}catch(n){o(n);}});}function gt(i){let r=i.command("plans").description("SubscriberBot provider plans");r.command("list").description("List plans (optionally filtered by provider)").option("--provider <id>","Filter by provider ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{providerId:t.provider});s(t,e.subListPlans,{headers:["ID","Name","Amount","Currency","Interval","Active"],rows:e.subListPlans.map(n=>[c(n.id,12),n.name,String(n.amount),n.currency,n.interval,n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a plan for a provider").requiredOption("--provider <id>","Provider ID").requiredOption("--name <name>","Plan name").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--description <s>","Description").option("--features <csv>","Comma-separated feature list").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,name:t.name,interval:(t.interval??"MONTHLY").toUpperCase()};t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.description&&(e.description=t.description),t.features&&(e.features=b(t.features));let n=await a(D,{input:e});u(`Plan created: ${n.subCreatePlan.name}`),s(t,n.subCreatePlan);}catch(e){o(e);}});}function ft(i){let r=i.command("relationships").description("SubscriberBot subscriptions, memberships & recurring relationships");r.command("list").description("List relationships").option("--kind <k>","Filter by relationship kind").option("--owner <id>","Filter by owner ID").option("--provider <id>","Filter by provider ID").option("--status <s>","Filter by relationship 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(N,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,providerId:t.provider,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListRelationships.items,{headers:["ID","Label","Kind","Status","Amount","Renews"],rows:e.subListRelationships.items.map(n=>[c(n.id,12),n.label,n.kind,n.status,`${n.amount} ${n.currency}`,g(n.renewsAt)])});}catch(e){o(e);}}),r.command("get").description("Get a relationship by id").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});if(!n.subRelationship)throw new l(`Relationship ${t} not found`);s(e,n.subRelationship);}catch(n){o(n);}}),r.command("create").description("Create a relationship (subscription / membership / \u2026)").requiredOption("--label <label>","Human-readable label").option("--kind <k>","Relationship kind","SUBSCRIPTION").option("--status <s>","Relationship status","ACTIVE").option("--owner <id>","Owner ID").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--discovery-source <s>","Discovery source","MANUAL").option("--no-auto-renew","Disable auto-renew").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,kind:(t.kind??"SUBSCRIPTION").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase(),interval:(t.interval??"MONTHLY").toUpperCase(),discoverySource:(t.discoverySource??"MANUAL").toUpperCase(),autoRenew:t.autoRenew!==!1};t.owner&&(e.ownerId=t.owner),t.provider&&(e.providerId=t.provider),t.plan&&(e.planId=t.plan),t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=b(t.tags)),t.startedAt&&(e.startedAt=t.startedAt),t.renewsAt&&(e.renewsAt=t.renewsAt),t.trialEndsAt&&(e.trialEndsAt=t.trialEndsAt);let n=await a(_,{input:e});u(`Relationship created: ${n.subCreateRelationship.label}`),s(t,n.subCreateRelationship);}catch(e){o(e);}}),r.command("update").description("Update a relationship").argument("<id>","Relationship ID").option("--label <label>","Label").option("--kind <k>","Relationship kind").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval").option("--auto-renew <bool>","true|false",t=>t==="true").option("--health-score <n>","Health score",p).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.label&&(n.label=e.label),e.kind&&(n.kind=e.kind.toUpperCase()),e.provider&&(n.providerId=e.provider),e.plan&&(n.planId=e.plan),e.amount!==void 0&&(n.amount=e.amount),e.currency&&(n.currency=e.currency),e.interval&&(n.interval=e.interval.toUpperCase()),e.autoRenew!==void 0&&(n.autoRenew=e.autoRenew),e.healthScore!==void 0&&(n.healthScore=e.healthScore),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=b(e.tags)),e.startedAt&&(n.startedAt=e.startedAt),e.renewsAt&&(n.renewsAt=e.renewsAt),e.trialEndsAt&&(n.trialEndsAt=e.trialEndsAt),!Object.keys(n).length)throw new l("No updates specified");let C=await a(q,{id:t,input:n});u("Relationship updated"),s(e,C.subUpdateRelationship);}catch(n){o(n);}}),r.command("cancel").description("Cancel a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t});u(`Relationship cancelled: ${n.subCancelRelationship.label}`),s(e,n.subCancelRelationship);}catch(n){o(n);}}),r.command("transition").description("Advance a relationship through its lifecycle").argument("<id>","Relationship ID").requiredOption("--status <s>","ACTIVE|TRIAL|PAST_DUE|PAUSED|CANCELLED|EXPIRED|LAPSED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});u(`Relationship status set to ${n.subTransitionRelationship.status}`),s(e,n.subTransitionRelationship);}catch(n){o(n);}}),r.command("renewals").description("List renewal events").option("--relationship <id>","Filter by relationship ID").option("--upcoming-only","Only upcoming events").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(W,{relationshipId:t.relationship,upcomingOnly:t.upcomingOnly?!0:void 0});s(t,e.subListRenewalEvents,{headers:["ID","Relationship","Type","Amount","Occurs","Notified"],rows:e.subListRenewalEvents.map(n=>[c(n.id,12),c(n.relationshipId,12),n.eventType,n.amount!=null?`${n.amount} ${n.currency??""}`.trim():"-",g(n.occursAt),n.notified?"yes":"no"])});}catch(e){o(e);}});}function bt(i){let r=i.command("assets").description("SubscriberBot relationship assets (contracts, licenses, credentials, \u2026)");r.command("list").description("List assets for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{relationshipId:t.relationship});s(t,e.subListAssets,{headers:["ID","Name","Type","Secret","Expires"],rows:e.subListAssets.map(n=>[c(n.id,12),n.name,n.type,n.secretRef?"yes":"no",g(n.expiresAt)])});}catch(e){o(e);}}),r.command("create").description("Create an asset on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Asset name").option("--type <t>","Asset type","RECEIPT").option("--file-id <id>","Referenced file ID (blob lives in wspace-files-svc)").option("--secret-ref <ref>","Secret reference").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"RECEIPT").toUpperCase()};t.fileId&&(e.fileId=t.fileId),t.secretRef&&(e.secretRef=t.secretRef),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(G,{input:e});u(`Asset created: ${n.subCreateAsset.name}`),s(t,n.subCreateAsset);}catch(e){o(e);}});}function It(i){let r=i.command("entitlements").description("SubscriberBot relationship entitlements (seats, quotas, features, \u2026)");r.command("list").description("List entitlements for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{relationshipId:t.relationship});s(t,e.subListEntitlements,{headers:["ID","Name","Type","Used","Quota","Active"],rows:e.subListEntitlements.map(n=>[c(n.id,12),n.name,n.type,String(n.used),n.quota!=null?String(n.quota):"-",n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create an entitlement on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Entitlement name").option("--type <t>","Entitlement type","FEATURE_ACCESS").option("--description <s>","Description").option("--quota <n>","Quota",p).option("--unit <u>","Quota unit").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"FEATURE_ACCESS").toUpperCase()};t.description&&(e.description=t.description),t.quota!==void 0&&(e.quota=t.quota),t.unit&&(e.unit=t.unit);let n=await a(V,{input:e});u(`Entitlement created: ${n.subCreateEntitlement.name}`),s(t,n.subCreateEntitlement);}catch(e){o(e);}});}function ht(i){let r=i.command("invoices").description("SubscriberBot invoices");r.command("list").description("List invoices").option("--relationship <id>","Filter by relationship ID").option("--status <s>","Filter by invoice 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(j,{relationshipId:t.relationship,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInvoices.items,{headers:["ID","Number","Status","Total","Currency","Due"],rows:e.subListInvoices.items.map(n=>[c(n.id,12),n.number??"-",n.status,String(n.total),n.currency,g(n.dueDate)])});}catch(e){o(e);}}),r.command("create").description("Create an invoice on a relationship").requiredOption("--relationship <id>","Relationship ID").option("--number <n>","Invoice number").option("--status <s>","Invoice status","ISSUED").option("--currency <c>","Currency code").option("--subtotal <n>","Subtotal",f).option("--tax-amount <n>","Tax amount",f).option("--total <n>","Total",f).option("--line-items <json>","Line items JSON").option("--issue-date <iso>","Issue date (ISO date)").option("--due-date <iso>","Due date (ISO date)").option("--payment-instrument <id>","Payment instrument ID").option("--file-id <id>","Referenced file ID (invoice PDF in wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,status:(t.status??"ISSUED").toUpperCase()};t.number&&(e.number=t.number),t.currency&&(e.currency=t.currency),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=y("line-items",t.lineItems)),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.paymentInstrument&&(e.paymentInstrumentId=t.paymentInstrument),t.fileId&&(e.fileId=t.fileId);let n=await a(B,{input:e});u(`Invoice created: ${n.subCreateInvoice.number??n.subCreateInvoice.id}`),s(t,n.subCreateInvoice);}catch(e){o(e);}}),r.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});u(`Invoice marked paid: ${n.subMarkInvoicePaid.number??n.subMarkInvoicePaid.id}`),s(e,n.subMarkInvoicePaid);}catch(n){o(n);}});}function yt(i){let r=i.command("payment-instruments").description("SubscriberBot payment instruments (cards, wallets, bank accounts, \u2026)");r.command("list").description("List payment instruments").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{ownerId:t.owner});s(t,e.subListPaymentInstruments,{headers:["ID","Label","Type","Status","Brand","Last4","Default"],rows:e.subListPaymentInstruments.map(n=>[c(n.id,12),n.label,n.type,n.status,n.brand??"-",n.last4??"-",n.isDefault?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Add a payment instrument").requiredOption("--label <label>","Label").option("--type <t>","Payment instrument type","CARD").option("--owner <id>","Owner ID").option("--brand <b>","Card/instrument brand").option("--last4 <n>","Last 4 digits").option("--expiry-month <n>","Expiry month",p).option("--expiry-year <n>","Expiry year",p).option("--processor-token <t>","Processor token").option("--default","Mark as default").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,type:(t.type??"CARD").toUpperCase(),isDefault:t.default===!0};t.owner&&(e.ownerId=t.owner),t.brand&&(e.brand=t.brand),t.last4&&(e.last4=t.last4),t.expiryMonth!==void 0&&(e.expiryMonth=t.expiryMonth),t.expiryYear!==void 0&&(e.expiryYear=t.expiryYear),t.processorToken&&(e.processorToken=t.processorToken);let n=await a(z,{input:e});u(`Payment instrument added: ${n.subCreatePaymentInstrument.label}`),s(t,n.subCreatePaymentInstrument);}catch(e){o(e);}}),r.command("remove").description("Remove a payment instrument").argument("<id>","Payment instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});u(`Payment instrument ${t} removed`),s(e,{removed:n.subRemovePaymentInstrument});}catch(n){o(n);}});}function wt(i){let r=i.command("channels").description("SubscriberBot communication channels (email, sms, slack, webhook, \u2026)");r.command("list").description("List communication channels").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{ownerId:t.owner});s(t,e.subListChannels,{headers:["ID","Type","Address","Label","Status","Ingest"],rows:e.subListChannels.map(n=>[c(n.id,12),n.type,n.address,n.label??"-",n.status,n.ingestEnabled?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a communication channel").requiredOption("--address <addr>","Channel address (email, phone, webhook URL, \u2026)").option("--type <t>","Channel type","EMAIL").option("--owner <id>","Owner ID").option("--label <label>","Label").option("--no-ingest","Disable message ingestion").option("-f, --format <format>","Output format").action(async t=>{try{let e={address:t.address,type:(t.type??"EMAIL").toUpperCase(),ingestEnabled:t.ingest!==!1};t.owner&&(e.ownerId=t.owner),t.label&&(e.label=t.label);let n=await a(X,{input:e});u(`Channel created: ${n.subCreateChannel.address}`),s(t,n.subCreateChannel);}catch(e){o(e);}}),r.command("verify").description("Mark a channel as verified").argument("<id>","Channel ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Channel verified: ${n.subVerifyChannel.address}`),s(e,n.subVerifyChannel);}catch(n){o(n);}});}function Ct(i){let r=i.command("inbox").description("SubscriberBot universal inbox (merged subscription communications)");r.command("list").description("List inbox messages").option("--category <c>","Filter by message category").option("--channel <id>","Filter by channel ID").option("--relationship <id>","Filter by relationship ID").option("--unread-only","Only unread messages").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(tt,{category:t.category?t.category.toUpperCase():void 0,channelId:t.channel,relationshipId:t.relationship,unreadOnly:t.unreadOnly?!0:void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInboxMessages.items,{headers:["ID","Subject","Category","Read","Action","Received"],rows:e.subListInboxMessages.items.map(n=>[c(n.id,12),c(n.subject??"-",30),n.category,n.isRead?"yes":"no",n.actionRequired?"yes":"no",g(n.receivedAt)])});}catch(e){o(e);}}),r.command("ingest").description("Ingest a message into the universal inbox").requiredOption("--channel <id>","Channel ID").requiredOption("--received-at <iso>","Received at (ISO date)").option("--category <c>","Message category","OTHER").option("--relationship <id>","Relationship ID").option("--subject <s>","Subject").option("--preview <s>","Preview text").option("--external-id <id>","External message ID").option("--category-confidence <n>","Category confidence (0-100)",p).option("--action-required","Flag as action required").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,receivedAt:t.receivedAt,category:(t.category??"OTHER").toUpperCase(),actionRequired:t.actionRequired===!0};t.relationship&&(e.relationshipId=t.relationship),t.subject&&(e.subject=t.subject),t.preview&&(e.preview=t.preview),t.externalId&&(e.externalId=t.externalId),t.categoryConfidence!==void 0&&(e.categoryConfidence=t.categoryConfidence);let n=await a(et,{input:e});u(`Message ingested: ${n.subIngestMessage.id}`),s(t,n.subIngestMessage);}catch(e){o(e);}}),r.command("mark-read").description("Mark a message as read").argument("<id>","Message ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(nt,{id:t});u(`Message ${t} marked read`),s(e,n.subMarkMessageRead);}catch(n){o(n);}});}function At(i){let r=i.command("agents").description("SubscriberBot AI agents & their automation policies");r.command("list").description("List AI agents").option("--kind <k>","Filter by agent kind").option("--owner <id>","Filter by owner ID").option("--status <s>","Filter by agent status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,status:t.status?t.status.toUpperCase():void 0});s(t,e.subListAgents,{headers:["ID","Name","Kind","Status","Description"],rows:e.subListAgents.map(n=>[c(n.id,12),n.name,n.kind,n.status,c(n.description??"-",30)])});}catch(e){o(e);}}),r.command("get").description("Get an agent by id").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(rt,{id:t});if(!n.subAgent)throw new l(`Agent ${t} not found`);s(e,n.subAgent);}catch(n){o(n);}}),r.command("create").description("Create an AI agent").requiredOption("--name <name>","Agent name").option("--kind <k>","Agent kind","DISCOVERY").option("--status <s>","Agent status","SUGGEST_ONLY").option("--owner <id>","Owner ID").option("--description <s>","Description").option("--config <json>","Agent config JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"DISCOVERY").toUpperCase(),status:(t.status??"SUGGEST_ONLY").toUpperCase()};t.owner&&(e.ownerId=t.owner),t.description&&(e.description=t.description),t.config&&(e.config=y("config",t.config));let n=await a(ot,{input:e});u(`Agent created: ${n.subCreateAgent.name}`),s(t,n.subCreateAgent);}catch(e){o(e);}}),r.command("set-status").description("Change an agent's operating posture").argument("<id>","Agent ID").requiredOption("--status <s>","DISABLED|SUGGEST_ONLY|AUTONOMOUS").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t,status:e.status.toUpperCase()});u(`Agent status set to ${n.subSetAgentStatus.status}`),s(e,n.subSetAgentStatus);}catch(n){o(n);}}),r.command("list-policies").description("List policies (optionally filtered by agent)").option("--agent <id>","Filter by agent ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(at,{agentId:t.agent});s(t,e.subListPolicies,{headers:["ID","Name","Action","Enabled","Triggers"],rows:e.subListPolicies.map(n=>[c(n.id,12),n.name,n.action,n.isEnabled?"yes":"no",String(n.triggerCount??0)])});}catch(e){o(e);}}),r.command("create-policy").description("Create an automation policy for an agent").requiredOption("--agent <id>","Agent ID").requiredOption("--name <name>","Policy name").option("--action <a>","Policy action","ALERT").option("--description <s>","Description").option("--condition <json>","Condition JSON").option("--no-enabled","Create disabled").option("-f, --format <format>","Output format").action(async t=>{try{let e={agentId:t.agent,name:t.name,action:(t.action??"ALERT").toUpperCase(),isEnabled:t.enabled!==!1};t.description&&(e.description=t.description),t.condition&&(e.condition=y("condition",t.condition));let n=await a(ut,{input:e});u(`Policy created: ${n.subCreatePolicy.name}`),s(t,n.subCreatePolicy);}catch(e){o(e);}});}function vt(i){let r=i.command("workflows").description("SubscriberBot automation workflows");r.command("list").description("List workflows").option("--status <s>","Filter by workflow status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ct,{status:t.status?t.status.toUpperCase():void 0});s(t,e.subListWorkflows,{headers:["ID","Name","Trigger","Status","Runs"],rows:e.subListWorkflows.map(n=>[c(n.id,12),n.name,n.triggerEvent,n.status,String(n.runCount??0)])});}catch(e){o(e);}}),r.command("create").description("Create a workflow").requiredOption("--name <name>","Workflow name").requiredOption("--trigger-event <e>","Trigger event").option("--description <s>","Description").option("--steps <json>","Steps JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,triggerEvent:t.triggerEvent};t.description&&(e.description=t.description),t.steps&&(e.steps=y("steps",t.steps));let n=await a(dt,{input:e});u(`Workflow created: ${n.subCreateWorkflow.name}`),s(t,n.subCreateWorkflow);}catch(e){o(e);}}),r.command("activate").description("Activate a workflow").argument("<id>","Workflow ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(pt,{id:t});u(`Workflow activated: ${n.subActivateWorkflow.name}`),s(e,n.subActivateWorkflow);}catch(n){o(n);}});}function kt(i){i.command("health").description("SubscriberBot service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await v(lt);u(t.subHealth),s(r,{health:t.subHealth});}catch(t){o(t);}});}var qt={id:"subscriberbot",version:"1.0.0",displayName:"SubscriberBot",dependsOn:["auth","workspaces"],register(i,r){S(r);let t=i.command("subscriberbot").description("SubscriberBot universal subscription & relationship management");mt(t),gt(t),ft(t),bt(t),It(t),ht(t),yt(t),wt(t),Ct(t),At(t),vt(t),kt(t);}},Gn=qt;module.exports=Gn;
|
|
349
|
+
`;function y(i,r){try{return JSON.parse(r)}catch{throw new l(`--${i} must be valid JSON`)}}function p(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new l(`Expected an integer but got "${i}"`);return r}function f(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new l(`Expected a number but got "${i}"`);return r}function b(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function mt(i){let r=i.command("providers").description("SubscriberBot provider registry (vendors / publishers / services)");r.command("list").description("List / search providers in the registry").option("--category <c>","Filter by provider category").option("--status <s>","Filter by provider status").option("--search <q>","Free-text search").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,{category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,search:t.search,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListProviders.items,{headers:["ID","Name","Category","Status","Region","Churn"],rows:e.subListProviders.items.map(n=>[c(n.id,12),n.name,n.category,n.status,n.region??"-",n.churnRiskScore!=null?String(n.churnRiskScore):"-"])});}catch(e){o(e);}}),r.command("get").description("Get a provider by id").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.subProvider)throw new l(`Provider ${t} not found`);s(e,n.subProvider);}catch(n){o(n);}}),r.command("create").description("Create a provider").requiredOption("--name <name>","Provider name").option("--category <c>","Provider category","OTHER").option("--status <s>","Provider status","UNVERIFIED").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"OTHER").toUpperCase(),status:(t.status??"UNVERIFIED").toUpperCase()};t.slug&&(e.slug=t.slug),t.description&&(e.description=t.description),t.industry&&(e.industry=t.industry),t.language&&(e.language=t.language),t.region&&(e.region=t.region),t.websiteUrl&&(e.websiteUrl=t.websiteUrl),t.logoFileId&&(e.logoFileId=t.logoFileId),t.tags&&(e.tags=b(t.tags));let n=await a(T,{input:e});u(`Provider created: ${n.subCreateProvider.name}`),s(t,n.subCreateProvider);}catch(e){o(e);}}),r.command("update").description("Update a provider").argument("<id>","Provider ID").option("--name <name>","Provider name").option("--category <c>","Provider category").option("--status <s>","Provider status").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--industry <s>","Industry").option("--language <s>","Language").option("--region <s>","Region").option("--website-url <url>","Website URL").option("--logo-file-id <id>","Logo file ID").option("--churn-risk-score <n>","Churn risk score",p).option("--vendor-health-score <n>","Vendor health score",p).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.category&&(n.category=e.category.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.slug&&(n.slug=e.slug),e.description!==void 0&&(n.description=e.description),e.industry&&(n.industry=e.industry),e.language&&(n.language=e.language),e.region&&(n.region=e.region),e.websiteUrl&&(n.websiteUrl=e.websiteUrl),e.logoFileId&&(n.logoFileId=e.logoFileId),e.churnRiskScore!==void 0&&(n.churnRiskScore=e.churnRiskScore),e.vendorHealthScore!==void 0&&(n.vendorHealthScore=e.vendorHealthScore),e.tags&&(n.tags=b(e.tags)),!Object.keys(n).length)throw new l("No updates specified");let C=await a(O,{id:t,input:n});u("Provider updated"),s(e,C.subUpdateProvider);}catch(n){o(n);}}),r.command("archive").description("Archive (soft-delete) a provider").argument("<id>","Provider ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});u(`Provider ${t} archived`),s(e,{archived:n.subArchiveProvider});}catch(n){o(n);}});}function gt(i){let r=i.command("plans").description("SubscriberBot provider plans");r.command("list").description("List plans (optionally filtered by provider)").option("--provider <id>","Filter by provider ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{providerId:t.provider});s(t,e.subListPlans.items,{headers:["ID","Name","Amount","Currency","Interval","Active"],rows:e.subListPlans.items.map(n=>[c(n.id,12),n.name,String(n.amount),n.currency,n.interval,n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a plan for a provider").requiredOption("--provider <id>","Provider ID").requiredOption("--name <name>","Plan name").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--description <s>","Description").option("--features <csv>","Comma-separated feature list").option("-f, --format <format>","Output format").action(async t=>{try{let e={providerId:t.provider,name:t.name,interval:(t.interval??"MONTHLY").toUpperCase()};t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.description&&(e.description=t.description),t.features&&(e.features=b(t.features));let n=await a(D,{input:e});u(`Plan created: ${n.subCreatePlan.name}`),s(t,n.subCreatePlan);}catch(e){o(e);}});}function ft(i){let r=i.command("relationships").description("SubscriberBot subscriptions, memberships & recurring relationships");r.command("list").description("List relationships").option("--kind <k>","Filter by relationship kind").option("--owner <id>","Filter by owner ID").option("--provider <id>","Filter by provider ID").option("--status <s>","Filter by relationship 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(N,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,providerId:t.provider,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListRelationships.items,{headers:["ID","Label","Kind","Status","Amount","Renews"],rows:e.subListRelationships.items.map(n=>[c(n.id,12),n.label,n.kind,n.status,`${n.amount} ${n.currency}`,g(n.renewsAt)])});}catch(e){o(e);}}),r.command("get").description("Get a relationship by id").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});if(!n.subRelationship)throw new l(`Relationship ${t} not found`);s(e,n.subRelationship);}catch(n){o(n);}}),r.command("create").description("Create a relationship (subscription / membership / \u2026)").requiredOption("--label <label>","Human-readable label").option("--kind <k>","Relationship kind","SUBSCRIPTION").option("--status <s>","Relationship status","ACTIVE").option("--owner <id>","Owner ID").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval","MONTHLY").option("--discovery-source <s>","Discovery source","MANUAL").option("--no-auto-renew","Disable auto-renew").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,kind:(t.kind??"SUBSCRIPTION").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase(),interval:(t.interval??"MONTHLY").toUpperCase(),discoverySource:(t.discoverySource??"MANUAL").toUpperCase(),autoRenew:t.autoRenew!==!1};t.owner&&(e.ownerId=t.owner),t.provider&&(e.providerId=t.provider),t.plan&&(e.planId=t.plan),t.amount!==void 0&&(e.amount=t.amount),t.currency&&(e.currency=t.currency),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=b(t.tags)),t.startedAt&&(e.startedAt=t.startedAt),t.renewsAt&&(e.renewsAt=t.renewsAt),t.trialEndsAt&&(e.trialEndsAt=t.trialEndsAt);let n=await a(_,{input:e});u(`Relationship created: ${n.subCreateRelationship.label}`),s(t,n.subCreateRelationship);}catch(e){o(e);}}),r.command("update").description("Update a relationship").argument("<id>","Relationship ID").option("--label <label>","Label").option("--kind <k>","Relationship kind").option("--provider <id>","Provider ID").option("--plan <id>","Plan ID").option("--amount <n>","Amount",f).option("--currency <c>","Currency code").option("--interval <i>","Billing interval").option("--auto-renew <bool>","true|false",t=>t==="true").option("--health-score <n>","Health score",p).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("--started-at <iso>","Started at (ISO date)").option("--renews-at <iso>","Renews at (ISO date)").option("--trial-ends-at <iso>","Trial end (ISO date)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.label&&(n.label=e.label),e.kind&&(n.kind=e.kind.toUpperCase()),e.provider&&(n.providerId=e.provider),e.plan&&(n.planId=e.plan),e.amount!==void 0&&(n.amount=e.amount),e.currency&&(n.currency=e.currency),e.interval&&(n.interval=e.interval.toUpperCase()),e.autoRenew!==void 0&&(n.autoRenew=e.autoRenew),e.healthScore!==void 0&&(n.healthScore=e.healthScore),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=b(e.tags)),e.startedAt&&(n.startedAt=e.startedAt),e.renewsAt&&(n.renewsAt=e.renewsAt),e.trialEndsAt&&(n.trialEndsAt=e.trialEndsAt),!Object.keys(n).length)throw new l("No updates specified");let C=await a(q,{id:t,input:n});u("Relationship updated"),s(e,C.subUpdateRelationship);}catch(n){o(n);}}),r.command("cancel").description("Cancel a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(M,{id:t});u(`Relationship cancelled: ${n.subCancelRelationship.label}`),s(e,n.subCancelRelationship);}catch(n){o(n);}}),r.command("transition").description("Advance a relationship through its lifecycle").argument("<id>","Relationship ID").requiredOption("--status <s>","ACTIVE|TRIAL|PAST_DUE|PAUSED|CANCELLED|EXPIRED|LAPSED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});u(`Relationship status set to ${n.subTransitionRelationship.status}`),s(e,n.subTransitionRelationship);}catch(n){o(n);}}),r.command("renewals").description("List renewal events").option("--relationship <id>","Filter by relationship ID").option("--upcoming-only","Only upcoming events").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(W,{relationshipId:t.relationship,upcomingOnly:t.upcomingOnly?!0:void 0});s(t,e.subListRenewalEvents.items,{headers:["ID","Relationship","Type","Amount","Occurs","Notified"],rows:e.subListRenewalEvents.items.map(n=>[c(n.id,12),c(n.relationshipId,12),n.eventType,n.amount!=null?`${n.amount} ${n.currency??""}`.trim():"-",g(n.occursAt),n.notified?"yes":"no"])});}catch(e){o(e);}});}function bt(i){let r=i.command("assets").description("SubscriberBot relationship assets (contracts, licenses, credentials, \u2026)");r.command("list").description("List assets for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{relationshipId:t.relationship});s(t,e.subListAssets.items,{headers:["ID","Name","Type","Secret","Expires"],rows:e.subListAssets.items.map(n=>[c(n.id,12),n.name,n.type,n.secretRef?"yes":"no",g(n.expiresAt)])});}catch(e){o(e);}}),r.command("create").description("Create an asset on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Asset name").option("--type <t>","Asset type","RECEIPT").option("--file-id <id>","Referenced file ID (blob lives in wspace-files-svc)").option("--secret-ref <ref>","Secret reference").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"RECEIPT").toUpperCase()};t.fileId&&(e.fileId=t.fileId),t.secretRef&&(e.secretRef=t.secretRef),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(G,{input:e});u(`Asset created: ${n.subCreateAsset.name}`),s(t,n.subCreateAsset);}catch(e){o(e);}});}function It(i){let r=i.command("entitlements").description("SubscriberBot relationship entitlements (seats, quotas, features, \u2026)");r.command("list").description("List entitlements for a relationship").requiredOption("--relationship <id>","Relationship ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{relationshipId:t.relationship});s(t,e.subListEntitlements.items,{headers:["ID","Name","Type","Used","Quota","Active"],rows:e.subListEntitlements.items.map(n=>[c(n.id,12),n.name,n.type,String(n.used),n.quota!=null?String(n.quota):"-",n.isActive?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create an entitlement on a relationship").requiredOption("--relationship <id>","Relationship ID").requiredOption("--name <name>","Entitlement name").option("--type <t>","Entitlement type","FEATURE_ACCESS").option("--description <s>","Description").option("--quota <n>","Quota",p).option("--unit <u>","Quota unit").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,name:t.name,type:(t.type??"FEATURE_ACCESS").toUpperCase()};t.description&&(e.description=t.description),t.quota!==void 0&&(e.quota=t.quota),t.unit&&(e.unit=t.unit);let n=await a(V,{input:e});u(`Entitlement created: ${n.subCreateEntitlement.name}`),s(t,n.subCreateEntitlement);}catch(e){o(e);}});}function ht(i){let r=i.command("invoices").description("SubscriberBot invoices");r.command("list").description("List invoices").option("--relationship <id>","Filter by relationship ID").option("--status <s>","Filter by invoice 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(j,{relationshipId:t.relationship,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInvoices.items,{headers:["ID","Number","Status","Total","Currency","Due"],rows:e.subListInvoices.items.map(n=>[c(n.id,12),n.number??"-",n.status,String(n.total),n.currency,g(n.dueDate)])});}catch(e){o(e);}}),r.command("create").description("Create an invoice on a relationship").requiredOption("--relationship <id>","Relationship ID").option("--number <n>","Invoice number").option("--status <s>","Invoice status","ISSUED").option("--currency <c>","Currency code").option("--subtotal <n>","Subtotal",f).option("--tax-amount <n>","Tax amount",f).option("--total <n>","Total",f).option("--line-items <json>","Line items JSON").option("--issue-date <iso>","Issue date (ISO date)").option("--due-date <iso>","Due date (ISO date)").option("--payment-instrument <id>","Payment instrument ID").option("--file-id <id>","Referenced file ID (invoice PDF in wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={relationshipId:t.relationship,status:(t.status??"ISSUED").toUpperCase()};t.number&&(e.number=t.number),t.currency&&(e.currency=t.currency),t.subtotal!==void 0&&(e.subtotal=t.subtotal),t.taxAmount!==void 0&&(e.taxAmount=t.taxAmount),t.total!==void 0&&(e.total=t.total),t.lineItems&&(e.lineItems=y("line-items",t.lineItems)),t.issueDate&&(e.issueDate=t.issueDate),t.dueDate&&(e.dueDate=t.dueDate),t.paymentInstrument&&(e.paymentInstrumentId=t.paymentInstrument),t.fileId&&(e.fileId=t.fileId);let n=await a(B,{input:e});u(`Invoice created: ${n.subCreateInvoice.number??n.subCreateInvoice.id}`),s(t,n.subCreateInvoice);}catch(e){o(e);}}),r.command("mark-paid").description("Mark an invoice as paid").argument("<id>","Invoice ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});u(`Invoice marked paid: ${n.subMarkInvoicePaid.number??n.subMarkInvoicePaid.id}`),s(e,n.subMarkInvoicePaid);}catch(n){o(n);}});}function yt(i){let r=i.command("payment-instruments").description("SubscriberBot payment instruments (cards, wallets, bank accounts, \u2026)");r.command("list").description("List payment instruments").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{ownerId:t.owner});s(t,e.subListPaymentInstruments.items,{headers:["ID","Label","Type","Status","Brand","Last4","Default"],rows:e.subListPaymentInstruments.items.map(n=>[c(n.id,12),n.label,n.type,n.status,n.brand??"-",n.last4??"-",n.isDefault?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Add a payment instrument").requiredOption("--label <label>","Label").option("--type <t>","Payment instrument type","CARD").option("--owner <id>","Owner ID").option("--brand <b>","Card/instrument brand").option("--last4 <n>","Last 4 digits").option("--expiry-month <n>","Expiry month",p).option("--expiry-year <n>","Expiry year",p).option("--processor-token <t>","Processor token").option("--default","Mark as default").option("-f, --format <format>","Output format").action(async t=>{try{let e={label:t.label,type:(t.type??"CARD").toUpperCase(),isDefault:t.default===!0};t.owner&&(e.ownerId=t.owner),t.brand&&(e.brand=t.brand),t.last4&&(e.last4=t.last4),t.expiryMonth!==void 0&&(e.expiryMonth=t.expiryMonth),t.expiryYear!==void 0&&(e.expiryYear=t.expiryYear),t.processorToken&&(e.processorToken=t.processorToken);let n=await a(z,{input:e});u(`Payment instrument added: ${n.subCreatePaymentInstrument.label}`),s(t,n.subCreatePaymentInstrument);}catch(e){o(e);}}),r.command("remove").description("Remove a payment instrument").argument("<id>","Payment instrument ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});u(`Payment instrument ${t} removed`),s(e,{removed:n.subRemovePaymentInstrument});}catch(n){o(n);}});}function wt(i){let r=i.command("channels").description("SubscriberBot communication channels (email, sms, slack, webhook, \u2026)");r.command("list").description("List communication channels").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{ownerId:t.owner});s(t,e.subListChannels.items,{headers:["ID","Type","Address","Label","Status","Ingest"],rows:e.subListChannels.items.map(n=>[c(n.id,12),n.type,n.address,n.label??"-",n.status,n.ingestEnabled?"yes":"no"])});}catch(e){o(e);}}),r.command("create").description("Create a communication channel").requiredOption("--address <addr>","Channel address (email, phone, webhook URL, \u2026)").option("--type <t>","Channel type","EMAIL").option("--owner <id>","Owner ID").option("--label <label>","Label").option("--no-ingest","Disable message ingestion").option("-f, --format <format>","Output format").action(async t=>{try{let e={address:t.address,type:(t.type??"EMAIL").toUpperCase(),ingestEnabled:t.ingest!==!1};t.owner&&(e.ownerId=t.owner),t.label&&(e.label=t.label);let n=await a(X,{input:e});u(`Channel created: ${n.subCreateChannel.address}`),s(t,n.subCreateChannel);}catch(e){o(e);}}),r.command("verify").description("Mark a channel as verified").argument("<id>","Channel ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Channel verified: ${n.subVerifyChannel.address}`),s(e,n.subVerifyChannel);}catch(n){o(n);}});}function Ct(i){let r=i.command("inbox").description("SubscriberBot universal inbox (merged subscription communications)");r.command("list").description("List inbox messages").option("--category <c>","Filter by message category").option("--channel <id>","Filter by channel ID").option("--relationship <id>","Filter by relationship ID").option("--unread-only","Only unread messages").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(tt,{category:t.category?t.category.toUpperCase():void 0,channelId:t.channel,relationshipId:t.relationship,unreadOnly:t.unreadOnly?!0:void 0,pagination:{limit:t.limit,offset:t.offset}});s(t,e.subListInboxMessages.items,{headers:["ID","Subject","Category","Read","Action","Received"],rows:e.subListInboxMessages.items.map(n=>[c(n.id,12),c(n.subject??"-",30),n.category,n.isRead?"yes":"no",n.actionRequired?"yes":"no",g(n.receivedAt)])});}catch(e){o(e);}}),r.command("ingest").description("Ingest a message into the universal inbox").requiredOption("--channel <id>","Channel ID").requiredOption("--received-at <iso>","Received at (ISO date)").option("--category <c>","Message category","OTHER").option("--relationship <id>","Relationship ID").option("--subject <s>","Subject").option("--preview <s>","Preview text").option("--external-id <id>","External message ID").option("--category-confidence <n>","Category confidence (0-100)",p).option("--action-required","Flag as action required").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,receivedAt:t.receivedAt,category:(t.category??"OTHER").toUpperCase(),actionRequired:t.actionRequired===!0};t.relationship&&(e.relationshipId=t.relationship),t.subject&&(e.subject=t.subject),t.preview&&(e.preview=t.preview),t.externalId&&(e.externalId=t.externalId),t.categoryConfidence!==void 0&&(e.categoryConfidence=t.categoryConfidence);let n=await a(et,{input:e});u(`Message ingested: ${n.subIngestMessage.id}`),s(t,n.subIngestMessage);}catch(e){o(e);}}),r.command("mark-read").description("Mark a message as read").argument("<id>","Message ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(nt,{id:t});u(`Message ${t} marked read`),s(e,n.subMarkMessageRead);}catch(n){o(n);}});}function At(i){let r=i.command("agents").description("SubscriberBot AI agents & their automation policies");r.command("list").description("List AI agents").option("--kind <k>","Filter by agent kind").option("--owner <id>","Filter by owner ID").option("--status <s>","Filter by agent status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{kind:t.kind?t.kind.toUpperCase():void 0,ownerId:t.owner,status:t.status?t.status.toUpperCase():void 0});s(t,e.subListAgents.items,{headers:["ID","Name","Kind","Status","Description"],rows:e.subListAgents.items.map(n=>[c(n.id,12),n.name,n.kind,n.status,c(n.description??"-",30)])});}catch(e){o(e);}}),r.command("get").description("Get an agent by id").argument("<id>","Agent ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(rt,{id:t});if(!n.subAgent)throw new l(`Agent ${t} not found`);s(e,n.subAgent);}catch(n){o(n);}}),r.command("create").description("Create an AI agent").requiredOption("--name <name>","Agent name").option("--kind <k>","Agent kind","DISCOVERY").option("--status <s>","Agent status","SUGGEST_ONLY").option("--owner <id>","Owner ID").option("--description <s>","Description").option("--config <json>","Agent config JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,kind:(t.kind??"DISCOVERY").toUpperCase(),status:(t.status??"SUGGEST_ONLY").toUpperCase()};t.owner&&(e.ownerId=t.owner),t.description&&(e.description=t.description),t.config&&(e.config=y("config",t.config));let n=await a(ot,{input:e});u(`Agent created: ${n.subCreateAgent.name}`),s(t,n.subCreateAgent);}catch(e){o(e);}}),r.command("set-status").description("Change an agent's operating posture").argument("<id>","Agent ID").requiredOption("--status <s>","DISABLED|SUGGEST_ONLY|AUTONOMOUS").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t,status:e.status.toUpperCase()});u(`Agent status set to ${n.subSetAgentStatus.status}`),s(e,n.subSetAgentStatus);}catch(n){o(n);}}),r.command("list-policies").description("List policies (optionally filtered by agent)").option("--agent <id>","Filter by agent ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(at,{agentId:t.agent});s(t,e.subListPolicies.items,{headers:["ID","Name","Action","Enabled","Triggers"],rows:e.subListPolicies.items.map(n=>[c(n.id,12),n.name,n.action,n.isEnabled?"yes":"no",String(n.triggerCount??0)])});}catch(e){o(e);}}),r.command("create-policy").description("Create an automation policy for an agent").requiredOption("--agent <id>","Agent ID").requiredOption("--name <name>","Policy name").option("--action <a>","Policy action","ALERT").option("--description <s>","Description").option("--condition <json>","Condition JSON").option("--no-enabled","Create disabled").option("-f, --format <format>","Output format").action(async t=>{try{let e={agentId:t.agent,name:t.name,action:(t.action??"ALERT").toUpperCase(),isEnabled:t.enabled!==!1};t.description&&(e.description=t.description),t.condition&&(e.condition=y("condition",t.condition));let n=await a(ut,{input:e});u(`Policy created: ${n.subCreatePolicy.name}`),s(t,n.subCreatePolicy);}catch(e){o(e);}});}function vt(i){let r=i.command("workflows").description("SubscriberBot automation workflows");r.command("list").description("List workflows").option("--status <s>","Filter by workflow status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(ct,{status:t.status?t.status.toUpperCase():void 0});s(t,e.subListWorkflows.items,{headers:["ID","Name","Trigger","Status","Runs"],rows:e.subListWorkflows.items.map(n=>[c(n.id,12),n.name,n.triggerEvent,n.status,String(n.runCount??0)])});}catch(e){o(e);}}),r.command("create").description("Create a workflow").requiredOption("--name <name>","Workflow name").requiredOption("--trigger-event <e>","Trigger event").option("--description <s>","Description").option("--steps <json>","Steps JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,triggerEvent:t.triggerEvent};t.description&&(e.description=t.description),t.steps&&(e.steps=y("steps",t.steps));let n=await a(dt,{input:e});u(`Workflow created: ${n.subCreateWorkflow.name}`),s(t,n.subCreateWorkflow);}catch(e){o(e);}}),r.command("activate").description("Activate a workflow").argument("<id>","Workflow ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(pt,{id:t});u(`Workflow activated: ${n.subActivateWorkflow.name}`),s(e,n.subActivateWorkflow);}catch(n){o(n);}});}function kt(i){i.command("health").description("SubscriberBot service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await v(lt);u(t.subHealth),s(r,{health:t.subHealth});}catch(t){o(t);}});}var qt={id:"subscriberbot",version:"1.0.0",displayName:"SubscriberBot",dependsOn:["auth","workspaces"],register(i,r){S(r);let t=i.command("subscriberbot").description("SubscriberBot universal subscription & relationship management");mt(t),gt(t),ft(t),bt(t),It(t),ht(t),yt(t),wt(t),Ct(t),At(t),vt(t),kt(t);}},Gn=qt;module.exports=Gn;
|