chainlesschain 0.162.185 → 0.162.187
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/bin/chainlesschain.js +21 -5
- package/package.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-Co4ipAKx.js → AIOps-CETaO3s8.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BpsoDrDq.js → ActionButton-CAe7E9TW.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DMUqeBik.js → Analytics-BGr2mzwO.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-C6fD_dXr.js → AppLayout-BEoY-NcT.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-DW0YlQlV.js → Artifacts-DUZivCgt.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-DXtHiiFK.js → Audit-C3yBs68k.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-BgmF62U-.js → BackgroundAgents-C9KwiY3O.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-D8vhVLQC.js → Backup-BoSWD_C8.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-D7nCtY2X.js → BaseInput-Dp09GkxL.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CBZLEV2G.js → Chat-5t9d-Ja0.js} +4 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DmVku4GH.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DJLkeD4M.js → Checkbox-8QJFlkqI.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-Cs6xO8Fd.js → Codegen-BJVFQ3lL.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Dtx9wxfT.js → Col-6hdLD0oB.js} +1 -1
- package/src/assets/web-panel/assets/{Community-DiigJg4n.js → Community-B8opo0uY.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B67oMDDL.js → Compact-Dv8HudiN.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-BBDl-Jos.js → Compliance-DhxuCS5N.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Ba98hSsa.js → Cowork-Dggy6VIL.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-DBWQZIz7.js → Cron-DSmDqJTT.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-OcrKzxAt.js → Crosschain-7bZq0j5f.js} +1 -1
- package/src/assets/web-panel/assets/{DID-mW2eSbjM.js → DID-BWY4kh-H.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-BmsDPmKJ.js → Dashboard-bOzPZxlu.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CVzmCyRx.js → Dropdown-BTFJHqQu.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-vVgqKzhh.js → EmailListRenderer-BC3MOdtT.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CWY5t_ZJ.js → FamilyGuardDashboard-CFHAdTTY.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-ZGomhjxr.js → Federation-DZ_4aF_n.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DyaknbLr.js → FormItemContext-BZje6UTj.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-CmIvN1qr.js → GenericCardRenderer-D7QfCvjN.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DQOJIYkG.js → Git-DuG7qANG.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CMiY-EEp.js → Governance-BDmYAgTh.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-D6IXuucf.js → Inference-DSXAfc1Q.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-6jkTL0hV.js → KnowledgeGraph-DusleniP.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-N0jD-349.js → Logs-CpImmA8p.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BZ6LJBkk.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-WhYuhBxm.js → Marketplace-DXS8CXkE.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-DTeO28xy.js → McpTools-D151UfUI.js} +5 -5
- package/src/assets/web-panel/assets/{Memory-MSHzPSE-.js → Memory-DKDxnoA1.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-Cyqs3J3W.js → MobileBridge-BFZ95iKM.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-CDAR-grF.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-MWBnezNM.js → Mtc-OGJ95xJs.js} +5 -5
- package/src/assets/web-panel/assets/{MtcAudit-DQu35Nu-.js → MtcAudit-BmGTo1XC.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-CQS_M-DP.js → Multisig-XumJRqOa.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-WD16vQvY.js → NLProgramming-DHhhRZed.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-DqsiSwOq.js → Notes-B9rGxNNr.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-D3LoxO-P.js → NotificationSettings-DClLbMYV.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-C5jPoTd6.js → OrderTableRenderer-I8OohT7N.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-48aMBJso.js → Organization-M6WzaYVa.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-j-a2XkhR.js → Overflow-Cb3B5KtM.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-BYpBNYnh.js → P2P-BGk57kya.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-CYCsrrLg.js → PdhVaultBrowser-CXcKyPqK.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-ZRXGXDFb.js → Permissions-hsfJ-Y0e.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-6OWUPHyL.js → PersonalDataHub-BSBii4js.js} +5 -5
- package/src/assets/web-panel/assets/{Pipeline-FcjlDK9E.js → Pipeline-BNw52rey.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-vD_6Tldp.js → Privacy-DUpfue4E.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-B_CHOLXp.js → ProjectInit-C68NsP3h.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-rEiqQ2da.js → ProjectSettings-BJ2It9v4.js} +2 -2
- package/src/assets/web-panel/assets/Projects-D2FHLUa-.js +1 -0
- package/src/assets/web-panel/assets/{Providers-Dgtt97B4.js → Providers-EnU4VWwS.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DaGVylZO.js → QrScannerModal-BRt5-B_I.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-DP2_2x3u.js → QuickAsk-Jd5L9UL2.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-D29yj4ki.js → Recommend-BNDhoVIu.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-Ue2wnBLp.js → RemoteSession-BII41Mel.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-CrxIHqeC.js → Reputation-D1wQPUNv.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BgSzJPCn.js → Row-DnjRegul.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-AwhYOrP9.js → RssFeed-C_T4I-nF.js} +2 -2
- package/src/assets/web-panel/assets/{Search-D2shpEcm.js → Search-C4lrxlLh.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BtKzhTbT.js → Security-ByYT-VzP.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BY0DsUSm.js → Services-BHpyEqB5.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-B3Sb0UI9.js → Skeleton-C0I23vG-.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-Ne5w0bDs.js → Skills-DGZXz22K.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-C8VkaP4T.js → Sla-DL_urP9A.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BQdIEYP9.js → SpeechSettings-6x-hUNQ_.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CwFafrUg.js → SyncSettings-Crk5TCXq.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-yJuKoDlR.js → Tasks-rZGq5PZs.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DYn9qCmx.js → Templates-DT5el8Q8.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-DkKReHvn.js → Tenant-mlgeyMK8.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-r6bd-owt.js → Terminal-C8HEA-lM.js} +2 -2
- package/src/assets/web-panel/assets/TimelineRenderer-DvlqBayB.js +1 -0
- package/src/assets/web-panel/assets/{Tokens-BnMw7MRi.js → Tokens-C7lDcNmT.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CTzKp4o9.js → Trigger-CM8nCnIJ.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BBrSZm9U.js → Trust-BQDLUQ9x.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-D9fDvEMq.js → UkeySign-CVqM0OFE.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-DUi5ve-0.js → VideoEditing-BvAcQpzT.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-C8Fi1P8_.js → Wallet-zFVFaAZ2.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-s1LppYi2.js → WebAuthn-Cc522ums.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-DJL2C4lj.js → WorkflowEditor-Bg_wxpDo.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D3F2ndOB.js → chat-jg0QwC8K.js} +1 -1
- package/src/assets/web-panel/assets/{colors-B7739-e3.js → colors-ALzYz1gO.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CcJbFTF4.js → compact-item-DXHYUoqi.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CuP_DEFS.js → createContext-BsGsBM5m.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-Dy1GJA4S.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-6YEXfIik.js → hasIn-BccMLzxA.js} +1 -1
- package/src/assets/web-panel/assets/{index-fWgUQZ9d.js → index-08diKcTm.js} +1 -1
- package/src/assets/web-panel/assets/{index-CxradkS6.js → index-2VstcImq.js} +19 -19
- package/src/assets/web-panel/assets/index-8zbMbbuf.js +1 -0
- package/src/assets/web-panel/assets/{index-DDRlBaDt.js → index-BBbbr1YB.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dox44j29.js → index-BTTeAiOP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BYYSLEjn.js → index-BcJzphrP.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRuoRapN.js → index-BdCmJ_bG.js} +1 -1
- package/src/assets/web-panel/assets/{index-BxSqVMGh.js → index-BfF0OGKU.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6Ij_2uw.js → index-BfV8RDlg.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dsy7_x4s.js → index-BvsII10i.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsdSnHQE.js → index-C0AbXsDy.js} +1 -1
- package/src/assets/web-panel/assets/{index-mfWQRSLn.js → index-C3Rf8wIM.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIID4XcP.js → index-C3k3ZwkQ.js} +1 -1
- package/src/assets/web-panel/assets/index-C97f71oi.js +1 -0
- package/src/assets/web-panel/assets/{index-4h3lpWJ3.js → index-CBVIFX-x.js} +1 -1
- package/src/assets/web-panel/assets/{index-DHvxXXNA.js → index-CJg6Wsjc.js} +1 -1
- package/src/assets/web-panel/assets/{index-DjI9MkId.js → index-CLzPzN75.js} +1 -1
- package/src/assets/web-panel/assets/{index-D0zdPyTD.js → index-CQ1ORdp-.js} +1 -1
- package/src/assets/web-panel/assets/{index-D0K_rFC1.js → index-CSFESurl.js} +1 -1
- package/src/assets/web-panel/assets/{index-b9cuvFEv.js → index-CWLWBgfe.js} +1 -1
- package/src/assets/web-panel/assets/{index-Nz-MUHD1.js → index-CahDve8M.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXdnfDVK.js → index-Cg9cOVe9.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bh4hcNWW.js → index-Cmg_Npx5.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bru_kpZl.js → index-CrZHUsOZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-yOZYSNmG.js → index-Cz_s25m3.js} +1 -1
- package/src/assets/web-panel/assets/{index-DlSvpNMf.js → index-D9oV2iRR.js} +1 -1
- package/src/assets/web-panel/assets/{index-LfRlSmqe.js → index-DgjQ-kdT.js} +1 -1
- package/src/assets/web-panel/assets/{index-BOHUo3aM.js → index-Dmk7dD-T.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3haorUt.js → index-Dxqiu9-F.js} +1 -1
- package/src/assets/web-panel/assets/{index-DV11jpeO.js → index-JS2LXdd0.js} +1 -1
- package/src/assets/web-panel/assets/{index-CY0zd_jc.js → index-TeCof1s3.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpEKmjoa.js → index-UQXedWQz.js} +1 -1
- package/src/assets/web-panel/assets/{index-C3pctdCb.js → index-koT8Q86Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_75jYWk.js → index-mIQUoUx1.js} +1 -1
- package/src/assets/web-panel/assets/{index-Gxw09e9R.js → index-oWltafBn.js} +1 -1
- package/src/assets/web-panel/assets/{index-BhIKnQAW.js → index-rIy96PeM.js} +1 -1
- package/src/assets/web-panel/assets/{index-C3ZA_h1j.js → index-rcwgNMc0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DGsE7MQz.js → index-srqW5_-X.js} +1 -1
- package/src/assets/web-panel/assets/{index-eR6H6NR7.js → index-uzykuL_R.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CJ1Bq2L3.js → initDefaultProps-xafkqrW3.js} +1 -1
- package/src/assets/web-panel/assets/{motion-rYJN_vzf.js → motion-BrtyQXLk.js} +1 -1
- package/src/assets/web-panel/assets/{move-DnDK2gTP.js → move-BunUyg59.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-CKnXy7ES.js → mtc-parser-BPwjBeuE.js} +1 -1
- package/src/assets/web-panel/assets/{omit-3nRc3hWT.js → omit-BpyqZlNO.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-Ddjj3sLu.js → pickAttrs-DDrV0XjE.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-CbsbphQY.js → placementArrow-1A18Pcl2.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D9aZ4VDJ.js → responsiveObserve-B8Fnlmso.js} +1 -1
- package/src/assets/web-panel/assets/{slide-D4pvdFj0.js → slide-x-Fwb2Zm.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-C2W-vY-S.js → statusUtils-aAG5yJl_.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cbq5150d.js → styleChecker-BRQSTMRL.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BA2B7R82.js → useFlexGapSupport-D5X_KozY.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CLrwg3xg.js → useFs-DN_YIjP-.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DQeAI5qs.js → usePersonalDataHub-BizxAvjw.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-8BDGy-YU.js → vnode-B5oAxN93.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-B2SzFprl.js → zoom-DJhvyzKv.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/eval.js +7 -0
- package/src/commands/status.js +55 -0
- package/src/commands/team.js +1805 -448
- package/src/data/changelog.json +26 -0
- package/src/harness/worktree-isolator.js +671 -79
- package/src/lazy-dispatch.js +12 -1
- package/src/lib/agent-team/task-lease.js +378 -78
- package/src/lib/agent-team/team-agent-stream.js +488 -0
- package/src/lib/agent-team/team-budget.js +216 -20
- package/src/lib/agent-team/team-mailbox.js +389 -15
- package/src/lib/agent-team/team-run-state-lock.js +209 -0
- package/src/lib/agent-team/team-runner.js +547 -63
- package/src/lib/agent-team/team-scope-lock.js +409 -0
- package/src/lib/agent-team/team-task-contract.js +277 -0
- package/src/lib/agent-team/team-worktree.js +1171 -62
- package/src/lib/agent-worktree.js +19 -20
- package/src/lib/collaboration-run-store.js +983 -68
- package/src/lib/observability/index.js +191 -19
- package/src/lib/observability/otlp-exporter.js +1209 -207
- package/src/lib/otlp-exporter.js +8 -36
- package/src/lib/with-file-lock.js +190 -24
- package/src/lib/worktree-isolator.js +3 -0
- package/src/lib/worktree-sparse.js +23 -0
- package/src/program-base.js +9 -2
- package/src/runtime/headless-runner.js +45 -21
- package/src/runtime/headless-stream.js +6 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-CtDb-2Qu.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-BL1IVXm-.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-7IN2hWHg.js +0 -1
- package/src/assets/web-panel/assets/Projects-Bg8obRAM.js +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-Mq2juUC3.js +0 -1
- package/src/assets/web-panel/assets/devWarning-Cj_36GHq.js +0 -1
- package/src/assets/web-panel/assets/index-CezFrAmD.js +0 -1
- package/src/assets/web-panel/assets/index-Cxgguez6.js +0 -1
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Process-level observability runtime.
|
|
3
|
+
*
|
|
4
|
+
* It bridges the existing W3C TraceContext / MetricsCollector and the
|
|
5
|
+
* TelemetryRecorder used by agent, eval and team runs into one standard OTLP
|
|
6
|
+
* Collector exporter. Collector export is opt-in and content remains absent
|
|
7
|
+
* unless the caller explicitly enabled the existing `--otlp-content` switch.
|
|
4
8
|
*/
|
|
5
9
|
|
|
6
10
|
import {
|
|
@@ -11,25 +15,193 @@ import {
|
|
|
11
15
|
metricsCollector,
|
|
12
16
|
MetricsCollector,
|
|
13
17
|
} from "../execution-trace/metrics-collector.js";
|
|
18
|
+
import { OtlpExporter, resolveOtlpConfig } from "./otlp-exporter.js";
|
|
14
19
|
|
|
15
|
-
export {
|
|
20
|
+
export {
|
|
21
|
+
traceContext,
|
|
22
|
+
TraceContext,
|
|
23
|
+
metricsCollector,
|
|
24
|
+
MetricsCollector,
|
|
25
|
+
OtlpExporter,
|
|
26
|
+
resolveOtlpConfig,
|
|
27
|
+
};
|
|
16
28
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
function collectedMetrics(collector) {
|
|
30
|
+
const raw = collector?.collect?.();
|
|
31
|
+
const source = raw?.resourceMetrics?.[0]?.scopeMetrics?.[0]?.metrics || [];
|
|
32
|
+
return source.map((metric) => {
|
|
33
|
+
if (metric.type === "counter") {
|
|
34
|
+
return {
|
|
35
|
+
name: metric.name,
|
|
36
|
+
type: "sum",
|
|
37
|
+
value: metric.value,
|
|
38
|
+
attributes: metric.labels,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (metric.type === "histogram") {
|
|
42
|
+
return {
|
|
43
|
+
name: metric.name,
|
|
44
|
+
type: "histogram",
|
|
45
|
+
count: metric.count,
|
|
46
|
+
sum: metric.sum,
|
|
47
|
+
attributes: metric.labels,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
name: metric.name,
|
|
52
|
+
type: "gauge",
|
|
53
|
+
value: metric.value,
|
|
54
|
+
attributes: metric.labels,
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export class ObservabilityRuntime {
|
|
60
|
+
constructor(options = {}, deps = {}) {
|
|
61
|
+
this.traceContext = deps.traceContext || traceContext;
|
|
62
|
+
this.metricsCollector = deps.metricsCollector || metricsCollector;
|
|
63
|
+
this.exporter =
|
|
64
|
+
deps.exporter ||
|
|
65
|
+
new OtlpExporter(
|
|
66
|
+
{
|
|
67
|
+
...options,
|
|
68
|
+
config:
|
|
69
|
+
options.config ||
|
|
70
|
+
resolveOtlpConfig(options, deps.env || process.env, deps),
|
|
71
|
+
},
|
|
72
|
+
deps,
|
|
73
|
+
);
|
|
74
|
+
this._closed = false;
|
|
75
|
+
this._onSpanEnd = (span) => this.exporter.exportSpans([span]);
|
|
76
|
+
if (this.exporter.enabled) {
|
|
77
|
+
this.traceContext.on("span:end", this._onSpanEnd);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
get enabled() {
|
|
82
|
+
return this.exporter.enabled && !this._closed;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
exportRecorder(recorder, { redact = true } = {}) {
|
|
86
|
+
if (!this.enabled || !recorder?.toOtlp) return false;
|
|
87
|
+
return this.exporter.exportTracePayload(recorder.toOtlp({ redact }), {
|
|
88
|
+
redact,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
exportTeamSummary({ workflowRunId, workflowName, summary, budget } = {}) {
|
|
93
|
+
if (!this.enabled) return false;
|
|
94
|
+
const attributes = {
|
|
95
|
+
"workflow.run_id": workflowRunId || "unknown",
|
|
96
|
+
"workflow.name": workflowName || "team",
|
|
97
|
+
};
|
|
98
|
+
const stats = summary?.stats || {};
|
|
99
|
+
const budgetStatus = budget?.status?.() || budget || {};
|
|
100
|
+
return this.exporter.exportMetrics([
|
|
101
|
+
{
|
|
102
|
+
name: "chainlesschain.team.tasks",
|
|
103
|
+
type: "gauge",
|
|
104
|
+
unit: "{task}",
|
|
105
|
+
value: Number(budgetStatus.tasks ?? summary?.executions) || 0,
|
|
106
|
+
attributes,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "chainlesschain.team.tokens",
|
|
110
|
+
type: "gauge",
|
|
111
|
+
unit: "{token}",
|
|
112
|
+
value: Number(budgetStatus.tokens) || 0,
|
|
113
|
+
attributes,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "chainlesschain.team.cost",
|
|
117
|
+
type: "gauge",
|
|
118
|
+
unit: "USD",
|
|
119
|
+
value: Number(budgetStatus.spentUsd) || 0,
|
|
120
|
+
attributes,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "chainlesschain.team.failures",
|
|
124
|
+
type: "gauge",
|
|
125
|
+
unit: "{failure}",
|
|
126
|
+
value: Number(stats.failed) || 0,
|
|
127
|
+
attributes,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "chainlesschain.team.completed",
|
|
131
|
+
type: "gauge",
|
|
132
|
+
unit: "{task}",
|
|
133
|
+
value: Number(stats.completed) || 0,
|
|
134
|
+
attributes,
|
|
135
|
+
},
|
|
136
|
+
]);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
captureMetrics() {
|
|
140
|
+
if (!this.enabled) return false;
|
|
141
|
+
const metrics = collectedMetrics(this.metricsCollector);
|
|
142
|
+
return metrics.length > 0 ? this.exporter.exportMetrics(metrics) : false;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async shutdown(options = {}) {
|
|
146
|
+
if (this._closed) return this.exporter.getStats();
|
|
147
|
+
this.traceContext.off("span:end", this._onSpanEnd);
|
|
148
|
+
this.captureMetrics();
|
|
149
|
+
const stats = await this.exporter.shutdown(options);
|
|
150
|
+
this._closed = true;
|
|
151
|
+
return stats;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
getStats() {
|
|
155
|
+
return this.exporter.getStats();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
let defaultRuntime = null;
|
|
160
|
+
|
|
161
|
+
export function resolveOtlpEndpointFromArgv(argv = process.argv) {
|
|
162
|
+
const args = Array.isArray(argv) ? argv.slice(2) : [];
|
|
163
|
+
for (let index = 0; index < args.length; index++) {
|
|
164
|
+
const token = args[index];
|
|
165
|
+
if (token === "--otlp-endpoint") return args[index + 1] || null;
|
|
166
|
+
if (token.startsWith("--otlp-endpoint=")) {
|
|
167
|
+
return token.slice("--otlp-endpoint=".length) || null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export function initObservability(options = {}, deps = {}) {
|
|
174
|
+
if (defaultRuntime && !defaultRuntime._closed) return defaultRuntime;
|
|
175
|
+
defaultRuntime = new ObservabilityRuntime(options, deps);
|
|
176
|
+
return defaultRuntime;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export function getObservabilityRuntime() {
|
|
180
|
+
return defaultRuntime;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export function isOtlpCollectorEnabled() {
|
|
184
|
+
return defaultRuntime?.enabled === true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function exportTelemetryRecorder(recorder, options) {
|
|
188
|
+
return defaultRuntime?.exportRecorder(recorder, options) || false;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export function exportTeamTelemetry(summary) {
|
|
192
|
+
return defaultRuntime?.exportTeamSummary(summary) || false;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export async function shutdownObservability(options) {
|
|
196
|
+
return defaultRuntime?.shutdown(options);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** Test-only lifecycle seam; avoids state leaking across module-level tests. */
|
|
200
|
+
export async function resetObservabilityForTests() {
|
|
201
|
+
if (defaultRuntime && !defaultRuntime._closed) {
|
|
202
|
+
await defaultRuntime.shutdown({ timeoutMs: 0 });
|
|
203
|
+
}
|
|
204
|
+
defaultRuntime = null;
|
|
33
205
|
}
|
|
34
206
|
|
|
35
207
|
export * from "../execution-trace/index.js";
|