react-semaphor 0.1.318 → 0.1.320
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/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +851 -358
- package/dist/chunks/{calendar-preferences-dialog-DgpoCz1l.js → calendar-preferences-dialog-B7Z8OnuZ.js} +1 -1
- package/dist/chunks/{calendar-preferences-dialog-DySStYHa.js → calendar-preferences-dialog-CFXQBJ4A.js} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-BrUNYrwk.js → dashboard-briefing-launcher-DB16djcj.js} +3095 -2391
- package/dist/chunks/dashboard-briefing-launcher-DjDpGyD7.js +106 -0
- package/dist/chunks/{dashboard-controls-CDCpt8iB.js → dashboard-controls-BisfskDD.js} +1 -1
- package/dist/chunks/{dashboard-controls-BJb7QHvl.js → dashboard-controls-DPStW1kd.js} +3 -3
- package/dist/chunks/{dashboard-json-BYEqzs6b.js → dashboard-json-2nyFJ_-w.js} +1 -1
- package/dist/chunks/{dashboard-json-BjFw0Ktj.js → dashboard-json-C8-kkiyT.js} +1 -1
- package/dist/chunks/{edit-dashboard-visual-IxtXVkBc.js → edit-dashboard-visual-BP77bJFI.js} +1 -1
- package/dist/chunks/{edit-dashboard-visual-VHlDJd5A.js → edit-dashboard-visual-D6oiTlXr.js} +3 -3
- package/dist/chunks/{index-CAWSZGCL.js → index-Clw0hJzi.js} +289 -288
- package/dist/chunks/{index-BhrZn1Zk.js → index-D8eouWYC.js} +75 -75
- package/dist/chunks/{resource-management-panel-X4zxZ4wq.js → resource-management-panel-DTvY5OIq.js} +1 -1
- package/dist/chunks/{resource-management-panel-0OlH_Gze.js → resource-management-panel-HcRJRZHO.js} +2 -2
- package/dist/chunks/{use-create-flow-overlay-state-WYyQFfGQ.js → use-create-flow-overlay-state-75l5mrVp.js} +2 -2
- package/dist/chunks/{use-create-flow-overlay-state-DkZTa6eN.js → use-create-flow-overlay-state-CdCldE6J.js} +1 -1
- package/dist/chunks/{use-visual-utils-C8VR6_Cr.js → use-visual-utils-Bd4Cf9_B.js} +1 -1
- package/dist/chunks/{use-visual-utils-2l8uDXRH.js → use-visual-utils-CMdEUnM5.js} +1 -1
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +5 -5
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/briefings.d.ts +125 -1
- package/dist/types/main.d.ts +29 -1
- package/dist/types/types.d.ts +29 -1
- package/package.json +1 -1
- package/dist/chunks/dashboard-briefing-launcher-Fh6vC1S2.js +0 -101
package/dist/briefings/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var U=Object.defineProperty;var q=(t,n,e)=>n in t?U(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var R=(t,n,e)=>q(t,typeof n!="symbol"?n+"":n,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v="BRIEFING",O=["markdown","html"],A=["markdown"],$=20,c={name:500,description:2e3,instruction:5e4,customMessage:5e4,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},x=new Set(O),H=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),T={maxToolCalls:{min:1,max:100},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},K=new Set(["letter","legal","a4","a3","tabloid"]),J=new Set(["portrait","landscape"]),X=new Set([",",";"," "]),W=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","theme"];class C extends Error{constructor(e){super(e.map(r=>`${r.field}: ${r.message}`).join("; "));R(this,"issues");this.name="BriefingContractError",this.issues=e}}function D(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function d(t,n,e){t.push({field:n,message:e})}function m(t,n,e){return D(t)?t:(d(e,n,"Expected an object."),{})}function s(t,n,e,r){const o=new Set(e);Object.keys(t).forEach(i=>{o.has(i)||d(r,n?`${n}.${i}`:i,`Unexpected field "${i}".`)})}function f(t,n,e,r){if(typeof t!="string")return d(r,n,"Expected a string."),"";const o=t.trim();return o?(o.length>e&&d(r,n,`Must be ${e} characters or fewer.`),o):(d(r,n,"Required value cannot be empty."),"")}function u(t,n,e,r){if(t==null)return;if(typeof t!="string"){d(r,n,"Expected a string.");return}const o=t.trim();if(o)return o.length>e&&d(r,n,`Must be ${e} characters or fewer.`),o}function _(t,n,e,r){return t==null?n:typeof t!="boolean"?(d(r,e,"Expected a boolean."),n):t}function Y(t,n){return t==null?"ACTIVE":t==="ACTIVE"||t==="PAUSED"||t==="DISABLED"?t:(d(n,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function Z(t){return t.includes("@")&&t.includes(".")&&!t.includes(" ")}function N(t,n){if(t==null)return{type:"project"};const e=m(t,"source",n),r=e.type;return r==="project"?(s(e,"source",["type"],n),{type:"project"}):r==="dashboard"?(s(e,"source",["type","dashboardId"],n),{type:"dashboard",dashboardId:f(e.dashboardId,"source.dashboardId",c.id,n)}):(d(n,"source.type","Expected project or dashboard."),{type:"project"})}function V(t,n){const e=m(t,"body",n),r=e.type;return r==="generated_analysis"?(s(e,"body",["type","instruction"],n),{type:"generated_analysis",instruction:f(e.instruction,"body.instruction",c.instruction,n)}):r==="custom_message"?(s(e,"body",["type","message"],n),{type:"custom_message",message:f(e.message,"body.message",c.customMessage,n)}):r==="none"?(s(e,"body",["type"],n),{type:"none"}):(d(n,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function Q(t,n){if(t==null)return[...A];if(!Array.isArray(t))return d(n,"presentation.artifactFormats","Expected an array."),[...A];if(t.length===0)return d(n,"presentation.artifactFormats","Choose at least one artifact format."),[];const e=[];return t.forEach((r,o)=>{if(typeof r!="string"||!x.has(r)){d(n,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}e.includes(r)||e.push(r)}),e}function j(t,n){if(t==null)return{artifactFormats:[...A],includeEvidence:!0,includeSql:!0};const e=m(t,"presentation",n);s(e,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format"],n);const r={artifactFormats:Q(e.artifactFormats,n),includeEvidence:_(e.includeEvidence,!0,"presentation.includeEvidence",n),includeSql:_(e.includeSql,!0,"presentation.includeSql",n)},o=u(e.audience,"presentation.audience",c.presentationAudience,n),i=u(e.tone,"presentation.tone",c.presentationTone,n),a=u(e.format,"presentation.format",c.presentationFormat,n);return o&&(r.audience=o),i&&(r.tone=i),a&&(r.format=a),r}function g(t,n,e,r){return typeof t=="string"&&e.includes(t)?t:(d(r,n,`Expected ${e.join(" or ")}.`),e[0])}function I(t,n,e,r,o){if(t!=null){if(typeof t=="string"&&e.has(t))return t;d(o,n,`Expected ${r}.`)}}function ee(t,n,e){if(t!=null){if(!Array.isArray(t)){d(e,n,"Expected an array.");return}return t}}function te(t,n,e){if(t!=null){if(!D(t)){d(e,n,"Expected an object.");return}return t}}function ne(t,n,e){if(t==null)return;const r=m(t,n,e);s(r,n,W,e);const o={},i=I(r.pageSize,`${n}.pageSize`,K,"letter, legal, a4, a3, or tabloid",e),a=I(r.orientation,`${n}.orientation`,J,"portrait or landscape",e),p=I(r.delimiter,`${n}.delimiter`,X,"comma, semicolon, or tab",e),y=I(r.sheetSelection,`${n}.sheetSelection`,new Set(["current","all"]),"current or all",e);i&&(o.pageSize=i),a&&(o.orientation=a),p&&(o.delimiter=p),y&&(o.sheetSelection=y);for(const l of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues"])if(!(r[l]===void 0||r[l]===null)){if(typeof r[l]!="boolean"){d(e,`${n}.${l}`,"Expected a boolean.");continue}o[l]=r[l]}for(const l of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const h=u(r[l],`${n}.${l}`,c.id,e);h&&(o[l]=h)}for(const l of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const h=ee(r[l],`${n}.${l}`,e);h&&(o[l]=h)}for(const l of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const h=te(r[l],`${n}.${l}`,e);h&&(o[l]=h)}return Object.keys(o).length>0?o:void 0}function b(t,n,e,r){const o=u(n,e,c.attachmentTitle,r);return o&&(t.title=o),t}function E(t,n,e,r){const o=ne(n,e,r);return o&&(t.settings=o),t}function re(t,n,e){const r=`attachments.${n}`,o=m(t,r,e),i=o.type;if(i==="dashboard"){s(o,r,["type","dashboardId","format","title","settings"],e);const a=b({type:"dashboard",dashboardId:f(o.dashboardId,`${r}.dashboardId`,c.id,e),format:g(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return E(a,o.settings,`${r}.settings`,e)}if(i==="dashboard_sheet"||i==="document_sheet"){s(o,r,["type","dashboardId","sheetId","format","title","settings"],e);const a=b({type:i,dashboardId:f(o.dashboardId,`${r}.dashboardId`,c.id,e),sheetId:f(o.sheetId,`${r}.sheetId`,c.id,e),format:g(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return E(a,o.settings,`${r}.settings`,e)}if(i==="visual"){s(o,r,["type","dashboardId","visualId","format","title","settings"],e);const a=b({type:"visual",dashboardId:f(o.dashboardId,`${r}.dashboardId`,c.id,e),visualId:f(o.visualId,`${r}.visualId`,c.id,e),format:g(o.format,`${r}.format`,["pdf","png"],e)},o.title,`${r}.title`,e);return E(a,o.settings,`${r}.settings`,e)}if(i==="card"){s(o,r,["type","dashboardId","cardId","format","title","settings"],e);const a=b({type:"card",dashboardId:f(o.dashboardId,`${r}.dashboardId`,c.id,e),cardId:f(o.cardId,`${r}.cardId`,c.id,e),format:g(o.format,`${r}.format`,["csv","pdf","png"],e)},o.title,`${r}.title`,e);return E(a,o.settings,`${r}.settings`,e)}return d(e,`${r}.type`,"Expected dashboard, dashboard_sheet, document_sheet, visual, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function oe(t){switch(t.type){case"dashboard":return`${t.type}:${t.dashboardId}:${t.format}`;case"dashboard_sheet":case"document_sheet":return`${t.type}:${t.dashboardId}:${t.sheetId}:${t.format}`;case"visual":return`${t.type}:${t.dashboardId}:${t.visualId}:${t.format}`;case"card":return`${t.type}:${t.dashboardId}:${t.cardId}:${t.format}`}}function w(t,n){if(t==null)return[];if(!Array.isArray(t))return d(n,"attachments","Expected an array."),[];t.length>$&&d(n,"attachments",`Choose ${$} attachments or fewer.`);const e=t.slice(0,$).map((o,i)=>re(o,i,n)),r=new Set;return e.forEach((o,i)=>{const a=oe(o);r.has(a)&&d(n,`attachments.${i}`,"Duplicate attachment."),r.add(a)}),e}function M(t,n){if(t==null)return;const e=m(t,"limits",n);s(e,"limits",Object.keys(T),n);const r={};return Object.keys(T).forEach(o=>{const i=e[o];if(i==null)return;const a=T[o];if(typeof i!="number"||!Number.isInteger(i)||i<a.min||i>a.max){d(n,`limits.${o}`,`Expected an integer between ${a.min} and ${a.max}.`);return}r[o]=i}),Object.keys(r).length>0?r:void 0}function k(t){if(t.length>0)throw new C(t)}function L(t,n,e){t.type==="none"&&n.length===0&&d(e,"body","Add briefing instructions, a custom message, or at least one attachment.")}function B(t){const n=[],e=m(t,"jobConfig",n);s(e,"jobConfig",["kind","source","body","attachments","presentation","limits"],n),e.kind!==v&&d(n,"kind","Expected BRIEFING.");const r=N(e.source,n),o=V(e.body,n),i=w(e.attachments,n),a=j(e.presentation,n),p=M(e.limits,n);return L(o,i,n),k(n),{kind:v,source:r,body:o,attachments:i,presentation:a,...p?{limits:p}:{}}}function ie(t){return B({...t,kind:v})}function ae(t,n,e){const r=`deliveryConfig.recipients.${n}`,o=m(t,r,e),i=o.type;if(i==="email"){s(o,r,["type","address","name"],e);const a=f(o.address,`${r}.address`,c.id,e),p=u(o.name,`${r}.name`,c.attachmentTitle,e);return a&&!Z(a)&&d(e,`${r}.address`,"Email address is invalid."),{type:"email",address:a,...p?{name:p}:{}}}return i==="user"?(s(o,r,["type","userId"],e),{type:"user",userId:f(o.userId,`${r}.userId`,c.id,e)}):i==="tenant_user"?(s(o,r,["type","tenantUserId"],e),{type:"tenant_user",tenantUserId:f(o.tenantUserId,`${r}.tenantUserId`,c.id,e)}):i==="group"?(s(o,r,["type","groupId"],e),{type:"group",groupId:f(o.groupId,`${r}.groupId`,c.id,e)}):(d(e,`${r}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function de(t,n){return Array.isArray(t)?t.map((e,r)=>ae(e,r,n)):(d(n,"deliveryConfig.recipients","Expected an array."),[])}function ce(t,n){if(!Array.isArray(t))return d(n,"deliveryConfig.channels","Expected an array."),[];const e=[];return t.forEach((r,o)=>{if(!F(r)){d(n,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}e.includes(r)||e.push(r)}),e}function le(t,n,e){if(t==null)return;const r=m(t,n,e),o={};return Object.entries(r).forEach(([i,a])=>{if(typeof a!="string"){d(e,`${n}.${i}`,"Expected a string.");return}o[i]=a.trim()}),Object.keys(o).length>0?o:void 0}function se(t,n,e){if(t==null)return;const r=m(t,n,e);s(r,n,["url","method","headers","secretEncrypted"],e);const o=r.method===void 0||r.method===null?void 0:g(r.method,`${n}.method`,["POST","PUT"],e),i=le(r.headers,`${n}.headers`,e),a=u(r.secretEncrypted,`${n}.secretEncrypted`,2e3,e);return{url:f(r.url,`${n}.url`,2e3,e),...o?{method:o}:{},...i?{headers:i}:{},...a?{secretEncrypted:a}:{}}}function fe(t,n,e){const r=m(t,n,e);s(r,n,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","webhookConfig"],e);const o=u(r.subjectOverride,`${n}.subjectOverride`,500,e),i=u(r.titleOverride,`${n}.titleOverride`,500,e),a=u(r.summaryOverride,`${n}.summaryOverride`,2e3,e),p=_(r.actionBlockVisible,!0,`${n}.actionBlockVisible`,e),y=se(r.webhookConfig,`${n}.webhookConfig`,e);return{...o?{subjectOverride:o}:{},...i?{titleOverride:i}:{},...a?{summaryOverride:a}:{},...r.actionBlockVisible!==void 0?{actionBlockVisible:p}:{},...y?{webhookConfig:y}:{}}}function me(t,n){if(t==null)return;const e=m(t,"deliveryConfig.channelConfigs",n),r={};return Object.entries(e).forEach(([o,i])=>{if(!F(o)){d(n,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}r[o]=fe(i,`deliveryConfig.channelConfigs.${o}`,n)}),Object.keys(r).length>0?r:void 0}function ue(t,n){if(t==null)return null;const e=m(t,"deliveryConfig",n);s(e,"deliveryConfig",["recipients","channels","channelConfigs"],n);const r=me(e.channelConfigs,n),o=de(e.recipients,n),i=ce(e.channels,n);return o.length===0&&d(n,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),i.length===0&&d(n,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),{recipients:o,channels:i,...r?{channelConfigs:r}:{}}}function S(t){const n=[],e=m(t,"draft",n);s(e,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],n);const r=f(e.name,"name",c.name,n),o=u(e.description,"description",c.description,n)??null,i=u(e.scheduleExpr,"scheduleExpr",500,n)??null,a=u(e.timezone,"timezone",200,n)??"UTC",p=Y(e.status,n),y=N(e.source,n),l=V(e.body,n),h=w(e.attachments,n),P=j(e.presentation,n),z=M(e.limits,n),G=ue(e.deliveryConfig,n);return L(l,h,n),k(n),{name:r,description:o,status:p,scheduleExpr:i,timezone:a,source:y,body:l,attachments:h,presentation:P,...z?{limits:z}:{},deliveryConfig:G}}function pe(t){return S(t)}function he(t){return S(t)}function ye(t){try{return{valid:!0,value:S(t),issues:[]}}catch(n){if(n instanceof C)return{valid:!1,issues:n.issues};throw n}}function ge(t){try{return{valid:!0,value:B(t),issues:[]}}catch(n){if(n instanceof C)return{valid:!1,issues:n.issues};throw n}}function Ie(t){return typeof t=="string"&&x.has(t)}function F(t){return typeof t=="string"&&H.has(t)}exports.BRIEFING_ARTIFACT_FORMATS=O;exports.BRIEFING_KIND=v;exports.BRIEFING_TEXT_LIMITS=c;exports.BriefingContractError=C;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=A;exports.MAX_BRIEFING_ATTACHMENTS=$;exports.buildBriefingJobConfig=ie;exports.buildCreateBriefingRequest=pe;exports.buildUpdateBriefingRequest=he;exports.isBriefingArtifactFormat=Ie;exports.isBriefingDeliveryChannel=F;exports.normalizeBriefingDraft=S;exports.normalizeBriefingJobConfig=B;exports.validateBriefingDraft=ye;exports.validateBriefingJobConfig=ge;
|
|
1
|
+
"use strict";var J=Object.defineProperty;var X=(n,t,e)=>t in n?J(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var z=(n,t,e)=>X(n,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S="BRIEFING",N=["markdown","html"],k=["markdown"],x=20,l={name:500,description:2e3,instruction:5e4,customMessage:5e4,contentTitle:500,contentSummary:2e4,contentText:5e3,contentItem:2e3,contentCell:500,attachmentTitle:500,presentationAudience:1e3,presentationTone:500,presentationFormat:2e3,id:500},g={maxBlocks:50,maxTableRows:100,maxTableColumns:20,maxTableCellCharacters:l.contentCell,maxParagraphCharacters:l.contentText,maxFindingCharacters:l.contentText,maxListItems:100},O=new Set(N),W=new Set(["EMAIL","WEBHOOK","SLACK","IN_APP","TELEGRAM"]),B={maxToolCalls:{min:1,max:100},maxRows:{min:1,max:1e5},timeoutMs:{min:1e3,max:30*6e4}},Y=new Set(["letter","legal","a4","a3","tabloid"]),Z=new Set(["portrait","landscape"]),Q=new Set([",",";"," "]),ee=new Set(["current","all"]),te=new Set(["concise","balanced","detailed"]),ne=new Set(["info","positive","warning","critical"]),re=new Set(["text","number","currency","percent","date","boolean"]),oe=new Set(["left","center","right"]),ie=["pageSize","orientation","includeFilters","includeTimestamp","delimiter","includeHeaders","useFormattedValues","sheetSelection","currentSheetId","currentSheetName","filterValues","inlineFilterValues","sheetFilterValues","filterLine","controlValues","controlDefinitions","cardControlDefinitions","controlBindings","tablePreferences","dashboardInputExecutionSnapshot","selectedSheetId","cardType","theme"];class C extends Error{constructor(e){super(e.map(r=>`${r.field}: ${r.message}`).join("; "));z(this,"issues");this.name="BriefingContractError",this.issues=e}}function V(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function c(n,t,e){n.push({field:t,message:e})}function h(n,t,e){return V(n)?n:(c(e,t,"Expected an object."),{})}function s(n,t,e,r){const o=new Set(e);Object.keys(n).forEach(i=>{o.has(i)||c(r,t?`${t}.${i}`:i,`Unexpected field "${i}".`)})}function u(n,t,e,r){if(typeof n!="string")return c(r,t,"Expected a string."),"";const o=n.trim();return o?(o.length>e&&c(r,t,`Must be ${e} characters or fewer.`),o):(c(r,t,"Required value cannot be empty."),"")}function y(n,t,e,r){if(n==null)return;if(typeof n!="string"){c(r,t,"Expected a string.");return}const o=n.trim();if(o)return o.length>e&&c(r,t,`Must be ${e} characters or fewer.`),o}function ae(n,t,e){if(n!=null){if(!Number.isInteger(n)||Number(n)<0){c(e,t,"Expected a non-negative integer.");return}return Number(n)}}function b(n,t,e,r={}){if(n==null)return r.required?(c(e,t,"Expected at least one evidence id."),[]):void 0;if(!Array.isArray(n))return c(e,t,"Expected an array."),r.required?[]:void 0;const o=[];return n.forEach((i,a)=>{const d=u(i,`${t}.${a}`,l.id,e);d&&!o.includes(d)&&o.push(d)}),r.required&&o.length===0&&c(e,t,"Expected at least one evidence id."),o.length>0||r.required?o:void 0}function $(n,t,e,r){return n==null?t:typeof n!="boolean"?(c(r,e,"Expected a boolean."),t):n}function ce(n,t){return n==null?"ACTIVE":n==="ACTIVE"||n==="PAUSED"||n==="DISABLED"?n:(c(t,"status","Expected ACTIVE, PAUSED, or DISABLED."),"ACTIVE")}function de(n){return n.includes("@")&&n.includes(".")&&!n.includes(" ")}function M(n,t){if(n==null)return{type:"project"};const e=h(n,"source",t),r=e.type;return r==="project"?(s(e,"source",["type"],t),{type:"project"}):r==="dashboard"?(s(e,"source",["type","dashboardId"],t),{type:"dashboard",dashboardId:u(e.dashboardId,"source.dashboardId",l.id,t)}):(c(t,"source.type","Expected project or dashboard."),{type:"project"})}function P(n,t){const e=h(n,"body",t),r=e.type;return r==="generated_analysis"?(s(e,"body",["type","instruction"],t),{type:"generated_analysis",instruction:u(e.instruction,"body.instruction",l.instruction,t)}):r==="custom_message"?(s(e,"body",["type","message"],t),{type:"custom_message",message:u(e.message,"body.message",l.customMessage,t)}):r==="none"?(s(e,"body",["type"],t),{type:"none"}):(c(t,"body.type","Expected generated_analysis, custom_message, or none."),{type:"none"})}function le(n,t){if(n==null)return[...k];if(!Array.isArray(n))return c(t,"presentation.artifactFormats","Expected an array."),[...k];if(n.length===0)return c(t,"presentation.artifactFormats","Choose at least one artifact format."),[];const e=[];return n.forEach((r,o)=>{if(typeof r!="string"||!O.has(r)){c(t,`presentation.artifactFormats.${o}`,"Expected markdown or html.");return}e.includes(r)||e.push(r)}),e}function j(n,t){if(n==null)return{artifactFormats:[...k],includeEvidence:!0,includeSql:!0};const e=h(n,"presentation",t);s(e,"presentation",["artifactFormats","includeEvidence","includeSql","audience","tone","format"],t);const r={artifactFormats:le(e.artifactFormats,t),includeEvidence:$(e.includeEvidence,!0,"presentation.includeEvidence",t),includeSql:$(e.includeSql,!0,"presentation.includeSql",t)},o=y(e.audience,"presentation.audience",l.presentationAudience,t),i=y(e.tone,"presentation.tone",l.presentationTone,t),a=y(e.format,"presentation.format",l.presentationFormat,t);return o&&(r.audience=o),i&&(r.tone=i),a&&(r.format=a),r}function fe(n,t,e){return Array.isArray(n)?(n.length===0&&c(e,t,"Expected at least one item."),n.length>g.maxListItems&&c(e,t,`Must have ${g.maxListItems} items or fewer.`),n.slice(0,g.maxListItems).map((r,o)=>u(r,`${t}.${o}`,l.contentItem,e)).filter(Boolean)):(c(e,t,"Expected an array."),[])}function se(n,t,e){return n===null||typeof n=="string"||typeof n=="number"||typeof n=="boolean"?typeof n=="string"&&n.length>l.contentCell?(c(e,t,`Must be ${l.contentCell} characters or fewer.`),n.slice(0,l.contentCell)):typeof n=="number"&&!Number.isFinite(n)?(c(e,t,"Expected a finite number."),null):n:(c(e,t,"Expected a string, number, boolean, or null."),null)}function me(n,t,e){if(!Array.isArray(n))return c(e,t,"Expected an array."),[];n.length===0&&c(e,t,"Expected at least one column."),n.length>g.maxTableColumns&&c(e,t,`Must have ${g.maxTableColumns} columns or fewer.`);const r=new Set;return n.slice(0,g.maxTableColumns).map((o,i)=>{const a=`${t}.${i}`,d=h(o,a,e);s(d,a,["key","label","kind","align"],e);const m=u(d.key,`${a}.key`,l.id,e);m&&(r.has(m)&&c(e,`${a}.key`,"Column key must be unique."),r.add(m));const f=u(d.label,`${a}.label`,l.contentTitle,e),p=v(d.kind,`${a}.kind`,re,"text, number, currency, percent, date, or boolean",e),I=v(d.align,`${a}.align`,oe,"left, center, or right",e);return{key:m,label:f,...p?{kind:p}:{},...I?{align:I}:{}}})}function pe(n,t,e,r){if(!Array.isArray(n))return c(r,t,"Expected an array."),[];n.length>g.maxTableRows&&c(r,t,`Must have ${g.maxTableRows} rows or fewer.`);const o=new Set(e.map(i=>i.key).filter(Boolean));return n.slice(0,g.maxTableRows).map((i,a)=>{const d=`${t}.${a}`,m=h(i,d,r);return Object.keys(m).forEach(f=>{o.has(f)||c(r,`${d}.${f}`,`Unexpected table cell "${f}".`)}),Object.fromEntries(e.map(f=>[f.key,se(m[f.key]??null,`${d}.${f.key}`,r)]))})}function ue(n,t,e){const r=`content.blocks.${t}`,o=h(n,r,e),i=o.type;if(i==="heading"){s(o,r,["type","text","level","evidenceIds"],e);const a=o.level===void 0||o.level===null?void 0:o.level===2||o.level===3?o.level:void 0;o.level!==void 0&&o.level!==null&&a===void 0&&c(e,`${r}.level`,"Expected 2 or 3.");const d=b(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"heading",text:u(o.text,`${r}.text`,l.contentTitle,e),...a?{level:a}:{},...d?{evidenceIds:d}:{}}}if(i==="paragraph"){s(o,r,["type","text","evidenceIds"],e);const a=b(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"paragraph",text:u(o.text,`${r}.text`,l.contentText,e),...a?{evidenceIds:a}:{}}}if(i==="finding"){s(o,r,["type","title","text","severity","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e),d=v(o.severity,`${r}.severity`,ne,"info, positive, warning, or critical",e);return{type:"finding",...a?{title:a}:{},text:u(o.text,`${r}.text`,l.contentText,e),...d?{severity:d}:{},evidenceIds:b(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}if(i==="bullets"||i==="actions"||i==="limitations"){s(o,r,["type","title","items","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e),d=b(o.evidenceIds,`${r}.evidenceIds`,e);return{type:i,...a?{title:a}:{},items:fe(o.items,`${r}.items`,e),...d?{evidenceIds:d}:{}}}if(i==="metric"){s(o,r,["type","label","value","previousValue","delta","unit","evidenceIds"],e);const a=typeof o.value=="string"||typeof o.value=="number"?o.value:"";a===""&&c(e,`${r}.value`,"Expected a string or number.");const d=o.previousValue===void 0||o.previousValue===null||typeof o.previousValue=="string"||typeof o.previousValue=="number"?o.previousValue:void 0;o.previousValue!==void 0&&o.previousValue!==null&&d===void 0&&c(e,`${r}.previousValue`,"Expected a string, number, or null.");const m=o.delta===void 0||o.delta===null||typeof o.delta=="string"||typeof o.delta=="number"?o.delta:void 0;o.delta!==void 0&&o.delta!==null&&m===void 0&&c(e,`${r}.delta`,"Expected a string, number, or null.");const f=y(o.unit,`${r}.unit`,l.contentTitle,e),p=b(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"metric",label:u(o.label,`${r}.label`,l.contentTitle,e),value:a,...d!==void 0?{previousValue:d}:{},...m!==void 0?{delta:m}:{},...f?{unit:f}:{},...p?{evidenceIds:p}:{}}}if(i==="table"){s(o,r,["type","id","title","columns","rows","caption","totalRows","evidenceIds"],e);const a=me(o.columns,`${r}.columns`,e),d=y(o.title,`${r}.title`,l.contentTitle,e),m=y(o.id,`${r}.id`,l.id,e),f=y(o.caption,`${r}.caption`,l.contentItem,e),p=ae(o.totalRows,`${r}.totalRows`,e),I=b(o.evidenceIds,`${r}.evidenceIds`,e);return{type:"table",...m?{id:m}:{},...d?{title:d}:{},columns:a,rows:pe(o.rows,`${r}.rows`,a,e),...f?{caption:f}:{},...p!==void 0?{totalRows:p}:{},...I?{evidenceIds:I}:{}}}if(i==="evidence_appendix"){s(o,r,["type","title","evidenceIds"],e);const a=y(o.title,`${r}.title`,l.contentTitle,e);return{type:"evidence_appendix",...a?{title:a}:{},evidenceIds:b(o.evidenceIds,`${r}.evidenceIds`,e,{required:!0})??[]}}return c(e,`${r}.type`,"Expected heading, paragraph, finding, bullets, metric, table, actions, limitations, or evidence_appendix."),{type:"paragraph",text:""}}function q(n){const t=[],e=h(n,"content",t);s(e,"content",["version","title","summary","blocks"],t),e.version!==1&&c(t,"content.version","Expected version 1.");const r=y(e.title,"content.title",l.contentTitle,t),o=y(e.summary,"content.summary",l.contentSummary,t);Array.isArray(e.blocks)||c(t,"content.blocks","Expected an array.");const i=Array.isArray(e.blocks)?e.blocks:[];i.length===0&&c(t,"content.blocks","Expected at least one block."),i.length>g.maxBlocks&&c(t,"content.blocks",`Must have ${g.maxBlocks} blocks or fewer.`);const a=i.slice(0,g.maxBlocks).map((d,m)=>ue(d,m,t));return L(t),{version:1,...r?{title:r}:{},...o?{summary:o}:{},blocks:a}}function ye(n){try{return{valid:!0,value:q(n),issues:[]}}catch(t){if(t instanceof C)return{valid:!1,issues:t.issues};throw t}}function E(n,t,e,r){return typeof n=="string"&&e.includes(n)?n:(c(r,t,`Expected ${e.join(" or ")}.`),e[0])}function v(n,t,e,r,o){if(n!=null){if(typeof n=="string"&&e.has(n))return n;c(o,t,`Expected ${r}.`)}}function he(n,t,e){if(n!=null){if(!Array.isArray(n)){c(e,t,"Expected an array.");return}return n}}function ge(n,t,e){if(n!=null){if(!V(n)){c(e,t,"Expected an object.");return}return n}}function Ie(n,t,e){if(n==null)return;const r=h(n,t,e);s(r,t,ie,e);const o={},i=v(r.pageSize,`${t}.pageSize`,Y,"letter, legal, a4, a3, or tabloid",e),a=v(r.orientation,`${t}.orientation`,Z,"portrait or landscape",e),d=v(r.delimiter,`${t}.delimiter`,Q,"comma, semicolon, or tab",e),m=v(r.sheetSelection,`${t}.sheetSelection`,ee,"current or all",e);i&&(o.pageSize=i),a&&(o.orientation=a),d&&(o.delimiter=d),m&&(o.sheetSelection=m);for(const f of["includeFilters","includeTimestamp","includeHeaders","useFormattedValues"])if(!(r[f]===void 0||r[f]===null)){if(typeof r[f]!="boolean"){c(e,`${t}.${f}`,"Expected a boolean.");continue}o[f]=r[f]}for(const f of["currentSheetId","currentSheetName","filterLine","selectedSheetId","cardType","theme"]){const p=y(r[f],`${t}.${f}`,l.id,e);p&&(o[f]=p)}for(const f of["filterValues","inlineFilterValues","sheetFilterValues","controlDefinitions","cardControlDefinitions","controlBindings"]){const p=he(r[f],`${t}.${f}`,e);p&&(o[f]=p)}for(const f of["controlValues","tablePreferences","dashboardInputExecutionSnapshot"]){const p=ge(r[f],`${t}.${f}`,e);p&&(o[f]=p)}return Object.keys(o).length>0?o:void 0}function T(n,t,e,r){const o=y(t,e,l.attachmentTitle,r);return o&&(n.title=o),n}function A(n,t,e,r){const o=Ie(t,e,r);return o&&(n.settings=o),n}function ve(n,t,e){const r=`attachments.${t}`,o=h(n,r,e),i=o.type;if(i==="dashboard"){s(o,r,["type","dashboardId","format","title","settings"],e);const a=T({type:"dashboard",dashboardId:u(o.dashboardId,`${r}.dashboardId`,l.id,e),format:E(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return A(a,o.settings,`${r}.settings`,e)}if(i==="dashboard_sheet"||i==="document_sheet"){s(o,r,["type","dashboardId","sheetId","format","title","settings"],e);const a=T({type:i,dashboardId:u(o.dashboardId,`${r}.dashboardId`,l.id,e),sheetId:u(o.sheetId,`${r}.sheetId`,l.id,e),format:E(o.format,`${r}.format`,["pdf"],e)},o.title,`${r}.title`,e);return A(a,o.settings,`${r}.settings`,e)}if(i==="visual"){s(o,r,["type","dashboardId","visualId","format","title","settings"],e);const a=T({type:"visual",dashboardId:u(o.dashboardId,`${r}.dashboardId`,l.id,e),visualId:u(o.visualId,`${r}.visualId`,l.id,e),format:E(o.format,`${r}.format`,["pdf","png"],e)},o.title,`${r}.title`,e);return A(a,o.settings,`${r}.settings`,e)}if(i==="card"){s(o,r,["type","dashboardId","cardId","format","title","settings"],e);const a=T({type:"card",dashboardId:u(o.dashboardId,`${r}.dashboardId`,l.id,e),cardId:u(o.cardId,`${r}.cardId`,l.id,e),format:E(o.format,`${r}.format`,["csv","pdf","png"],e)},o.title,`${r}.title`,e);return A(a,o.settings,`${r}.settings`,e)}return c(e,`${r}.type`,"Expected dashboard, dashboard_sheet, document_sheet, visual, or card."),{type:"dashboard",dashboardId:"",format:"pdf"}}function be(n){switch(n.type){case"dashboard":return`${n.type}:${n.dashboardId}:${n.format}`;case"dashboard_sheet":case"document_sheet":return`${n.type}:${n.dashboardId}:${n.sheetId}:${n.format}`;case"visual":return`${n.type}:${n.dashboardId}:${n.visualId}:${n.format}`;case"card":return`${n.type}:${n.dashboardId}:${n.cardId}:${n.format}`}}function K(n,t){if(n==null)return[];if(!Array.isArray(n))return c(t,"attachments","Expected an array."),[];n.length>x&&c(t,"attachments",`Choose ${x} attachments or fewer.`);const e=n.slice(0,x).map((o,i)=>ve(o,i,t)),r=new Set;return e.forEach((o,i)=>{const a=be(o);r.has(a)&&c(t,`attachments.${i}`,"Duplicate attachment."),r.add(a)}),e}function G(n,t){if(n==null)return;const e=h(n,"limits",t);s(e,"limits",Object.keys(B),t);const r={};return Object.keys(B).forEach(o=>{const i=e[o];if(i==null)return;const a=B[o];if(typeof i!="number"||!Number.isInteger(i)||i<a.min||i>a.max){c(t,`limits.${o}`,`Expected an integer between ${a.min} and ${a.max}.`);return}r[o]=i}),Object.keys(r).length>0?r:void 0}function L(n){if(n.length>0)throw new C(n)}function U(n,t,e){n.type==="none"&&t.length===0&&c(e,"body","Add briefing instructions, a custom message, or at least one attachment.")}function R(n){const t=[],e=h(n,"jobConfig",t);s(e,"jobConfig",["kind","source","body","attachments","presentation","limits"],t),e.kind!==S&&c(t,"kind","Expected BRIEFING.");const r=M(e.source,t),o=P(e.body,t),i=K(e.attachments,t),a=j(e.presentation,t),d=G(e.limits,t);return U(o,i,t),L(t),{kind:S,source:r,body:o,attachments:i,presentation:a,...d?{limits:d}:{}}}function $e(n){return R({...n,kind:S})}function w(n,t,e,r="deliveryConfig.recipients"){const o=`${r}.${t}`,i=h(n,o,e),a=i.type;if(a==="email"){s(i,o,["type","address","name"],e);const d=u(i.address,`${o}.address`,l.id,e),m=y(i.name,`${o}.name`,l.attachmentTitle,e);return d&&!de(d)&&c(e,`${o}.address`,"Email address is invalid."),{type:"email",address:d,...m?{name:m}:{}}}return a==="user"?(s(i,o,["type","userId"],e),{type:"user",userId:u(i.userId,`${o}.userId`,l.id,e)}):a==="tenant_user"?(s(i,o,["type","tenantUserId"],e),{type:"tenant_user",tenantUserId:u(i.tenantUserId,`${o}.tenantUserId`,l.id,e)}):a==="group"?(s(i,o,["type","groupId"],e),{type:"group",groupId:u(i.groupId,`${o}.groupId`,l.id,e)}):(c(e,`${o}.type`,"Expected email, user, tenant_user, or group."),{type:"email",address:""})}function Ee(n,t){return n==null?[]:Array.isArray(n)?n.map((e,r)=>w(e,r,t)):(c(t,"deliveryConfig.recipients","Expected an array."),[])}function Ce(n,t){if(!Array.isArray(n))return c(t,"deliveryConfig.channels","Expected an array."),[];const e=[];return n.forEach((r,o)=>{if(!D(r)){c(t,`deliveryConfig.channels.${o}`,"Expected EMAIL, WEBHOOK, SLACK, IN_APP, or TELEGRAM.");return}e.includes(r)||e.push(r)}),e}function Te(n,t,e){if(n==null)return;const r=h(n,t,e),o={};return Object.entries(r).forEach(([i,a])=>{if(typeof a!="string"){c(e,`${t}.${i}`,"Expected a string.");return}o[i]=a.trim()}),Object.keys(o).length>0?o:void 0}function Ae(n,t,e){if(n==null)return;const r=h(n,t,e);s(r,t,["url","method","headers","secretEncrypted"],e);const o=r.method===void 0||r.method===null?void 0:E(r.method,`${t}.method`,["POST","PUT"],e),i=Te(r.headers,`${t}.headers`,e),a=y(r.secretEncrypted,`${t}.secretEncrypted`,2e3,e);return{url:u(r.url,`${t}.url`,2e3,e),...o?{method:o}:{},...i?{headers:i}:{},...a?{secretEncrypted:a}:{}}}function xe(n,t,e){const r=h(n,t,e),o=r.type;if(o==="channel"){s(r,t,["type","channelId","channelName","isPrivate"],e);const i=y(r.channelName,`${t}.channelName`,l.attachmentTitle,e),a=r.isPrivate===void 0||r.isPrivate===null?void 0:$(r.isPrivate,!1,`${t}.isPrivate`,e);return{type:"channel",channelId:u(r.channelId,`${t}.channelId`,l.id,e),...i?{channelName:i}:{},...a!==void 0?{isPrivate:a}:{}}}return o==="dm"?(s(r,t,["type","recipient"],e),c(e,`${t}.type`,"Slack DM delivery is not supported in V1."),{type:"dm",recipient:w(r.recipient,0,e,`${t}.recipient`)}):(c(e,`${t}.type`,"Expected channel."),{type:"channel",channelId:""})}function Se(n,t,e){if(n==null)return;if(!Array.isArray(n)){c(e,t,"Expected an array.");return}const r=n.map((o,i)=>w(o,i,e,t));return r.length>0?r:void 0}function ke(n,t,e){if(n==null)return;const r=h(n,t,e);s(r,t,["destination","threadMentions","postThreadDetail","includeDashboardLink","includeBriefingLink"],e);const o=Se(r.threadMentions,`${t}.threadMentions`,e),i=$(r.postThreadDetail,!0,`${t}.postThreadDetail`,e),a=$(r.includeDashboardLink,!0,`${t}.includeDashboardLink`,e),d=$(r.includeBriefingLink,!0,`${t}.includeBriefingLink`,e);return{destination:xe(r.destination,`${t}.destination`,e),...o?{threadMentions:o}:{},...r.postThreadDetail!==void 0?{postThreadDetail:i}:{},...r.includeDashboardLink!==void 0?{includeDashboardLink:a}:{},...r.includeBriefingLink!==void 0?{includeBriefingLink:d}:{}}}function _e(n,t,e){const r=h(n,t,e);s(r,t,["subjectOverride","titleOverride","summaryOverride","actionBlockVisible","formatProfile","slackConfig","webhookConfig"],e);const o=v(r.formatProfile,`${t}.formatProfile`,te,"concise, balanced, or detailed",e),i=y(r.subjectOverride,`${t}.subjectOverride`,500,e),a=y(r.titleOverride,`${t}.titleOverride`,500,e),d=y(r.summaryOverride,`${t}.summaryOverride`,2e3,e),m=$(r.actionBlockVisible,!0,`${t}.actionBlockVisible`,e),f=Ae(r.webhookConfig,`${t}.webhookConfig`,e),p=ke(r.slackConfig,`${t}.slackConfig`,e);return{...o?{formatProfile:o}:{},...i?{subjectOverride:i}:{},...a?{titleOverride:a}:{},...d?{summaryOverride:d}:{},...r.actionBlockVisible!==void 0?{actionBlockVisible:m}:{},...p?{slackConfig:p}:{},...f?{webhookConfig:f}:{}}}function Be(n,t){if(n==null)return;const e=h(n,"deliveryConfig.channelConfigs",t),r={};return Object.entries(e).forEach(([o,i])=>{if(!D(o)){c(t,`deliveryConfig.channelConfigs.${o}`,"Expected a supported delivery channel.");return}r[o]=_e(i,`deliveryConfig.channelConfigs.${o}`,t)}),Object.keys(r).length>0?r:void 0}function Le(n,t){var m,f,p;if(n==null)return null;const e=h(n,"deliveryConfig",t);s(e,"deliveryConfig",["recipients","channels","channelConfigs"],t);const r=Be(e.channelConfigs,t),o=Ee(e.recipients,t),i=Ce(e.channels,t),a=((f=(m=r==null?void 0:r.SLACK)==null?void 0:m.slackConfig)==null?void 0:f.destination.type)==="channel"&&!!r.SLACK.slackConfig.destination.channelId.trim();return i.some(I=>I!=="SLACK")&&o.length===0&&c(t,"deliveryConfig.recipients","Add at least one recipient or remove delivery config."),i.length===0&&c(t,"deliveryConfig.channels","Choose at least one delivery channel or remove delivery config."),i.includes("SLACK")&&!a&&c(t,"deliveryConfig.channelConfigs.SLACK.slackConfig.destination.channelId","Choose a Slack channel destination."),!i.includes("SLACK")&&((p=r==null?void 0:r.SLACK)!=null&&p.slackConfig)&&c(t,"deliveryConfig.channelConfigs.SLACK","Slack config requires SLACK in deliveryConfig.channels."),{recipients:o,channels:i,...r?{channelConfigs:r}:{}}}function _(n){const t=[],e=h(n,"draft",t);s(e,"draft",["name","description","status","scheduleExpr","timezone","source","body","attachments","presentation","limits","deliveryConfig"],t);const r=u(e.name,"name",l.name,t),o=y(e.description,"description",l.description,t)??null,i=y(e.scheduleExpr,"scheduleExpr",500,t)??null,a=y(e.timezone,"timezone",200,t)??"UTC",d=ce(e.status,t),m=M(e.source,t),f=P(e.body,t),p=K(e.attachments,t),I=j(e.presentation,t),F=G(e.limits,t),H=Le(e.deliveryConfig,t);return U(f,p,t),L(t),{name:r,description:o,status:d,scheduleExpr:i,timezone:a,source:m,body:f,attachments:p,presentation:I,...F?{limits:F}:{},deliveryConfig:H}}function Re(n){return _(n)}function we(n){return _(n)}function De(n){try{return{valid:!0,value:_(n),issues:[]}}catch(t){if(t instanceof C)return{valid:!1,issues:t.issues};throw t}}function Fe(n){try{return{valid:!0,value:R(n),issues:[]}}catch(t){if(t instanceof C)return{valid:!1,issues:t.issues};throw t}}function ze(n){return typeof n=="string"&&O.has(n)}function D(n){return typeof n=="string"&&W.has(n)}exports.BRIEFING_ARTIFACT_FORMATS=N;exports.BRIEFING_CONTENT_LIMITS=g;exports.BRIEFING_KIND=S;exports.BRIEFING_TEXT_LIMITS=l;exports.BriefingContractError=C;exports.DEFAULT_BRIEFING_ARTIFACT_FORMATS=k;exports.MAX_BRIEFING_ATTACHMENTS=x;exports.buildBriefingJobConfig=$e;exports.buildCreateBriefingRequest=Re;exports.buildUpdateBriefingRequest=we;exports.isBriefingArtifactFormat=ze;exports.isBriefingDeliveryChannel=D;exports.normalizeBriefingContentDocument=q;exports.normalizeBriefingDraft=_;exports.normalizeBriefingJobConfig=R;exports.validateBriefingContentDocument=ye;exports.validateBriefingDraft=De;exports.validateBriefingJobConfig=Fe;
|