@hotmeshio/long-tail 0.30.4 → 0.31.0
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/build/api/escalations/index.d.ts +1 -0
- package/build/api/escalations/index.js +5 -2
- package/build/api/escalations/roster-action.d.ts +11 -0
- package/build/api/escalations/roster-action.js +47 -30
- package/build/api/escalations/roster-scan.d.ts +26 -0
- package/build/api/escalations/roster-scan.js +114 -0
- package/build/api/labels/errors.d.ts +3 -0
- package/build/api/labels/errors.js +15 -0
- package/build/api/labels/index.d.ts +2 -0
- package/build/api/labels/index.js +17 -0
- package/build/api/labels/issue.d.ts +54 -0
- package/build/api/labels/issue.js +144 -0
- package/build/api/labels/templates.d.ts +29 -0
- package/build/api/labels/templates.js +98 -0
- package/build/api/scan-codes/context.d.ts +9 -1
- package/build/api/scan-codes/context.js +16 -1
- package/build/api/scan-codes/execute.js +6 -1
- package/build/api/scan-codes/fill-labels.d.ts +8 -0
- package/build/api/scan-codes/fill-labels.js +23 -2
- package/build/api/scan-codes/hold.js +2 -0
- package/build/api/scan-codes/located.d.ts +10 -0
- package/build/api/scan-codes/located.js +74 -0
- package/build/api/scan-codes/open.d.ts +9 -0
- package/build/api/scan-codes/open.js +99 -0
- package/build/api/scan-codes/present.js +1 -0
- package/build/api/scan-codes/verb-fill.js +1 -1
- package/build/api/users.d.ts +8 -4
- package/build/api/users.js +51 -13
- package/build/index.d.ts +1 -0
- package/build/index.js +4 -2
- package/build/lib/db/schemas/044_label_sheets.sql +65 -0
- package/build/lib/db/schemas/045_label_job_delivery.sql +14 -0
- package/build/lib/labels/transports.d.ts +23 -0
- package/build/lib/labels/transports.js +39 -0
- package/build/modules/auth.d.ts +2 -0
- package/build/modules/auth.js +3 -1
- package/build/modules/capabilities.d.ts +5 -1
- package/build/modules/capabilities.js +38 -8
- package/build/modules/config.d.ts +10 -0
- package/build/modules/config.js +10 -0
- package/build/routes/escalations/resolve.js +18 -0
- package/build/routes/index.js +2 -0
- package/build/routes/labels.d.ts +2 -0
- package/build/routes/labels.js +135 -0
- package/build/routes/users.js +1 -1
- package/build/services/labels/content.d.ts +13 -0
- package/build/services/labels/content.js +81 -0
- package/build/services/labels/errors.d.ts +5 -0
- package/build/services/labels/errors.js +12 -0
- package/build/services/labels/index.d.ts +11 -0
- package/build/services/labels/index.js +52 -0
- package/build/services/labels/issue.d.ts +38 -0
- package/build/services/labels/issue.js +181 -0
- package/build/services/labels/jobs.d.ts +37 -0
- package/build/services/labels/jobs.js +75 -0
- package/build/services/labels/media.d.ts +11 -0
- package/build/services/labels/media.js +44 -0
- package/build/services/labels/reissue.d.ts +13 -0
- package/build/services/labels/reissue.js +65 -0
- package/build/services/labels/render-pdf.d.ts +11 -0
- package/build/services/labels/render-pdf.js +138 -0
- package/build/services/labels/targets.d.ts +18 -0
- package/build/services/labels/targets.js +216 -0
- package/build/services/labels/templates/index.d.ts +3 -0
- package/build/services/labels/templates/index.js +18 -0
- package/build/services/labels/templates/read.d.ts +4 -0
- package/build/services/labels/templates/read.js +36 -0
- package/build/services/labels/templates/sql.d.ts +8 -0
- package/build/services/labels/templates/sql.js +50 -0
- package/build/services/labels/templates/validate.d.ts +19 -0
- package/build/services/labels/templates/validate.js +93 -0
- package/build/services/labels/templates/write.d.ts +16 -0
- package/build/services/labels/templates/write.js +75 -0
- package/build/services/labels/token.d.ts +9 -0
- package/build/services/labels/token.js +28 -0
- package/build/services/labels/verify.d.ts +4 -0
- package/build/services/labels/verify.js +38 -0
- package/build/services/role/index.d.ts +2 -0
- package/build/services/role/index.js +7 -0
- package/build/services/role/scan-done.js +4 -1
- package/build/services/role/sql.d.ts +1 -0
- package/build/services/role/sql.js +3 -1
- package/build/services/role/types.d.ts +2 -0
- package/build/services/scan-code/index.d.ts +1 -1
- package/build/services/scan-code/index.js +2 -1
- package/build/services/scan-code/parse.d.ts +5 -1
- package/build/services/scan-code/parse.js +8 -2
- package/build/services/scan-code/validate-station.d.ts +13 -0
- package/build/services/scan-code/validate-station.js +81 -0
- package/build/services/scan-code/validate-subject.js +33 -6
- package/build/services/scan-code/validate.d.ts +3 -0
- package/build/services/scan-code/validate.js +22 -18
- package/build/services/user/crud.d.ts +13 -1
- package/build/services/user/crud.js +42 -11
- package/build/services/user/index.d.ts +3 -2
- package/build/services/user/index.js +7 -1
- package/build/services/user/redact.d.ts +17 -0
- package/build/services/user/redact.js +32 -0
- package/build/services/user/sql.d.ts +8 -15
- package/build/services/user/sql.js +27 -3
- package/build/services/user/types.d.ts +21 -1
- package/build/shared/labels/compose.d.ts +12 -0
- package/build/shared/labels/compose.js +43 -0
- package/build/shared/labels/index.d.ts +9 -0
- package/build/shared/labels/index.js +54 -0
- package/build/shared/labels/label-content.d.ts +17 -0
- package/build/shared/labels/label-content.js +137 -0
- package/build/shared/labels/layout.d.ts +23 -0
- package/build/shared/labels/layout.js +81 -0
- package/build/shared/labels/media.d.ts +22 -0
- package/build/shared/labels/media.js +116 -0
- package/build/shared/labels/render-svg.d.ts +10 -0
- package/build/shared/labels/render-svg.js +58 -0
- package/build/shared/labels/render-zpl.d.ts +9 -0
- package/build/shared/labels/render-zpl.js +63 -0
- package/build/shared/labels/symbol.d.ts +18 -0
- package/build/shared/labels/symbol.js +74 -0
- package/build/shared/labels/tokens.d.ts +18 -0
- package/build/shared/labels/tokens.js +43 -0
- package/build/shared/labels/types.d.ts +105 -0
- package/build/shared/labels/types.js +11 -0
- package/build/start/adapters.js +16 -0
- package/build/start/workers.js +18 -2
- package/build/system/mcp-servers/admin/index.js +2 -0
- package/build/system/mcp-servers/admin/labels-schemas.d.ts +192 -0
- package/build/system/mcp-servers/admin/labels-schemas.js +46 -0
- package/build/system/mcp-servers/admin/labels.d.ts +9 -0
- package/build/system/mcp-servers/admin/labels.js +101 -0
- package/build/system/mcp-servers/admin/schemas.d.ts +491 -24
- package/build/system/mcp-servers/admin/schemas.js +32 -4
- package/build/system/mcp-servers/admin/users.js +1 -1
- package/build/system/seed/tool-manifests-admin.js +5 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/capability.d.ts +2 -1
- package/build/types/index.d.ts +3 -2
- package/build/types/labels/index.d.ts +4 -0
- package/build/types/labels/index.js +2 -0
- package/build/types/labels/job.d.ts +51 -0
- package/build/types/labels/job.js +2 -0
- package/build/types/labels/source.d.ts +44 -0
- package/build/types/labels/source.js +2 -0
- package/build/types/labels/template.d.ts +46 -0
- package/build/types/labels/template.js +2 -0
- package/build/types/labels/transport.d.ts +24 -0
- package/build/types/labels/transport.js +2 -0
- package/build/types/scan-choice.d.ts +2 -4
- package/build/types/scan-code/constants.d.ts +1 -0
- package/build/types/scan-code/constants.js +1 -0
- package/build/types/scan-code/response.d.ts +22 -4
- package/build/types/scan-code/rule.d.ts +66 -3
- package/build/types/startup.d.ts +37 -0
- package/build/types/user.d.ts +2 -0
- package/dashboard/dist/assets/{AdminDashboard-VQ1fhhJP.js → AdminDashboard-BafKaq50.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-VQ1fhhJP.js.map → AdminDashboard-BafKaq50.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-BOe_W2Ij.js → AgentConfigPage-CFHf31DT.js} +6 -6
- package/dashboard/dist/assets/{AgentConfigPage-BOe_W2Ij.js.map → AgentConfigPage-CFHf31DT.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-5ov5D9V2.js → AgentDetailPage-CEvz5rJr.js} +3 -3
- package/dashboard/dist/assets/{AgentDetailPage-5ov5D9V2.js.map → AgentDetailPage-CEvz5rJr.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-DDFMKHhI.js → AgentsPage-DjQaio0O.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-DDFMKHhI.js.map → AgentsPage-DjQaio0O.js.map} +1 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-UB03VTJx.js +2 -0
- package/dashboard/dist/assets/AvailableEscalationsPage-UB03VTJx.js.map +1 -0
- package/dashboard/dist/assets/{BotPicker-Dqpo36dM.js → BotPicker-C7MNWOF7.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-Dqpo36dM.js.map → BotPicker-C7MNWOF7.js.map} +1 -1
- package/dashboard/dist/assets/BulkAssignModal-h5fX-_cV.js +2 -0
- package/dashboard/dist/assets/{BulkAssignModal-CmLVxkz-.js.map → BulkAssignModal-h5fX-_cV.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-Dfkip6_b.js → CapabilitiesPage-BIzDl-ZT.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-Dfkip6_b.js.map → CapabilitiesPage-BIzDl-ZT.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-CYNYMYSa.js → CollapsibleSection-B5TivtEg.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-CYNYMYSa.js.map → CollapsibleSection-B5TivtEg.js.map} +1 -1
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpJNP-8w.js → ConfirmDeleteModal-CB4nKePb.js} +2 -2
- package/dashboard/dist/assets/{ConfirmDeleteModal-CpJNP-8w.js.map → ConfirmDeleteModal-CB4nKePb.js.map} +1 -1
- package/dashboard/dist/assets/{ConnectedAppsPage-DXIp2Dpl.js → ConnectedAppsPage-B3S5gVWw.js} +2 -2
- package/dashboard/dist/assets/{ConnectedAppsPage-DXIp2Dpl.js.map → ConnectedAppsPage-B3S5gVWw.js.map} +1 -1
- package/dashboard/dist/assets/{CountdownTimer-CuPY7zkb.js → CountdownTimer-BHVIq3kA.js} +2 -2
- package/dashboard/dist/assets/{CountdownTimer-CuPY7zkb.js.map → CountdownTimer-BHVIq3kA.js.map} +1 -1
- package/dashboard/dist/assets/CredentialConfirmModal-w0AGmCIe.js +2 -0
- package/dashboard/dist/assets/CredentialConfirmModal-w0AGmCIe.js.map +1 -0
- package/dashboard/dist/assets/{CredentialsPage-CtrnkHcj.js → CredentialsPage-BtCGBJrT.js} +2 -2
- package/dashboard/dist/assets/{CredentialsPage-CtrnkHcj.js.map → CredentialsPage-BtCGBJrT.js.map} +1 -1
- package/dashboard/dist/assets/{CronLabel-DVjTw5Ri.js → CronLabel-BG1rZK-5.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-DVjTw5Ri.js.map → CronLabel-BG1rZK-5.js.map} +1 -1
- package/dashboard/dist/assets/{DropZone-DefYTYQy.js → DropZone-D8ZVdEb5.js} +2 -2
- package/dashboard/dist/assets/{DropZone-DefYTYQy.js.map → DropZone-D8ZVdEb5.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-gY_mGMTF.js → ElapsedCell-l4m8Yvfv.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-gY_mGMTF.js.map → ElapsedCell-l4m8Yvfv.js.map} +1 -1
- package/dashboard/dist/assets/{EntityTimelinePanel-DJN_ZEQa.js → EntityTimelinePanel-BOHlIaxF.js} +2 -2
- package/dashboard/dist/assets/{EntityTimelinePanel-DJN_ZEQa.js.map → EntityTimelinePanel-BOHlIaxF.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationListSchemaPage-A4KpTdJA.js → EscalationListSchemaPage-BotlwlX3.js} +3 -3
- package/dashboard/dist/assets/{EscalationListSchemaPage-A4KpTdJA.js.map → EscalationListSchemaPage-BotlwlX3.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationSchemaPage-nfCn42hT.js → EscalationSchemaPage-CfZSVOSD.js} +3 -3
- package/dashboard/dist/assets/{EscalationSchemaPage-nfCn42hT.js.map → EscalationSchemaPage-CfZSVOSD.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTimeline-CLvSr1SD.js → EscalationTimeline-CCKpuRBU.js} +2 -2
- package/dashboard/dist/assets/{EscalationTimeline-CLvSr1SD.js.map → EscalationTimeline-CCKpuRBU.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationTitleSelect-CT7mYHkb.js → EscalationTitleSelect-cpTzPHiW.js} +2 -2
- package/dashboard/dist/assets/{EscalationTitleSelect-CT7mYHkb.js.map → EscalationTitleSelect-cpTzPHiW.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-CKaGRh-E.js → EscalationsOverview-DS-nK0qV.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-CKaGRh-E.js.map → EscalationsOverview-DS-nK0qV.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-2ywJsOLy.js → EventTable-UfebhJf0.js} +2 -2
- package/dashboard/dist/assets/{EventTable-2ywJsOLy.js.map → EventTable-UfebhJf0.js.map} +1 -1
- package/dashboard/dist/assets/{FilterBar-Dy0b7wwf.js → FilterBar-newA5l-X.js} +2 -2
- package/dashboard/dist/assets/{FilterBar-Dy0b7wwf.js.map → FilterBar-newA5l-X.js.map} +1 -1
- package/dashboard/dist/assets/{GraphInvokePage-yOVpraAy.js → GraphInvokePage-6SCDyQcK.js} +2 -2
- package/dashboard/dist/assets/{GraphInvokePage-yOVpraAy.js.map → GraphInvokePage-6SCDyQcK.js.map} +1 -1
- package/dashboard/dist/assets/HomePage-BEc-XdKj.js +2 -0
- package/dashboard/dist/assets/{HomePage-67xXjKjN.js.map → HomePage-BEc-XdKj.js.map} +1 -1
- package/dashboard/dist/assets/LabelJobsPage-BO50zXT5.js +2 -0
- package/dashboard/dist/assets/LabelJobsPage-BO50zXT5.js.map +1 -0
- package/dashboard/dist/assets/{LinePage-CMsYtukW.js → LinePage-NYxJQ-ex.js} +3 -3
- package/dashboard/dist/assets/{LinePage-CMsYtukW.js.map → LinePage-NYxJQ-ex.js.map} +1 -1
- package/dashboard/dist/assets/{LinesPage-pwL46mOS.js → LinesPage-RbWTaQRh.js} +3 -3
- package/dashboard/dist/assets/{LinesPage-pwL46mOS.js.map → LinesPage-RbWTaQRh.js.map} +1 -1
- package/dashboard/dist/assets/{ListToolbar-CJmvGy2B.js → ListToolbar-B-E9-toh.js} +2 -2
- package/dashboard/dist/assets/{ListToolbar-CJmvGy2B.js.map → ListToolbar-B-E9-toh.js.map} +1 -1
- package/dashboard/dist/assets/{McpOverview-DA9LLvNG.js → McpOverview-Shcf9QhZ.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-DA9LLvNG.js.map → McpOverview-Shcf9QhZ.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-N7qLmfE8.js → McpQueryDetailPage-D8kmjy2v.js} +3 -3
- package/dashboard/dist/assets/{McpQueryDetailPage-N7qLmfE8.js.map → McpQueryDetailPage-D8kmjy2v.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-CpsP3w7x.js → McpQueryPage-ck-o5m8A.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-CpsP3w7x.js.map → McpQueryPage-ck-o5m8A.js.map} +1 -1
- package/dashboard/dist/assets/McpRunDetailPage-BJKkM9-3.js +2 -0
- package/dashboard/dist/assets/{McpRunDetailPage-qHRQ1pEY.js.map → McpRunDetailPage-BJKkM9-3.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-BRDDYpTM.js → McpRunsPage-DqhHfD5G.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-BRDDYpTM.js.map → McpRunsPage-DqhHfD5G.js.map} +1 -1
- package/dashboard/dist/assets/{NamespacePill-CeSfHH-j.js → NamespacePill--uIaGtrN.js} +2 -2
- package/dashboard/dist/assets/{NamespacePill-CeSfHH-j.js.map → NamespacePill--uIaGtrN.js.map} +1 -1
- package/dashboard/dist/assets/{OperationsPage-zUaab-CL.js → OperationsPage-D6B9Vv__.js} +3 -3
- package/dashboard/dist/assets/{OperationsPage-zUaab-CL.js.map → OperationsPage-D6B9Vv__.js.map} +1 -1
- package/dashboard/dist/assets/OperatorDashboard-CIH1cxjQ.js +2 -0
- package/dashboard/dist/assets/{OperatorDashboard-el5BquXN.js.map → OperatorDashboard-CIH1cxjQ.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeader-DiGWAQlR.js → PageHeader-DClJ33fV.js} +2 -2
- package/dashboard/dist/assets/{PageHeader-DiGWAQlR.js.map → PageHeader-DClJ33fV.js.map} +1 -1
- package/dashboard/dist/assets/{PageHeaderWithStats-DwnKQ06j.js → PageHeaderWithStats-C-TrbKQL.js} +2 -2
- package/dashboard/dist/assets/{PageHeaderWithStats-DwnKQ06j.js.map → PageHeaderWithStats-C-TrbKQL.js.map} +1 -1
- package/dashboard/dist/assets/PersonaDetailPage-DjvfyIph.js +2 -0
- package/dashboard/dist/assets/{PersonaDetailPage-B_tb8gfl.js.map → PersonaDetailPage-DjvfyIph.js.map} +1 -1
- package/dashboard/dist/assets/{PersonasPage-BPI7mqM8.js → PersonasPage-D7ryA8Vc.js} +2 -2
- package/dashboard/dist/assets/{PersonasPage-BPI7mqM8.js.map → PersonasPage-D7ryA8Vc.js.map} +1 -1
- package/dashboard/dist/assets/{PortalPage-e_rBb1do.js → PortalPage-D3ybr0mo.js} +2 -2
- package/dashboard/dist/assets/{PortalPage-e_rBb1do.js.map → PortalPage-D3ybr0mo.js.map} +1 -1
- package/dashboard/dist/assets/PrintLabelsPanel-D0HF5x8b.js +2 -0
- package/dashboard/dist/assets/PrintLabelsPanel-D0HF5x8b.js.map +1 -0
- package/dashboard/dist/assets/{ProcessDetailPage-D35RX1bB.js → ProcessDetailPage-0xS9EdHe.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-D35RX1bB.js.map → ProcessDetailPage-0xS9EdHe.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-CT81miI5.js → ProcessesListPage-93SMj1Fd.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-CT81miI5.js.map → ProcessesListPage-93SMj1Fd.js.map} +1 -1
- package/dashboard/dist/assets/{ResolverForm-BxJkoKAO.js → ResolverForm-DfogHDzl.js} +5 -5
- package/dashboard/dist/assets/{ResolverForm-BxJkoKAO.js.map → ResolverForm-DfogHDzl.js.map} +1 -1
- package/dashboard/dist/assets/RoleDetailPage-DlUOJWSB.js +8 -0
- package/dashboard/dist/assets/{RoleDetailPage-DtU7vsJm.js.map → RoleDetailPage-DlUOJWSB.js.map} +1 -1
- package/dashboard/dist/assets/{RolePill-D3hkAdKf.js → RolePill-BjD1Qw5y.js} +2 -2
- package/dashboard/dist/assets/{RolePill-D3hkAdKf.js.map → RolePill-BjD1Qw5y.js.map} +1 -1
- package/dashboard/dist/assets/RolesPage-DqhHSvaw.js +2 -0
- package/dashboard/dist/assets/{RolesPage-BE7RWt9q.js.map → RolesPage-DqhHSvaw.js.map} +1 -1
- package/dashboard/dist/assets/{RosterWidget-BJMx0a8Z.js → RosterWidget-BrIq61HR.js} +2 -2
- package/dashboard/dist/assets/RosterWidget-BrIq61HR.js.map +1 -0
- package/dashboard/dist/assets/RunAsSelector-D6zQrCNr.js +2 -0
- package/dashboard/dist/assets/{RunAsSelector-Co6s9bqA.js.map → RunAsSelector-D6zQrCNr.js.map} +1 -1
- package/dashboard/dist/assets/ScanCodesPage-B2S9DR2f.js +2 -0
- package/dashboard/dist/assets/{ScanCodesPage-C2TETaj5.js.map → ScanCodesPage-B2S9DR2f.js.map} +1 -1
- package/dashboard/dist/assets/ScanSchemeDetailPage-gpxKN-pL.js +5 -0
- package/dashboard/dist/assets/ScanSchemeDetailPage-gpxKN-pL.js.map +1 -0
- package/dashboard/dist/assets/ScanStationPage-B-UTgXsG.js +2 -0
- package/dashboard/dist/assets/ScanStationPage-B-UTgXsG.js.map +1 -0
- package/dashboard/dist/assets/{SchemeMatchFields-9H7SmbED.js → SchemeMatchFields-BK24aa7K.js} +2 -2
- package/dashboard/dist/assets/{SchemeMatchFields-9H7SmbED.js.map → SchemeMatchFields-BK24aa7K.js.map} +1 -1
- package/dashboard/dist/assets/{ScopeBadge-DGz79rmG.js → ScopeBadge-ofLQ6HW-.js} +2 -2
- package/dashboard/dist/assets/{ScopeBadge-DGz79rmG.js.map → ScopeBadge-ofLQ6HW-.js.map} +1 -1
- package/dashboard/dist/assets/{StickyPagination-miUdVAKw.js → StickyPagination-CgVv7vc_.js} +2 -2
- package/dashboard/dist/assets/{StickyPagination-miUdVAKw.js.map → StickyPagination-CgVv7vc_.js.map} +1 -1
- package/dashboard/dist/assets/{StreamMessageDetail-D5Rk7pn7.js → StreamMessageDetail-B9sxDVw4.js} +2 -2
- package/dashboard/dist/assets/{StreamMessageDetail-D5Rk7pn7.js.map → StreamMessageDetail-B9sxDVw4.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-B1QY1ZzH.js → SwimlaneTimeline-DQc0CYSL.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-B1QY1ZzH.js.map → SwimlaneTimeline-DQc0CYSL.js.map} +1 -1
- package/dashboard/dist/assets/{TagInput-DaIdhv3h.js → TagInput-47qVYzke.js} +2 -2
- package/dashboard/dist/assets/{TagInput-DaIdhv3h.js.map → TagInput-47qVYzke.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-DKUM37o8.js → TaskDetailPage-D6VOsA1f.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-DKUM37o8.js.map → TaskDetailPage-D6VOsA1f.js.map} +1 -1
- package/dashboard/dist/assets/{TaskQueuePill-sUA1nZe-.js → TaskQueuePill-C5KmdXAl.js} +2 -2
- package/dashboard/dist/assets/{TaskQueuePill-sUA1nZe-.js.map → TaskQueuePill-C5KmdXAl.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-CUulwvm-.js → TasksListPage-DG8hvO8G.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-CUulwvm-.js.map → TasksListPage-DG8hvO8G.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-CHTelacB.js → TimeAgo-CL02EhFi.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-CHTelacB.js.map → TimeAgo-CL02EhFi.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-NanLWLKo.js → TimestampCell-BE7oKVJg.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-NanLWLKo.js.map → TimestampCell-BE7oKVJg.js.map} +1 -1
- package/dashboard/dist/assets/{ToolPill-CpBAFdEX.js → ToolPill-Cp9Drk1s.js} +2 -2
- package/dashboard/dist/assets/{ToolPill-CpBAFdEX.js.map → ToolPill-Cp9Drk1s.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-CF1CHzgz.js → ToolTestPanel-CRecLh6S.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-CF1CHzgz.js.map → ToolTestPanel-CRecLh6S.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-CGO8XV_a.js → TopicDetailPage-QzkinTfN.js} +3 -3
- package/dashboard/dist/assets/{TopicDetailPage-CGO8XV_a.js.map → TopicDetailPage-QzkinTfN.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-Bt8gOKYr.js → TopicsPage-D8dW6J65.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-Bt8gOKYr.js.map → TopicsPage-D8dW6J65.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-DKXnK7DD.js → UserName-Dw3R_zrl.js} +2 -2
- package/dashboard/dist/assets/{UserName-DKXnK7DD.js.map → UserName-Dw3R_zrl.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-BTocv8or.js +2 -0
- package/dashboard/dist/assets/{WorkflowExecutionPage-Crf7AIFc.js.map → WorkflowExecutionPage-BTocv8or.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowPill-CKHip3hH.js → WorkflowPill-BiLYq__w.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPill-CKHip3hH.js.map → WorkflowPill-BiLYq__w.js.map} +1 -1
- package/dashboard/dist/assets/WorkflowsDashboard-CIPEt3et.js +2 -0
- package/dashboard/dist/assets/{WorkflowsDashboard--isjt06C.js.map → WorkflowsDashboard-CIPEt3et.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-D7Oqf4-V.js → WorkflowsOverview-Bj4MJIE-.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-D7Oqf4-V.js.map → WorkflowsOverview-Bj4MJIE-.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-B0wxgrGP.js → YamlWorkflowDetailPage-DMEk5k9-.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowDetailPage-B0wxgrGP.js.map → YamlWorkflowDetailPage-DMEk5k9-.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-BVdLnm6K.js → YamlWorkflowsPage-F2yyyoiB.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-BVdLnm6K.js.map → YamlWorkflowsPage-F2yyyoiB.js.map} +1 -1
- package/dashboard/dist/assets/{agents-CHjbjHXA.js → agents-mSgxEPpI.js} +2 -2
- package/dashboard/dist/assets/{agents-CHjbjHXA.js.map → agents-mSgxEPpI.js.map} +1 -1
- package/dashboard/dist/assets/{bots-WrUhEPWs.js → bots-p4Hp0CV6.js} +2 -2
- package/dashboard/dist/assets/{bots-WrUhEPWs.js.map → bots-p4Hp0CV6.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-CunMmkj8.js → capabilities-D_-I_SXR.js} +2 -2
- package/dashboard/dist/assets/{capabilities-CunMmkj8.js.map → capabilities-D_-I_SXR.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-D6IZIZoh.js → controlplane-DjdoQnRU.js} +2 -2
- package/dashboard/dist/assets/{controlplane-D6IZIZoh.js.map → controlplane-DjdoQnRU.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-Bvo6JI4Z.js → escalation-columns-R_IEVQjQ.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-Bvo6JI4Z.js.map → escalation-columns-R_IEVQjQ.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-items-DFGRwo49.js → escalation-items-BGZlJMpk.js} +2 -2
- package/dashboard/dist/assets/{escalation-items-DFGRwo49.js.map → escalation-items-BGZlJMpk.js.map} +1 -1
- package/dashboard/dist/assets/{index-OuKQ_0eB.js → index-BEMdD58x.js} +2 -2
- package/dashboard/dist/assets/{index-OuKQ_0eB.js.map → index-BEMdD58x.js.map} +1 -1
- package/dashboard/dist/assets/index-BUmz0NMg.css +1 -0
- package/dashboard/dist/assets/{index-C7EIu1mG.js → index-BuCEhhnl.js} +2 -2
- package/dashboard/dist/assets/{index-C7EIu1mG.js.map → index-BuCEhhnl.js.map} +1 -1
- package/dashboard/dist/assets/{index-Bo8QU31k.js → index-BxbQmeqh.js} +2 -2
- package/dashboard/dist/assets/{index-Bo8QU31k.js.map → index-BxbQmeqh.js.map} +1 -1
- package/dashboard/dist/assets/index-C5osluV3.js +2 -0
- package/dashboard/dist/assets/{index-DRK7M1_9.js.map → index-C5osluV3.js.map} +1 -1
- package/dashboard/dist/assets/{index-ygxyAKcc.js → index-C_dAJUzh.js} +27 -27
- package/dashboard/dist/assets/index-C_dAJUzh.js.map +1 -0
- package/dashboard/dist/assets/{index-DRw0FXdX.js → index-D-FYj9jT.js} +2 -2
- package/dashboard/dist/assets/{index-DRw0FXdX.js.map → index-D-FYj9jT.js.map} +1 -1
- package/dashboard/dist/assets/{index-B8qrHwp9.js → index-D6K_IgCz.js} +2 -2
- package/dashboard/dist/assets/{index-B8qrHwp9.js.map → index-D6K_IgCz.js.map} +1 -1
- package/dashboard/dist/assets/index-D7L_VoBD.js +2 -0
- package/dashboard/dist/assets/index-D7L_VoBD.js.map +1 -0
- package/dashboard/dist/assets/{index-BZFSXEkr.js → index-D9RAN9sA.js} +2 -2
- package/dashboard/dist/assets/{index-BZFSXEkr.js.map → index-D9RAN9sA.js.map} +1 -1
- package/dashboard/dist/assets/{index-DCJ483vt.js → index-DUYAGxwc.js} +2 -2
- package/dashboard/dist/assets/{index-DCJ483vt.js.map → index-DUYAGxwc.js.map} +1 -1
- package/dashboard/dist/assets/{index-boT612Jo.js → index-Dk2KKo0z.js} +2 -2
- package/dashboard/dist/assets/{index-boT612Jo.js.map → index-Dk2KKo0z.js.map} +1 -1
- package/dashboard/dist/assets/{index-CpCchhQv.js → index-DlJkZ12b.js} +2 -2
- package/dashboard/dist/assets/{index-CpCchhQv.js.map → index-DlJkZ12b.js.map} +1 -1
- package/dashboard/dist/assets/index-FiNThtNU.js +3 -0
- package/dashboard/dist/assets/index-FiNThtNU.js.map +1 -0
- package/dashboard/dist/assets/{knowledge-BubJBTwg.js → knowledge-DSsPTqkK.js} +2 -2
- package/dashboard/dist/assets/{knowledge-BubJBTwg.js.map → knowledge-DSsPTqkK.js.map} +1 -1
- package/dashboard/dist/assets/{machines-DSm5NFgs.js → machines-DSgGtqqr.js} +2 -2
- package/dashboard/dist/assets/{machines-DSm5NFgs.js.map → machines-DSgGtqqr.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-D6MckqOV.js → mcp-Cg-_uLw8.js} +2 -2
- package/dashboard/dist/assets/{mcp-D6MckqOV.js.map → mcp-Cg-_uLw8.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-VyCdOag6.js → mcp-query-DQombEK_.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-VyCdOag6.js.map → mcp-query-DQombEK_.js.map} +1 -1
- package/dashboard/dist/assets/{personas-CyJc10xe.js → personas-DYrcoVBu.js} +2 -2
- package/dashboard/dist/assets/{personas-CyJc10xe.js.map → personas-DYrcoVBu.js.map} +1 -1
- package/dashboard/dist/assets/{pipelines-B2inDtx3.js → pipelines-wdb4xsey.js} +2 -2
- package/dashboard/dist/assets/{pipelines-B2inDtx3.js.map → pipelines-wdb4xsey.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-DOP4d3M6.js → tasks-Bil7gvm9.js} +2 -2
- package/dashboard/dist/assets/{tasks-DOP4d3M6.js.map → tasks-Bil7gvm9.js.map} +1 -1
- package/dashboard/dist/assets/{topics-CNOjSWpX.js → topics-wBqaVhRR.js} +2 -2
- package/dashboard/dist/assets/{topics-CNOjSWpX.js.map → topics-wBqaVhRR.js.map} +1 -1
- package/dashboard/dist/assets/{useDebouncedValue-CgO0TGMd.js → useDebouncedValue-CwrY8TpV.js} +2 -2
- package/dashboard/dist/assets/{useDebouncedValue-CgO0TGMd.js.map → useDebouncedValue-CwrY8TpV.js.map} +1 -1
- package/dashboard/dist/assets/{useNamespace-BWHvUKtK.js → useNamespace-Sod_xApz.js} +2 -2
- package/dashboard/dist/assets/{useNamespace-BWHvUKtK.js.map → useNamespace-Sod_xApz.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-BZQ__ZGD.js → useYamlActivityEvents-CKLInV3C.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-BZQ__ZGD.js.map → useYamlActivityEvents-CKLInV3C.js.map} +1 -1
- package/dashboard/dist/assets/{validate-CAin6WM_.js → validate-CYhW1xMJ.js} +2 -2
- package/dashboard/dist/assets/{validate-CAin6WM_.js.map → validate-CYhW1xMJ.js.map} +1 -1
- package/dashboard/dist/assets/{vendor-icons-en0_uSRD.js → vendor-icons-ed7mYQw4.js} +2 -2
- package/dashboard/dist/assets/{vendor-icons-en0_uSRD.js.map → vendor-icons-ed7mYQw4.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-Dyln3od-.js → yaml-workflows-C20qHo3L.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-Dyln3od-.js.map → yaml-workflows-C20qHo3L.js.map} +1 -1
- package/dashboard/dist/index.html +3 -3
- package/docs/api/http/escalations.md +15 -0
- package/docs/api/http/labels.md +115 -0
- package/docs/api/http/users.md +2 -0
- package/docs/api/mcp/admin.md +76 -1
- package/docs/code-owned-configuration.md +1 -1
- package/docs/dashboard.md +2 -2
- package/docs/hitl/x-lt-roster.md +2 -0
- package/docs/hitl/x-lt-scan.md +12 -0
- package/docs/iam.md +12 -0
- package/docs/label-sheets.md +267 -0
- package/docs/scan-codes.md +93 -9
- package/package.json +4 -1
- package/dashboard/dist/assets/AvailableEscalationsPage-GFn8Sgg1.js +0 -2
- package/dashboard/dist/assets/AvailableEscalationsPage-GFn8Sgg1.js.map +0 -1
- package/dashboard/dist/assets/BulkAssignModal-CmLVxkz-.js +0 -2
- package/dashboard/dist/assets/HomePage-67xXjKjN.js +0 -2
- package/dashboard/dist/assets/McpRunDetailPage-qHRQ1pEY.js +0 -2
- package/dashboard/dist/assets/OperatorDashboard-el5BquXN.js +0 -2
- package/dashboard/dist/assets/PersonaDetailPage-B_tb8gfl.js +0 -2
- package/dashboard/dist/assets/RoleDetailPage-DtU7vsJm.js +0 -8
- package/dashboard/dist/assets/RolesPage-BE7RWt9q.js +0 -2
- package/dashboard/dist/assets/RosterWidget-BJMx0a8Z.js.map +0 -1
- package/dashboard/dist/assets/RunAsSelector-Co6s9bqA.js +0 -2
- package/dashboard/dist/assets/ScanCodesPage-C2TETaj5.js +0 -2
- package/dashboard/dist/assets/ScanSchemeDetailPage-C2UgU8l-.js +0 -5
- package/dashboard/dist/assets/ScanSchemeDetailPage-C2UgU8l-.js.map +0 -1
- package/dashboard/dist/assets/ScanStationPage-nWYz-OD3.js +0 -2
- package/dashboard/dist/assets/ScanStationPage-nWYz-OD3.js.map +0 -1
- package/dashboard/dist/assets/WorkflowExecutionPage-Crf7AIFc.js +0 -2
- package/dashboard/dist/assets/WorkflowsDashboard--isjt06C.js +0 -2
- package/dashboard/dist/assets/index-B95LbYhW.js +0 -2
- package/dashboard/dist/assets/index-B95LbYhW.js.map +0 -1
- package/dashboard/dist/assets/index-BmzscsXK.css +0 -1
- package/dashboard/dist/assets/index-DRK7M1_9.js +0 -2
- package/dashboard/dist/assets/index-P-DlgAWj.js +0 -3
- package/dashboard/dist/assets/index-P-DlgAWj.js.map +0 -1
- package/dashboard/dist/assets/index-ygxyAKcc.js.map +0 -1
package/build/start/adapters.js
CHANGED
|
@@ -21,6 +21,10 @@ const features_1 = require("../modules/features");
|
|
|
21
21
|
const search_1 = require("../modules/search");
|
|
22
22
|
const branding_1 = require("../modules/branding");
|
|
23
23
|
const display_1 = require("../modules/display");
|
|
24
|
+
const transports_1 = require("../lib/labels/transports");
|
|
25
|
+
const media_1 = require("../services/labels/media");
|
|
26
|
+
const render_pdf_1 = require("../services/labels/render-pdf");
|
|
27
|
+
const redact_1 = require("../services/user/redact");
|
|
24
28
|
const socket_auth_1 = require("./socket-auth");
|
|
25
29
|
/**
|
|
26
30
|
* Register all adapters (logging, telemetry, events, maintenance,
|
|
@@ -32,6 +36,18 @@ function registerAdapters(startConfig) {
|
|
|
32
36
|
(0, search_1.configureSearch)(startConfig.search);
|
|
33
37
|
(0, branding_1.configureBranding)(startConfig.branding);
|
|
34
38
|
(0, display_1.configureDisplay)(startConfig.display);
|
|
39
|
+
// Label sheets: host media first, so the default may name one.
|
|
40
|
+
if (startConfig.labels?.media)
|
|
41
|
+
(0, media_1.registerLabelMedia)(startConfig.labels.media);
|
|
42
|
+
if (startConfig.labels?.defaultMedia)
|
|
43
|
+
(0, media_1.setDefaultLabelMedia)(startConfig.labels.defaultMedia);
|
|
44
|
+
if (startConfig.labels?.font)
|
|
45
|
+
(0, render_pdf_1.registerLabelFonts)(startConfig.labels.font);
|
|
46
|
+
if (startConfig.labels?.protectIdentityKeys !== undefined)
|
|
47
|
+
(0, redact_1.setIdentityKeyProtection)(startConfig.labels.protectIdentityKeys);
|
|
48
|
+
for (const [name, transport] of Object.entries(startConfig.labels?.transports ?? {})) {
|
|
49
|
+
transports_1.labelTransportRegistry.register(name, transport);
|
|
50
|
+
}
|
|
35
51
|
// Logging (register first so subsequent log calls use it)
|
|
36
52
|
if (startConfig.logging?.adapter) {
|
|
37
53
|
logger_1.loggerRegistry.register(startConfig.logging.adapter);
|
package/build/start/workers.js
CHANGED
|
@@ -102,8 +102,11 @@ async function collectWorkers(startConfig) {
|
|
|
102
102
|
];
|
|
103
103
|
logger_1.loggerRegistry.info('[long-tail] system workflows loaded');
|
|
104
104
|
if (startConfig.examples) {
|
|
105
|
-
const { exampleWorkers } = await Promise.resolve().then(() => __importStar(require('../examples')));
|
|
105
|
+
const { exampleWorkers, storageDropTransport, STORAGE_DROP_TRANSPORT } = await Promise.resolve().then(() => __importStar(require('../examples')));
|
|
106
106
|
workers.push(...exampleWorkers);
|
|
107
|
+
const { labelTransportRegistry } = await Promise.resolve().then(() => __importStar(require('../lib/labels/transports')));
|
|
108
|
+
if (!labelTransportRegistry.has(STORAGE_DROP_TRANSPORT))
|
|
109
|
+
labelTransportRegistry.register(STORAGE_DROP_TRANSPORT, storageDropTransport);
|
|
107
110
|
logger_1.loggerRegistry.info('[long-tail] example workflows loaded');
|
|
108
111
|
}
|
|
109
112
|
return { workers, builtinMcpServerFactories };
|
|
@@ -499,10 +502,11 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
499
502
|
// applies first — rule validation reads its kind.
|
|
500
503
|
if (startConfig.scanSchemes?.length) {
|
|
501
504
|
const { seedScanScheme, seedScanRule, applyScanScheme, applyScanRule, listScanSchemes, listScanRules, } = await Promise.resolve().then(() => __importStar(require('../services/scan-code')));
|
|
505
|
+
const { applyLabelTemplate, seedLabelTemplate, listLabelTemplates } = await Promise.resolve().then(() => __importStar(require('../services/labels/templates')));
|
|
502
506
|
const scanReport = (0, apply_report_1.newSurfaceReport)();
|
|
503
507
|
for (const scheme of startConfig.scanSchemes) {
|
|
504
508
|
const codeOwned = (0, apply_report_1.ownedByCode)(scheme.reset, configSource);
|
|
505
|
-
const { rules, reset: _reset, ...schemeInput } = scheme;
|
|
509
|
+
const { rules, labels, reset: _reset, ...schemeInput } = scheme;
|
|
506
510
|
try {
|
|
507
511
|
if (codeOwned) {
|
|
508
512
|
let outcome = await applyScanScheme(schemeInput);
|
|
@@ -511,6 +515,11 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
511
515
|
if (ruleOutcome === 'applied')
|
|
512
516
|
outcome = 'applied';
|
|
513
517
|
}
|
|
518
|
+
for (const label of labels ?? []) {
|
|
519
|
+
const labelOutcome = await applyLabelTemplate({ scheme_version: scheme.version, ...label });
|
|
520
|
+
if (labelOutcome === 'applied')
|
|
521
|
+
outcome = 'applied';
|
|
522
|
+
}
|
|
514
523
|
(0, apply_report_1.recordOutcome)(scanReport, `scheme ${scheme.version}`, outcome);
|
|
515
524
|
if (outcome === 'applied')
|
|
516
525
|
logger_1.loggerRegistry.info(`[long-tail] scan scheme applied: ${scheme.version}`);
|
|
@@ -519,12 +528,19 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
519
528
|
scanReport.orphans.push(...existingRules
|
|
520
529
|
.filter((r) => !declaredCategories.has(r.category))
|
|
521
530
|
.map((r) => `${scheme.version}/${r.category}`));
|
|
531
|
+
const declaredLabels = new Set((labels ?? []).map((l) => l.name));
|
|
532
|
+
scanReport.orphans.push(...(await listLabelTemplates(scheme.version))
|
|
533
|
+
.filter((t) => !declaredLabels.has(t.name))
|
|
534
|
+
.map((t) => `${scheme.version}/label:${t.name}`));
|
|
522
535
|
}
|
|
523
536
|
else {
|
|
524
537
|
const inserted = await seedScanScheme(schemeInput);
|
|
525
538
|
for (const rule of rules ?? []) {
|
|
526
539
|
await seedScanRule({ scheme_version: scheme.version, ...rule });
|
|
527
540
|
}
|
|
541
|
+
for (const label of labels ?? []) {
|
|
542
|
+
await seedLabelTemplate({ scheme_version: scheme.version, ...label });
|
|
543
|
+
}
|
|
528
544
|
(0, apply_report_1.recordOutcome)(scanReport, `scheme ${scheme.version}`, 'db-owned');
|
|
529
545
|
if (inserted)
|
|
530
546
|
logger_1.loggerRegistry.info(`[long-tail] scan scheme seeded: ${scheme.version}`);
|
|
@@ -60,6 +60,7 @@ const exports_1 = require("./exports");
|
|
|
60
60
|
const overview_1 = require("./overview");
|
|
61
61
|
const diagnostics_1 = require("./diagnostics");
|
|
62
62
|
const scan_codes_1 = require("./scan-codes");
|
|
63
|
+
const labels_1 = require("./labels");
|
|
63
64
|
const domain_context_1 = require("./domain-context");
|
|
64
65
|
const announcements_1 = require("./announcements");
|
|
65
66
|
let server = null;
|
|
@@ -91,6 +92,7 @@ async function createAdminServer(options) {
|
|
|
91
92
|
(0, overview_1.registerOverviewTools)(instance);
|
|
92
93
|
(0, diagnostics_1.registerDiagnosticsTools)(instance);
|
|
93
94
|
(0, scan_codes_1.registerScanCodeTools)(instance);
|
|
95
|
+
(0, labels_1.registerLabelTools)(instance);
|
|
94
96
|
(0, domain_context_1.registerDomainContextTools)(instance);
|
|
95
97
|
(0, announcements_1.registerAnnouncementTools)(instance);
|
|
96
98
|
logger_1.loggerRegistry.info(`[lt-mcp:admin] ${name} ready (${(0, registered_tools_1.registeredToolCount)(instance)} tools registered)`);
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listLabelTemplatesSchema: z.ZodObject<{
|
|
3
|
+
scheme: z.ZodOptional<z.ZodNumber>;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
scheme?: number | undefined;
|
|
6
|
+
}, {
|
|
7
|
+
scheme?: number | undefined;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const upsertLabelTemplateSchema: z.ZodObject<{
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
scheme_version: z.ZodNumber;
|
|
12
|
+
title: z.ZodString;
|
|
13
|
+
description: z.ZodOptional<z.ZodString>;
|
|
14
|
+
codes: z.ZodArray<z.ZodObject<{
|
|
15
|
+
category: z.ZodString;
|
|
16
|
+
caption: z.ZodOptional<z.ZodString>;
|
|
17
|
+
tone: z.ZodEnum<["solid", "outline", "plain"]>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
category: string;
|
|
20
|
+
tone: "solid" | "outline" | "plain";
|
|
21
|
+
caption?: string | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
category: string;
|
|
24
|
+
tone: "solid" | "outline" | "plain";
|
|
25
|
+
caption?: string | undefined;
|
|
26
|
+
}>, "many">;
|
|
27
|
+
text: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
title: z.ZodOptional<z.ZodString>;
|
|
29
|
+
lines: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
title?: string | undefined;
|
|
32
|
+
lines?: string[] | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
title?: string | undefined;
|
|
35
|
+
lines?: string[] | undefined;
|
|
36
|
+
}>>;
|
|
37
|
+
symbology: z.ZodOptional<z.ZodEnum<["code128", "qrcode", "datamatrix"]>>;
|
|
38
|
+
human_readable: z.ZodOptional<z.ZodBoolean>;
|
|
39
|
+
media: z.ZodOptional<z.ZodString>;
|
|
40
|
+
sensitive: z.ZodOptional<z.ZodBoolean>;
|
|
41
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
expected_revision: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
name: string;
|
|
45
|
+
scheme_version: number;
|
|
46
|
+
title: string;
|
|
47
|
+
codes: {
|
|
48
|
+
category: string;
|
|
49
|
+
tone: "solid" | "outline" | "plain";
|
|
50
|
+
caption?: string | undefined;
|
|
51
|
+
}[];
|
|
52
|
+
enabled?: boolean | undefined;
|
|
53
|
+
text?: {
|
|
54
|
+
title?: string | undefined;
|
|
55
|
+
lines?: string[] | undefined;
|
|
56
|
+
} | undefined;
|
|
57
|
+
description?: string | undefined;
|
|
58
|
+
symbology?: "code128" | "qrcode" | "datamatrix" | undefined;
|
|
59
|
+
human_readable?: boolean | undefined;
|
|
60
|
+
media?: string | undefined;
|
|
61
|
+
sensitive?: boolean | undefined;
|
|
62
|
+
expected_revision?: number | undefined;
|
|
63
|
+
}, {
|
|
64
|
+
name: string;
|
|
65
|
+
scheme_version: number;
|
|
66
|
+
title: string;
|
|
67
|
+
codes: {
|
|
68
|
+
category: string;
|
|
69
|
+
tone: "solid" | "outline" | "plain";
|
|
70
|
+
caption?: string | undefined;
|
|
71
|
+
}[];
|
|
72
|
+
enabled?: boolean | undefined;
|
|
73
|
+
text?: {
|
|
74
|
+
title?: string | undefined;
|
|
75
|
+
lines?: string[] | undefined;
|
|
76
|
+
} | undefined;
|
|
77
|
+
description?: string | undefined;
|
|
78
|
+
symbology?: "code128" | "qrcode" | "datamatrix" | undefined;
|
|
79
|
+
human_readable?: boolean | undefined;
|
|
80
|
+
media?: string | undefined;
|
|
81
|
+
sensitive?: boolean | undefined;
|
|
82
|
+
expected_revision?: number | undefined;
|
|
83
|
+
}>;
|
|
84
|
+
export declare const deleteLabelTemplateSchema: z.ZodObject<{
|
|
85
|
+
name: z.ZodString;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
name: string;
|
|
88
|
+
}, {
|
|
89
|
+
name: string;
|
|
90
|
+
}>;
|
|
91
|
+
export declare const renderLabelSheetSchema: z.ZodObject<{
|
|
92
|
+
template: z.ZodString;
|
|
93
|
+
source: z.ZodUnion<[z.ZodObject<{
|
|
94
|
+
kind: z.ZodLiteral<"list">;
|
|
95
|
+
text: z.ZodString;
|
|
96
|
+
}, "strip", z.ZodTypeAny, {
|
|
97
|
+
kind: "list";
|
|
98
|
+
text: string;
|
|
99
|
+
}, {
|
|
100
|
+
kind: "list";
|
|
101
|
+
text: string;
|
|
102
|
+
}>, z.ZodObject<{
|
|
103
|
+
kind: z.ZodLiteral<"range">;
|
|
104
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
105
|
+
from: z.ZodNumber;
|
|
106
|
+
to: z.ZodNumber;
|
|
107
|
+
pad: z.ZodOptional<z.ZodNumber>;
|
|
108
|
+
suffix: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
kind: "range";
|
|
111
|
+
from: number;
|
|
112
|
+
to: number;
|
|
113
|
+
prefix?: string | undefined;
|
|
114
|
+
suffix?: string | undefined;
|
|
115
|
+
pad?: number | undefined;
|
|
116
|
+
}, {
|
|
117
|
+
kind: "range";
|
|
118
|
+
from: number;
|
|
119
|
+
to: number;
|
|
120
|
+
prefix?: string | undefined;
|
|
121
|
+
suffix?: string | undefined;
|
|
122
|
+
pad?: number | undefined;
|
|
123
|
+
}>, z.ZodObject<{
|
|
124
|
+
kind: z.ZodLiteral<"escalations">;
|
|
125
|
+
ids: z.ZodArray<z.ZodString, "many">;
|
|
126
|
+
}, "strip", z.ZodTypeAny, {
|
|
127
|
+
kind: "escalations";
|
|
128
|
+
ids: string[];
|
|
129
|
+
}, {
|
|
130
|
+
kind: "escalations";
|
|
131
|
+
ids: string[];
|
|
132
|
+
}>, z.ZodObject<{
|
|
133
|
+
kind: z.ZodLiteral<"facets">;
|
|
134
|
+
query: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
135
|
+
}, "strip", z.ZodTypeAny, {
|
|
136
|
+
kind: "facets";
|
|
137
|
+
query: Record<string, any>;
|
|
138
|
+
}, {
|
|
139
|
+
kind: "facets";
|
|
140
|
+
query: Record<string, any>;
|
|
141
|
+
}>]>;
|
|
142
|
+
media: z.ZodOptional<z.ZodString>;
|
|
143
|
+
startPosition: z.ZodOptional<z.ZodNumber>;
|
|
144
|
+
copies: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
format: z.ZodEnum<["pdf", "zpl"]>;
|
|
146
|
+
}, "strip", z.ZodTypeAny, {
|
|
147
|
+
source: {
|
|
148
|
+
kind: "list";
|
|
149
|
+
text: string;
|
|
150
|
+
} | {
|
|
151
|
+
kind: "range";
|
|
152
|
+
from: number;
|
|
153
|
+
to: number;
|
|
154
|
+
prefix?: string | undefined;
|
|
155
|
+
suffix?: string | undefined;
|
|
156
|
+
pad?: number | undefined;
|
|
157
|
+
} | {
|
|
158
|
+
kind: "escalations";
|
|
159
|
+
ids: string[];
|
|
160
|
+
} | {
|
|
161
|
+
kind: "facets";
|
|
162
|
+
query: Record<string, any>;
|
|
163
|
+
};
|
|
164
|
+
format: "pdf" | "zpl";
|
|
165
|
+
template: string;
|
|
166
|
+
media?: string | undefined;
|
|
167
|
+
startPosition?: number | undefined;
|
|
168
|
+
copies?: number | undefined;
|
|
169
|
+
}, {
|
|
170
|
+
source: {
|
|
171
|
+
kind: "list";
|
|
172
|
+
text: string;
|
|
173
|
+
} | {
|
|
174
|
+
kind: "range";
|
|
175
|
+
from: number;
|
|
176
|
+
to: number;
|
|
177
|
+
prefix?: string | undefined;
|
|
178
|
+
suffix?: string | undefined;
|
|
179
|
+
pad?: number | undefined;
|
|
180
|
+
} | {
|
|
181
|
+
kind: "escalations";
|
|
182
|
+
ids: string[];
|
|
183
|
+
} | {
|
|
184
|
+
kind: "facets";
|
|
185
|
+
query: Record<string, any>;
|
|
186
|
+
};
|
|
187
|
+
format: "pdf" | "zpl";
|
|
188
|
+
template: string;
|
|
189
|
+
media?: string | undefined;
|
|
190
|
+
startPosition?: number | undefined;
|
|
191
|
+
copies?: number | undefined;
|
|
192
|
+
}>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderLabelSheetSchema = exports.deleteLabelTemplateSchema = exports.upsertLabelTemplateSchema = exports.listLabelTemplatesSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const tone = zod_1.z.enum(['solid', 'outline', 'plain']);
|
|
6
|
+
const symbology = zod_1.z.enum(['code128', 'qrcode', 'datamatrix']);
|
|
7
|
+
exports.listLabelTemplatesSchema = zod_1.z.object({
|
|
8
|
+
scheme: zod_1.z.number().int().optional().describe('Only templates for this scan scheme version'),
|
|
9
|
+
});
|
|
10
|
+
exports.upsertLabelTemplateSchema = zod_1.z.object({
|
|
11
|
+
name: zod_1.z.string().describe('Template id: lowercase letters, digits and dashes'),
|
|
12
|
+
scheme_version: zod_1.z.number().int().describe('The scan scheme whose codes the label prints'),
|
|
13
|
+
title: zod_1.z.string().describe('Display name in pickers'),
|
|
14
|
+
description: zod_1.z.string().optional(),
|
|
15
|
+
codes: zod_1.z.array(zod_1.z.object({
|
|
16
|
+
category: zod_1.z.string().describe('A rule category of the scheme, 0-9'),
|
|
17
|
+
caption: zod_1.z.string().optional().describe('The act printed beside the code; defaults to the rule name'),
|
|
18
|
+
tone: tone.describe('Caption band: solid (filled), outline, or plain'),
|
|
19
|
+
})).min(1).max(4),
|
|
20
|
+
text: zod_1.z.object({
|
|
21
|
+
title: zod_1.z.string().optional().describe('Largest line, in label tokens: {target}, {item.<facet>}, {user.<key>}, {scheme.name}'),
|
|
22
|
+
lines: zod_1.z.array(zod_1.z.string()).max(2).optional(),
|
|
23
|
+
}).optional(),
|
|
24
|
+
symbology: symbology.optional(),
|
|
25
|
+
human_readable: zod_1.z.boolean().optional().describe('Print the code as text under the symbol'),
|
|
26
|
+
media: zod_1.z.string().optional().describe('Default media preset id, e.g. a4-l7160'),
|
|
27
|
+
sensitive: zod_1.z.boolean().optional().describe('Ask for confirmation and record subjects when printing'),
|
|
28
|
+
enabled: zod_1.z.boolean().optional(),
|
|
29
|
+
expected_revision: zod_1.z.number().int().optional().describe('Write only if the stored revision matches'),
|
|
30
|
+
});
|
|
31
|
+
exports.deleteLabelTemplateSchema = zod_1.z.object({
|
|
32
|
+
name: zod_1.z.string(),
|
|
33
|
+
});
|
|
34
|
+
exports.renderLabelSheetSchema = zod_1.z.object({
|
|
35
|
+
template: zod_1.z.string().describe('Label template name'),
|
|
36
|
+
source: zod_1.z.union([
|
|
37
|
+
zod_1.z.object({ kind: zod_1.z.literal('list'), text: zod_1.z.string().describe('One target per line; a header row starting with "target" names {item.<column>} tokens') }),
|
|
38
|
+
zod_1.z.object({ kind: zod_1.z.literal('range'), prefix: zod_1.z.string().optional(), from: zod_1.z.number().int(), to: zod_1.z.number().int(), pad: zod_1.z.number().int().optional(), suffix: zod_1.z.string().optional() }),
|
|
39
|
+
zod_1.z.object({ kind: zod_1.z.literal('escalations'), ids: zod_1.z.array(zod_1.z.string()) }),
|
|
40
|
+
zod_1.z.object({ kind: zod_1.z.literal('facets'), query: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).describe('A FacetQuery: role, facets, …') }),
|
|
41
|
+
]),
|
|
42
|
+
media: zod_1.z.string().optional().describe('Media preset id; defaults to the template media'),
|
|
43
|
+
startPosition: zod_1.z.number().int().optional(),
|
|
44
|
+
copies: zod_1.z.number().int().optional(),
|
|
45
|
+
format: zod_1.z.enum(['pdf', 'zpl']).describe('pdf for sheet stock, zpl for thermal media'),
|
|
46
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Label template and label sheet tools — mirrors routes/labels.ts
|
|
3
|
+
*
|
|
4
|
+
* render_label_sheet issues a sheet as the caller and stores it as a file
|
|
5
|
+
* with a short-lived link. It prints item labels only: identity templates
|
|
6
|
+
* (badges) are printed by people, with a confirmation, never by an agent.
|
|
7
|
+
*/
|
|
8
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
+
export declare function registerLabelTools(server: McpServer): void;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.registerLabelTools = registerLabelTools;
|
|
37
|
+
const labelsApi = __importStar(require("../../../api/labels"));
|
|
38
|
+
const labels_1 = require("../../../services/labels");
|
|
39
|
+
const scan_code_1 = require("../../../services/scan-code");
|
|
40
|
+
const storage_1 = require("../../../lib/storage");
|
|
41
|
+
const types_1 = require("../../../types");
|
|
42
|
+
const caller_auth_1 = require("../caller-auth");
|
|
43
|
+
const labels_schemas_1 = require("./labels-schemas");
|
|
44
|
+
const SIGNED_URL_SECONDS = 600;
|
|
45
|
+
function asText(payload, isError = false) {
|
|
46
|
+
return { ...(isError ? { isError: true } : {}), content: [{ type: 'text', text: JSON.stringify(payload) }] };
|
|
47
|
+
}
|
|
48
|
+
function registerLabelTools(server) {
|
|
49
|
+
// mirrors GET /api/labels/templates
|
|
50
|
+
server.registerTool('list_label_templates', {
|
|
51
|
+
title: 'List Label Templates',
|
|
52
|
+
description: 'List label templates: which scan scheme each prints, its codes with captions, text, symbology and default media.',
|
|
53
|
+
inputSchema: labels_schemas_1.listLabelTemplatesSchema,
|
|
54
|
+
}, async (args) => {
|
|
55
|
+
const result = await labelsApi.listLabelTemplates({ scheme: args.scheme });
|
|
56
|
+
return asText(result.data ?? { error: result.error }, !!result.error);
|
|
57
|
+
});
|
|
58
|
+
// mirrors PUT /api/labels/templates/:name
|
|
59
|
+
server.registerTool('upsert_label_template', {
|
|
60
|
+
title: 'Upsert Label Template',
|
|
61
|
+
description: 'Create or replace a label template for a scan scheme: 1-4 of the scheme\'s rules printed as codes, ' +
|
|
62
|
+
'each beside its caption in a solid, outline or plain band; a title and up to two lines in label tokens.',
|
|
63
|
+
inputSchema: labels_schemas_1.upsertLabelTemplateSchema,
|
|
64
|
+
}, async (args) => {
|
|
65
|
+
const result = await labelsApi.upsertLabelTemplate(args);
|
|
66
|
+
return asText(result.data ?? { error: result.error }, !!result.error);
|
|
67
|
+
});
|
|
68
|
+
// mirrors DELETE /api/labels/templates/:name
|
|
69
|
+
server.registerTool('delete_label_template', { title: 'Delete Label Template', description: 'Delete one label template by name.', inputSchema: labels_schemas_1.deleteLabelTemplateSchema }, async (args) => {
|
|
70
|
+
const result = await labelsApi.deleteLabelTemplate(args);
|
|
71
|
+
return asText(result.data ?? { error: result.error }, !!result.error);
|
|
72
|
+
});
|
|
73
|
+
// mirrors POST /api/labels/issue (item templates only)
|
|
74
|
+
server.registerTool('render_label_sheet', {
|
|
75
|
+
title: 'Render Label Sheet',
|
|
76
|
+
description: 'Issue a sheet of item labels as the caller and store it as a PDF (sheet stock) or ZPL (thermal) file. ' +
|
|
77
|
+
'Returns the job id, the file ref, a link valid for 10 minutes, and warnings for codes that would fail on the floor. ' +
|
|
78
|
+
'Badge (identity) templates are refused: people print badges.',
|
|
79
|
+
inputSchema: labels_schemas_1.renderLabelSheetSchema,
|
|
80
|
+
}, async (args, extra) => {
|
|
81
|
+
const template = await (0, labels_1.getLabelTemplate)(args.template);
|
|
82
|
+
const scheme = template ? await (0, scan_code_1.getScanScheme)(template.scheme_version) : null;
|
|
83
|
+
if (template && (template.sensitive || scheme?.kind === types_1.SCAN_SCHEME_KINDS.IDENTITY)) {
|
|
84
|
+
return asText({ error: `"${args.template}" prints credentials or sensitive labels; a person prints it from the dashboard` }, true);
|
|
85
|
+
}
|
|
86
|
+
const result = await labelsApi.issueLabels({
|
|
87
|
+
template: args.template,
|
|
88
|
+
source: args.source,
|
|
89
|
+
layout: { media: args.media, startPosition: args.startPosition, copies: args.copies },
|
|
90
|
+
output: args.format,
|
|
91
|
+
}, await (0, caller_auth_1.callerAuth)(extra));
|
|
92
|
+
if (result.error)
|
|
93
|
+
return asText({ error: result.error }, true);
|
|
94
|
+
const { job, warnings, pdf, zpl } = result.data;
|
|
95
|
+
const key = `labels/${job.id}.${args.format}`;
|
|
96
|
+
const storage = (0, storage_1.getStorageBackend)();
|
|
97
|
+
const { ref } = await storage.write(key, Buffer.from(args.format === 'pdf' ? pdf : zpl));
|
|
98
|
+
const url = await storage.getSignedUrl(key, SIGNED_URL_SECONDS);
|
|
99
|
+
return asText({ jobId: job.id, labelCount: job.label_count, ref, url, warnings });
|
|
100
|
+
});
|
|
101
|
+
}
|