openwork-server 0.18.57 → 0.18.59
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/opencode-plugin-deps-1.18.30.tgz +0 -0
- package/dist/opencode-plugins/drive-file-tools.js +62 -0
- package/dist/opencode-plugins/managed-policy-next.js +18 -1
- package/dist/opencode-plugins/opencode-stop-fence-client.js +6 -0
- package/dist/opencode-plugins/openwork-agent-permissions-v2.js +14177 -0
- package/dist/opencode-plugins/openwork-capabilities-knowledge.js +197 -5
- package/dist/opencode-plugins/openwork-chrome-devtools.js +5 -5
- package/dist/opencode-plugins/openwork-cloud-skills-v2.js +222 -0
- package/dist/opencode-plugins/openwork-codemode-discovery-v2.js +60 -0
- package/dist/opencode-plugins/openwork-context-v2.js +13868 -1
- package/dist/opencode-plugins/openwork-extensions-preview-steering.js +1 -1
- package/dist/opencode-plugins/openwork-extensions-preview.js +195 -49
- package/dist/opencode-plugins/openwork-gateway-quota-v2.js +55 -24
- package/dist/opencode-plugins/openwork-gateway-quota.js +31 -18
- package/dist/opencode-plugins/openwork-mcp-readiness-v2.js +192 -0
- package/dist/opencode-plugins/openwork-mcp-results-v2.js +10836 -13
- package/dist/opencode-plugins/openwork-office-attachments.js +1 -1
- package/dist/opencode-plugins/openwork-provider-filters-v2.js +5 -7
- package/dist/opencode-plugins/openwork-provider-sync-v2.js +3880 -0
- package/dist/opencode-plugins/openwork-spreadsheets.js +1 -1
- package/dist/opencode-plugins/openwork-title-recovery.js +18 -6
- package/dist/opencode-plugins/openwork-ui-bridge.js +5 -2
- package/dist/opencode-plugins/workspace-file-destinations.js +136 -0
- package/dist/openwork-server.mjs +7794 -2938
- package/package.json +1 -1
- package/web/assets/{abnfDiagram-VCTEODGH-Dv8KxM1F.js → abnfDiagram-VCTEODGH-DwrIJf48.js} +1 -1
- package/web/assets/app-CHfH2zRH.css +32 -0
- package/web/assets/{app-E_RdTPah.js → app-wI0raXAn.js} +487 -435
- package/web/assets/{arc-_WbfJV_K.js → arc-ZosP3oxH.js} +1 -1
- package/web/assets/{architectureDiagram-5GKGNRK7-CckpRlSR.js → architectureDiagram-5GKGNRK7-DJ7WZh-0.js} +1 -1
- package/web/assets/{artifact-code-view-BbU019Q_.js → artifact-code-view-C_Qx94_t.js} +1 -1
- package/web/assets/{artifact-spreadsheet-editor-B3q9ZZoB.js → artifact-spreadsheet-editor-dniMTtEq.js} +1 -1
- package/web/assets/{artifact-text-editor-CA2Dgulr.js → artifact-text-editor-CRcxx-eZ.js} +1 -1
- package/web/assets/{blockDiagram-OSKFZWR5-BKdntEom.js → blockDiagram-OSKFZWR5-BRRMYQEs.js} +1 -1
- package/web/assets/{c4Diagram-7LVT6UL2-BJLyhqO1.js → c4Diagram-7LVT6UL2-gOHlDk2i.js} +1 -1
- package/web/assets/channel-CGPaVydu.js +1 -0
- package/web/assets/{chunk-2Q5K7J3B-D88ZIDGU.js → chunk-2Q5K7J3B-ndvUlkwq.js} +1 -1
- package/web/assets/{chunk-5VM5RSS4-DebGr6SE.js → chunk-5VM5RSS4-BFRve9Ox.js} +1 -1
- package/web/assets/{chunk-F27PBJKO-ChkVnT1d.js → chunk-F27PBJKO-CD-z5ZbY.js} +1 -1
- package/web/assets/{chunk-HLEWEB6X-ER6ZF6Pd.js → chunk-HLEWEB6X-CoWYhcUt.js} +1 -1
- package/web/assets/{chunk-JWPE2WC7-CQw0tJnK.js → chunk-JWPE2WC7-CsOREOhy.js} +1 -1
- package/web/assets/{chunk-POPQ4Y6H-Dm94DEFc.js → chunk-POPQ4Y6H-BPOdruz2.js} +1 -1
- package/web/assets/{chunk-SVP7TREG-rzCKlvNW.js → chunk-SVP7TREG-B7QwRO46.js} +1 -1
- package/web/assets/{chunk-XXDRQBXY-BcXExR9z.js → chunk-XXDRQBXY-DZp-LfVy.js} +1 -1
- package/web/assets/{chunk-ZLD2IHE6-CRtSpyr1.js → chunk-ZLD2IHE6-Bo9EgwIQ.js} +1 -1
- package/web/assets/classDiagram-CYGNFDIV-Bsii9q3h.js +1 -0
- package/web/assets/classDiagram-v2-TLXNO2FR-Bsii9q3h.js +1 -0
- package/web/assets/{cose-bilkent-JH36ORCC-1inJ0kKP.js → cose-bilkent-JH36ORCC-H7EUgT4k.js} +1 -1
- package/web/assets/{cynefin-OW5HDTMX-BAEIfHgW.js → cynefin-OW5HDTMX-r1tJgDH9.js} +1 -1
- package/web/assets/{cynefinDiagram-5FMLGOSQ-Dw_qVKID.js → cynefinDiagram-5FMLGOSQ-Cq4Pjmmj.js} +1 -1
- package/web/assets/{dagre-OS7QT2EB-BXAAz87u.js → dagre-OS7QT2EB-Bh2GFhAP.js} +1 -1
- package/web/assets/{diagram-S7CK7UJ4-BQt6gteN.js → diagram-S7CK7UJ4-BZNr_IG6.js} +1 -1
- package/web/assets/{diagram-UQ7AKVKN-Dh7vrHwF.js → diagram-UQ7AKVKN-BgaDOS70.js} +1 -1
- package/web/assets/{diagram-VSXAHHWV-D2kNxmUp.js → diagram-VSXAHHWV-DjUt-msp.js} +1 -1
- package/web/assets/{diagram-VX7I27RA-CctQDix_.js → diagram-VX7I27RA-BI3GsO3i.js} +1 -1
- package/web/assets/{diagram-Z3DM3KII-CDGlIVG5.js → diagram-Z3DM3KII-BLqI9pS_.js} +1 -1
- package/web/assets/{ebnfDiagram-PWID7BFC-0bgAb7z3.js → ebnfDiagram-PWID7BFC-D_CdQ2MS.js} +1 -1
- package/web/assets/{erDiagram-2YWLMYGG-Dbur-iWa.js → erDiagram-2YWLMYGG-C1SWDIhQ.js} +1 -1
- package/web/assets/{flowDiagram-T62WH6J4-Cw6AeymU.js → flowDiagram-T62WH6J4-BfXQV4xP.js} +1 -1
- package/web/assets/{ganttDiagram-EL5Y4UJY-BXYwFWOW.js → ganttDiagram-EL5Y4UJY-Bk-epoGY.js} +1 -1
- package/web/assets/{gitGraphDiagram-WWUBYQGX-De6ZCLNz.js → gitGraphDiagram-WWUBYQGX-O1ARqYlP.js} +1 -1
- package/web/assets/{infoDiagram-FKFFQAWI-B11KM4en.js → infoDiagram-FKFFQAWI-WZNXnPS1.js} +1 -1
- package/web/assets/{ishikawaDiagram-5VMMS53U-kGPWhBux.js → ishikawaDiagram-5VMMS53U-B8j8HgqU.js} +1 -1
- package/web/assets/{journeyDiagram-EYS64GPL-K8Wtegvp.js → journeyDiagram-EYS64GPL-dd2d-my9.js} +1 -1
- package/web/assets/{kanban-definition-UXKFOSKX-CjtX_cLJ.js → kanban-definition-UXKFOSKX-B6HfzCjr.js} +1 -1
- package/web/assets/{layout-Cn0uoRC-.js → layout-CjAP8jGd.js} +1 -1
- package/web/assets/{linear-WTNza7Ko.js → linear-DmcE_jj7.js} +1 -1
- package/web/assets/{mermaid.core-CbBVVRTZ.js → mermaid.core-DByIm3Os.js} +6 -6
- package/web/assets/{mindmap-definition-THT77NOG-DjyO1aA-.js → mindmap-definition-THT77NOG-CJdJrkzY.js} +1 -1
- package/web/assets/{pegDiagram-XKGWAZYB-ChPXU87n.js → pegDiagram-XKGWAZYB-DMKRyZmT.js} +1 -1
- package/web/assets/{pieDiagram-E7YTZNPT-bPQtXz_p.js → pieDiagram-E7YTZNPT-C0b_9HGX.js} +1 -1
- package/web/assets/{quadrantDiagram-AXDQQJYC-DokQ5FGV.js → quadrantDiagram-AXDQQJYC-BqkbJG9P.js} +1 -1
- package/web/assets/{railroadDiagram-O6MQD6OU-CcdqGxuL.js → railroadDiagram-O6MQD6OU-DXXz-as-.js} +1 -1
- package/web/assets/{requirementDiagram-IS5BZ75X-CGMF9hMZ.js → requirementDiagram-IS5BZ75X-DXkMFIBa.js} +1 -1
- package/web/assets/{sankeyDiagram-P5KCCOFB-fc-d15bH.js → sankeyDiagram-P5KCCOFB-CzXdocFr.js} +1 -1
- package/web/assets/{sequenceDiagram-WJ2MYXX4-DAmsOR8u.js → sequenceDiagram-WJ2MYXX4-aJBXn8VU.js} +1 -1
- package/web/assets/{sizeCapture-INFHLROL-6o7CY1B-.js → sizeCapture-INFHLROL-jgtrjDHs.js} +1 -1
- package/web/assets/{stateDiagram-XQSTLZYL-En5t4mkI.js → stateDiagram-XQSTLZYL-DrWWKXiY.js} +1 -1
- package/web/assets/stateDiagram-v2-IH3M54BS-D2cYASvR.js +1 -0
- package/web/assets/{swimlanes-V6O3JKXN-COBv2NoI.js → swimlanes-V6O3JKXN-D8Ewz1mj.js} +1 -1
- package/web/assets/swimlanesDiagram-JKAHXJPX-B9WLoHr4.js +8 -0
- package/web/assets/{timeline-definition-24CTP7MA-Qb-aTtSE.js → timeline-definition-24CTP7MA-B25naqcG.js} +1 -1
- package/web/assets/{vennDiagram-4TSXK5OY-Br3-0Ze-.js → vennDiagram-4TSXK5OY-3lHwPwrc.js} +1 -1
- package/web/assets/{wardleyDiagram-VM6X3IG4-BCeY3AKL.js → wardleyDiagram-VM6X3IG4-RGq5f_bX.js} +1 -1
- package/web/assets/{workspace-file-tree-CYzKM8q4.js → workspace-file-tree-Dt4_4AuL.js} +1 -1
- package/web/assets/{xychartDiagram-S5SC5T6Z-Bz96OPKc.js → xychartDiagram-S5SC5T6Z-DysrZCDk.js} +1 -1
- package/web/ext-microsoft-365.svg +1 -0
- package/web/index.html +2 -2
- package/dist/opencode-plugins/workspace-file-identity.js +0 -162
- package/web/assets/app-B682snBU.css +0 -32
- package/web/assets/channel-BZvy6aHa.js +0 -1
- package/web/assets/classDiagram-CYGNFDIV-DBAMzIwS.js +0 -1
- package/web/assets/classDiagram-v2-TLXNO2FR-DBAMzIwS.js +0 -1
- package/web/assets/katex-HP8lGamR.js +0 -257
- package/web/assets/stateDiagram-v2-IH3M54BS-DvIXHm_9.js +0 -1
- package/web/assets/swimlanesDiagram-JKAHXJPX-CorMSufQ.js +0 -8
|
@@ -13591,6 +13591,7 @@ function gatewayUsdToMicroUsd(value) {
|
|
|
13591
13591
|
}
|
|
13592
13592
|
var gatewayUsagePolicyWriteSchema = exports_external.object({
|
|
13593
13593
|
name: exports_external.string().trim().min(1).max(120),
|
|
13594
|
+
providerId: exports_external.string().min(1).max(64).nullable().optional(),
|
|
13594
13595
|
hardLimit: exports_external.boolean().default(true),
|
|
13595
13596
|
allowRequestReset: exports_external.boolean().default(true),
|
|
13596
13597
|
limits: exports_external.array(exports_external.object({
|
|
@@ -13635,6 +13636,7 @@ var gatewayUsageLimitPolicySchema = exports_external.object({
|
|
|
13635
13636
|
hardLimit: exports_external.boolean(),
|
|
13636
13637
|
allowRequestReset: exports_external.boolean(),
|
|
13637
13638
|
revision: exports_external.number().int(),
|
|
13639
|
+
providerId: exports_external.string().nullable().optional(),
|
|
13638
13640
|
limits: exports_external.array(exports_external.object({ timeframe: gatewayUsageTimeframeSchema, costLimitMicroUsd: moneySchema })),
|
|
13639
13641
|
assignments: exports_external.array(exports_external.object({
|
|
13640
13642
|
id: exports_external.string(),
|
|
@@ -13644,6 +13646,31 @@ var gatewayUsageLimitPolicySchema = exports_external.object({
|
|
|
13644
13646
|
})),
|
|
13645
13647
|
archivedAt: exports_external.iso.datetime().nullable().optional()
|
|
13646
13648
|
});
|
|
13649
|
+
var gatewayUsageBucketSchema = exports_external.object({
|
|
13650
|
+
id: exports_external.string(),
|
|
13651
|
+
timeframe: gatewayUsageTimeframeSchema,
|
|
13652
|
+
policyId: exports_external.string(),
|
|
13653
|
+
policyName: exports_external.string(),
|
|
13654
|
+
policyRevision: exports_external.number().int().positive().optional(),
|
|
13655
|
+
provenance: exports_external.array(gatewayUsageProvenanceSchema).optional(),
|
|
13656
|
+
baseAllowanceMicroUsd: moneySchema,
|
|
13657
|
+
extensionMicroUsd: moneySchema,
|
|
13658
|
+
allowanceMicroUsd: moneySchema,
|
|
13659
|
+
usedMicroUsd: moneySchema,
|
|
13660
|
+
remainingMicroUsd: exports_external.number().int().min(-Number.MAX_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER),
|
|
13661
|
+
resetAt: exports_external.iso.datetime(),
|
|
13662
|
+
hardLimit: exports_external.boolean(),
|
|
13663
|
+
allowRequestReset: exports_external.boolean(),
|
|
13664
|
+
canRequestReset: exports_external.boolean(),
|
|
13665
|
+
resetRequestStatus: exports_external.enum(["pending", "approved", "denied", "expired"]).nullable(),
|
|
13666
|
+
providerId: exports_external.string().nullable().optional()
|
|
13667
|
+
});
|
|
13668
|
+
var gatewayProviderUsageSchema = exports_external.object({
|
|
13669
|
+
providerId: exports_external.string().min(1),
|
|
13670
|
+
providerName: exports_external.string(),
|
|
13671
|
+
state: exports_external.enum(["within_limit", "over_limit", "blocked"]),
|
|
13672
|
+
buckets: exports_external.array(gatewayUsageBucketSchema)
|
|
13673
|
+
});
|
|
13647
13674
|
var gatewayUsageStatusSchema = exports_external.object({
|
|
13648
13675
|
serverTime: exports_external.iso.datetime(),
|
|
13649
13676
|
organizationId: exports_external.string(),
|
|
@@ -13664,24 +13691,8 @@ var gatewayUsageStatusSchema = exports_external.object({
|
|
|
13664
13691
|
lastSettlementRequestId: exports_external.string().nullable().optional(),
|
|
13665
13692
|
settlementReady: exports_external.boolean().optional()
|
|
13666
13693
|
}),
|
|
13667
|
-
buckets: exports_external.array(
|
|
13668
|
-
|
|
13669
|
-
timeframe: gatewayUsageTimeframeSchema,
|
|
13670
|
-
policyId: exports_external.string(),
|
|
13671
|
-
policyName: exports_external.string(),
|
|
13672
|
-
policyRevision: exports_external.number().int().positive().optional(),
|
|
13673
|
-
provenance: exports_external.array(gatewayUsageProvenanceSchema).optional(),
|
|
13674
|
-
baseAllowanceMicroUsd: moneySchema,
|
|
13675
|
-
extensionMicroUsd: moneySchema,
|
|
13676
|
-
allowanceMicroUsd: moneySchema,
|
|
13677
|
-
usedMicroUsd: moneySchema,
|
|
13678
|
-
remainingMicroUsd: exports_external.number().int().min(-Number.MAX_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER),
|
|
13679
|
-
resetAt: exports_external.iso.datetime(),
|
|
13680
|
-
hardLimit: exports_external.boolean(),
|
|
13681
|
-
allowRequestReset: exports_external.boolean(),
|
|
13682
|
-
canRequestReset: exports_external.boolean(),
|
|
13683
|
-
resetRequestStatus: exports_external.enum(["pending", "approved", "denied", "expired"]).nullable()
|
|
13684
|
-
}))
|
|
13694
|
+
buckets: exports_external.array(gatewayUsageBucketSchema),
|
|
13695
|
+
providers: exports_external.array(gatewayProviderUsageSchema).optional()
|
|
13685
13696
|
});
|
|
13686
13697
|
var gatewayUsageResetRequestSchema = exports_external.object({
|
|
13687
13698
|
id: exports_external.string(),
|
|
@@ -13691,6 +13702,8 @@ var gatewayUsageResetRequestSchema = exports_external.object({
|
|
|
13691
13702
|
bucketId: exports_external.string(),
|
|
13692
13703
|
timeframe: gatewayUsageTimeframeSchema,
|
|
13693
13704
|
policyName: exports_external.string(),
|
|
13705
|
+
providerId: exports_external.string().nullable().optional(),
|
|
13706
|
+
providerName: exports_external.string().nullable().optional(),
|
|
13694
13707
|
reason: exports_external.string(),
|
|
13695
13708
|
status: exports_external.enum(["pending", "approved", "denied", "expired"]),
|
|
13696
13709
|
createdAt: exports_external.iso.datetime(),
|
|
@@ -13787,6 +13800,14 @@ async function isGatewayQuotaResponse(base, url2, response) {
|
|
|
13787
13800
|
}
|
|
13788
13801
|
|
|
13789
13802
|
// src/opencode-plugins/openwork-gateway-quota-v2.ts
|
|
13803
|
+
async function preventQuotaRetry(event, base) {
|
|
13804
|
+
if (!await isGatewayQuotaResponse(base, new URL(event.request.url), event.response))
|
|
13805
|
+
return;
|
|
13806
|
+
const response = event.response;
|
|
13807
|
+
const headers = new Headers(response.headers);
|
|
13808
|
+
headers.set("x-should-retry", "false");
|
|
13809
|
+
event.response = new Response(response.body, { status: response.status, statusText: response.statusText, headers });
|
|
13810
|
+
}
|
|
13790
13811
|
var openwork_gateway_quota_v2_default = {
|
|
13791
13812
|
id: "openwork.gateway-quota",
|
|
13792
13813
|
setup: async (context) => {
|
|
@@ -13797,14 +13818,24 @@ var openwork_gateway_quota_v2_default = {
|
|
|
13797
13818
|
if (!base)
|
|
13798
13819
|
continue;
|
|
13799
13820
|
registrations.push(await context.session.hook("http.response", async (event) => {
|
|
13800
|
-
if (event.model.providerID
|
|
13801
|
-
|
|
13802
|
-
const response = event.response;
|
|
13803
|
-
const headers = new Headers(response.headers);
|
|
13804
|
-
headers.set("x-should-retry", "false");
|
|
13805
|
-
event.response = new Response(response.body, { status: response.status, statusText: response.statusText, headers });
|
|
13821
|
+
if (event.model.providerID === id)
|
|
13822
|
+
await preventQuotaRetry(event, base);
|
|
13806
13823
|
}, { providerID: id }));
|
|
13807
13824
|
}
|
|
13825
|
+
if (context.options.liveProviders === true && context.provider) {
|
|
13826
|
+
const provider = context.provider;
|
|
13827
|
+
registrations.push(await context.session.hook("http.response", async (event) => {
|
|
13828
|
+
const id = event.model.providerID;
|
|
13829
|
+
if (!/^ipr_[a-z0-9]+$/.test(id) || Object.hasOwn(providers, id))
|
|
13830
|
+
return;
|
|
13831
|
+
const current = await provider.get({ providerID: id }).catch(() => {
|
|
13832
|
+
return;
|
|
13833
|
+
});
|
|
13834
|
+
const base = gatewayBase(id, current?.settings?.baseURL);
|
|
13835
|
+
if (base)
|
|
13836
|
+
await preventQuotaRetry(event, base);
|
|
13837
|
+
}));
|
|
13838
|
+
}
|
|
13808
13839
|
return async () => {
|
|
13809
13840
|
for (const registration of registrations)
|
|
13810
13841
|
await registration.dispose();
|
|
@@ -13905,6 +13905,7 @@ function gatewayUsdToMicroUsd(value) {
|
|
|
13905
13905
|
}
|
|
13906
13906
|
var gatewayUsagePolicyWriteSchema = exports_external.object({
|
|
13907
13907
|
name: exports_external.string().trim().min(1).max(120),
|
|
13908
|
+
providerId: exports_external.string().min(1).max(64).nullable().optional(),
|
|
13908
13909
|
hardLimit: exports_external.boolean().default(true),
|
|
13909
13910
|
allowRequestReset: exports_external.boolean().default(true),
|
|
13910
13911
|
limits: exports_external.array(exports_external.object({
|
|
@@ -13949,6 +13950,7 @@ var gatewayUsageLimitPolicySchema = exports_external.object({
|
|
|
13949
13950
|
hardLimit: exports_external.boolean(),
|
|
13950
13951
|
allowRequestReset: exports_external.boolean(),
|
|
13951
13952
|
revision: exports_external.number().int(),
|
|
13953
|
+
providerId: exports_external.string().nullable().optional(),
|
|
13952
13954
|
limits: exports_external.array(exports_external.object({ timeframe: gatewayUsageTimeframeSchema, costLimitMicroUsd: moneySchema })),
|
|
13953
13955
|
assignments: exports_external.array(exports_external.object({
|
|
13954
13956
|
id: exports_external.string(),
|
|
@@ -13958,6 +13960,31 @@ var gatewayUsageLimitPolicySchema = exports_external.object({
|
|
|
13958
13960
|
})),
|
|
13959
13961
|
archivedAt: exports_external.iso.datetime().nullable().optional()
|
|
13960
13962
|
});
|
|
13963
|
+
var gatewayUsageBucketSchema = exports_external.object({
|
|
13964
|
+
id: exports_external.string(),
|
|
13965
|
+
timeframe: gatewayUsageTimeframeSchema,
|
|
13966
|
+
policyId: exports_external.string(),
|
|
13967
|
+
policyName: exports_external.string(),
|
|
13968
|
+
policyRevision: exports_external.number().int().positive().optional(),
|
|
13969
|
+
provenance: exports_external.array(gatewayUsageProvenanceSchema).optional(),
|
|
13970
|
+
baseAllowanceMicroUsd: moneySchema,
|
|
13971
|
+
extensionMicroUsd: moneySchema,
|
|
13972
|
+
allowanceMicroUsd: moneySchema,
|
|
13973
|
+
usedMicroUsd: moneySchema,
|
|
13974
|
+
remainingMicroUsd: exports_external.number().int().min(-Number.MAX_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER),
|
|
13975
|
+
resetAt: exports_external.iso.datetime(),
|
|
13976
|
+
hardLimit: exports_external.boolean(),
|
|
13977
|
+
allowRequestReset: exports_external.boolean(),
|
|
13978
|
+
canRequestReset: exports_external.boolean(),
|
|
13979
|
+
resetRequestStatus: exports_external.enum(["pending", "approved", "denied", "expired"]).nullable(),
|
|
13980
|
+
providerId: exports_external.string().nullable().optional()
|
|
13981
|
+
});
|
|
13982
|
+
var gatewayProviderUsageSchema = exports_external.object({
|
|
13983
|
+
providerId: exports_external.string().min(1),
|
|
13984
|
+
providerName: exports_external.string(),
|
|
13985
|
+
state: exports_external.enum(["within_limit", "over_limit", "blocked"]),
|
|
13986
|
+
buckets: exports_external.array(gatewayUsageBucketSchema)
|
|
13987
|
+
});
|
|
13961
13988
|
var gatewayUsageStatusSchema = exports_external.object({
|
|
13962
13989
|
serverTime: exports_external.iso.datetime(),
|
|
13963
13990
|
organizationId: exports_external.string(),
|
|
@@ -13978,24 +14005,8 @@ var gatewayUsageStatusSchema = exports_external.object({
|
|
|
13978
14005
|
lastSettlementRequestId: exports_external.string().nullable().optional(),
|
|
13979
14006
|
settlementReady: exports_external.boolean().optional()
|
|
13980
14007
|
}),
|
|
13981
|
-
buckets: exports_external.array(
|
|
13982
|
-
|
|
13983
|
-
timeframe: gatewayUsageTimeframeSchema,
|
|
13984
|
-
policyId: exports_external.string(),
|
|
13985
|
-
policyName: exports_external.string(),
|
|
13986
|
-
policyRevision: exports_external.number().int().positive().optional(),
|
|
13987
|
-
provenance: exports_external.array(gatewayUsageProvenanceSchema).optional(),
|
|
13988
|
-
baseAllowanceMicroUsd: moneySchema,
|
|
13989
|
-
extensionMicroUsd: moneySchema,
|
|
13990
|
-
allowanceMicroUsd: moneySchema,
|
|
13991
|
-
usedMicroUsd: moneySchema,
|
|
13992
|
-
remainingMicroUsd: exports_external.number().int().min(-Number.MAX_SAFE_INTEGER).max(Number.MAX_SAFE_INTEGER),
|
|
13993
|
-
resetAt: exports_external.iso.datetime(),
|
|
13994
|
-
hardLimit: exports_external.boolean(),
|
|
13995
|
-
allowRequestReset: exports_external.boolean(),
|
|
13996
|
-
canRequestReset: exports_external.boolean(),
|
|
13997
|
-
resetRequestStatus: exports_external.enum(["pending", "approved", "denied", "expired"]).nullable()
|
|
13998
|
-
}))
|
|
14008
|
+
buckets: exports_external.array(gatewayUsageBucketSchema),
|
|
14009
|
+
providers: exports_external.array(gatewayProviderUsageSchema).optional()
|
|
13999
14010
|
});
|
|
14000
14011
|
var gatewayUsageResetRequestSchema = exports_external.object({
|
|
14001
14012
|
id: exports_external.string(),
|
|
@@ -14005,6 +14016,8 @@ var gatewayUsageResetRequestSchema = exports_external.object({
|
|
|
14005
14016
|
bucketId: exports_external.string(),
|
|
14006
14017
|
timeframe: gatewayUsageTimeframeSchema,
|
|
14007
14018
|
policyName: exports_external.string(),
|
|
14019
|
+
providerId: exports_external.string().nullable().optional(),
|
|
14020
|
+
providerName: exports_external.string().nullable().optional(),
|
|
14008
14021
|
reason: exports_external.string(),
|
|
14009
14022
|
status: exports_external.enum(["pending", "approved", "denied", "expired"]),
|
|
14010
14023
|
createdAt: exports_external.iso.datetime(),
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
function __accessProp(key) {
|
|
8
|
+
return this[key];
|
|
9
|
+
}
|
|
10
|
+
var __toESMCache_node;
|
|
11
|
+
var __toESMCache_esm;
|
|
12
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
13
|
+
var canCache = mod != null && typeof mod === "object";
|
|
14
|
+
if (canCache) {
|
|
15
|
+
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
16
|
+
var cached = cache.get(mod);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
|
+
for (let key of __getOwnPropNames(mod))
|
|
23
|
+
if (!__hasOwnProp.call(to, key))
|
|
24
|
+
__defProp(to, key, {
|
|
25
|
+
get: __accessProp.bind(mod, key),
|
|
26
|
+
enumerable: true
|
|
27
|
+
});
|
|
28
|
+
if (canCache)
|
|
29
|
+
cache.set(mod, to);
|
|
30
|
+
return to;
|
|
31
|
+
};
|
|
32
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
|
+
var __returnValue = (v) => v;
|
|
34
|
+
function __exportSetter(name, newValue) {
|
|
35
|
+
this[name] = __returnValue.bind(null, newValue);
|
|
36
|
+
}
|
|
37
|
+
var __export = (target, all) => {
|
|
38
|
+
for (var name in all)
|
|
39
|
+
__defProp(target, name, {
|
|
40
|
+
get: all[name],
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true,
|
|
43
|
+
set: __exportSetter.bind(all, name)
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
47
|
+
|
|
48
|
+
// src/opencode-plugins/openwork-mcp-readiness-v2.ts
|
|
49
|
+
import { Context, Effect, Option, Schema, Scope } from "effect";
|
|
50
|
+
|
|
51
|
+
// src/opencode-v2-mcp-readiness.ts
|
|
52
|
+
var MCP_READINESS_RPC_ID = "openwork.mcp-readiness";
|
|
53
|
+
var mcpNamespace = (server) => server.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
54
|
+
var mcpToolId = (server, name) => `${mcpNamespace(server)}_${name.replace(/[^a-zA-Z0-9_-]/g, "_")}`;
|
|
55
|
+
function mcpBindingsReady(current, server, desired, previous) {
|
|
56
|
+
const published = new Set(current.filter((tool) => tool.options?.namespace === mcpNamespace(server)).map((tool) => tool.id));
|
|
57
|
+
const wanted = new Set(desired);
|
|
58
|
+
return desired.every((id) => published.has(id)) && previous.every((id) => wanted.has(id) || !published.has(id));
|
|
59
|
+
}
|
|
60
|
+
async function waitForMcpBindings(registry, server, desired, previous, signal) {
|
|
61
|
+
signal.throwIfAborted();
|
|
62
|
+
const current = await registry.list();
|
|
63
|
+
signal.throwIfAborted();
|
|
64
|
+
if (mcpBindingsReady(current, server, desired, previous))
|
|
65
|
+
return;
|
|
66
|
+
let closed = false;
|
|
67
|
+
let queued = false;
|
|
68
|
+
let registration;
|
|
69
|
+
let resolve = () => {};
|
|
70
|
+
let reject = () => {};
|
|
71
|
+
const ready = new Promise((accept, fail2) => {
|
|
72
|
+
resolve = accept;
|
|
73
|
+
reject = fail2;
|
|
74
|
+
});
|
|
75
|
+
ready.catch(() => {});
|
|
76
|
+
const fail = (error) => {
|
|
77
|
+
if (closed)
|
|
78
|
+
return;
|
|
79
|
+
closed = true;
|
|
80
|
+
reject(error);
|
|
81
|
+
};
|
|
82
|
+
const abort = () => fail(signal.reason ?? new Error("MCP readiness canceled"));
|
|
83
|
+
const observe = () => {
|
|
84
|
+
if (closed || queued)
|
|
85
|
+
return;
|
|
86
|
+
queued = true;
|
|
87
|
+
queueMicrotask(() => {
|
|
88
|
+
queued = false;
|
|
89
|
+
if (closed)
|
|
90
|
+
return;
|
|
91
|
+
registry.list().then((current2) => {
|
|
92
|
+
if (closed || !mcpBindingsReady(current2, server, desired, previous))
|
|
93
|
+
return;
|
|
94
|
+
closed = true;
|
|
95
|
+
resolve();
|
|
96
|
+
}, fail);
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
100
|
+
try {
|
|
101
|
+
signal.throwIfAborted();
|
|
102
|
+
registration = await registry.transform(observe);
|
|
103
|
+
await ready;
|
|
104
|
+
} finally {
|
|
105
|
+
closed = true;
|
|
106
|
+
signal.removeEventListener("abort", abort);
|
|
107
|
+
await registration?.dispose();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// src/opencode-plugins/openwork-mcp-readiness-v2.ts
|
|
112
|
+
class NativeMcp extends Context.Service()("@opencode/MCP") {
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
class NativeMcpTool extends Context.Service()("@opencode/McpTool") {
|
|
116
|
+
}
|
|
117
|
+
var serverSchema = { type: "string", minLength: 1 };
|
|
118
|
+
var toolsSchema = { type: "array", maxItems: 4096, items: { type: "string", minLength: 1 } };
|
|
119
|
+
var definition = {
|
|
120
|
+
id: MCP_READINESS_RPC_ID,
|
|
121
|
+
methods: {
|
|
122
|
+
catalog: {
|
|
123
|
+
input: { type: "object", properties: { server: serverSchema }, required: ["server"], additionalProperties: false },
|
|
124
|
+
output: { type: "object", properties: { tools: toolsSchema }, required: ["tools"], additionalProperties: false }
|
|
125
|
+
},
|
|
126
|
+
waitForTools: {
|
|
127
|
+
input: { type: "object", properties: { server: serverSchema }, required: ["server"], additionalProperties: false },
|
|
128
|
+
output: { type: "object", properties: { ready: { const: true } }, required: ["ready"], additionalProperties: false }
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
events: {}
|
|
132
|
+
};
|
|
133
|
+
var serverInput = Schema.Struct({ server: Schema.String });
|
|
134
|
+
var inputServer = (input) => Schema.decodeUnknownSync(serverInput)(input).server;
|
|
135
|
+
var nativeCatalog = Effect.gen(function* () {
|
|
136
|
+
const context = yield* Effect.context();
|
|
137
|
+
const mcp = Context.getOption(context, NativeMcp);
|
|
138
|
+
const source = Context.getOption(context, NativeMcpTool);
|
|
139
|
+
if (Option.isNone(mcp) || Option.isNone(source))
|
|
140
|
+
return yield* Effect.die(new Error("Native MCP readiness services are unavailable"));
|
|
141
|
+
yield* source.value.flush;
|
|
142
|
+
return mcp.value;
|
|
143
|
+
});
|
|
144
|
+
var waitForNativeMcpBindings = Effect.fn("OpenWorkMcp.waitForBindings")(function* (tool, server, desired, previous) {
|
|
145
|
+
const scope = yield* Scope.Scope;
|
|
146
|
+
yield* Effect.tryPromise({
|
|
147
|
+
try: (signal) => waitForMcpBindings({
|
|
148
|
+
list: () => Effect.runPromise(tool.list()),
|
|
149
|
+
transform: async (observe) => {
|
|
150
|
+
const registration = await Effect.runPromise(tool.transform(observe).pipe(Effect.provideService(Scope.Scope, scope)));
|
|
151
|
+
return { dispose: () => Effect.runPromise(registration.dispose) };
|
|
152
|
+
}
|
|
153
|
+
}, server, desired, previous, signal),
|
|
154
|
+
catch: (cause) => cause
|
|
155
|
+
});
|
|
156
|
+
}, Effect.orDie);
|
|
157
|
+
var openwork_mcp_readiness_v2_default = {
|
|
158
|
+
id: MCP_READINESS_RPC_ID,
|
|
159
|
+
effect: (ctx) => {
|
|
160
|
+
const supported = () => {
|
|
161
|
+
if (ctx.app.version !== "2.0.26")
|
|
162
|
+
throw new Error("Review the native MCP readiness bridge before changing the engine pin");
|
|
163
|
+
};
|
|
164
|
+
return ctx.rpc.register(definition, {
|
|
165
|
+
catalog: Effect.fn("OpenWorkMcp.catalog")(function* (input) {
|
|
166
|
+
supported();
|
|
167
|
+
const server = inputServer(input);
|
|
168
|
+
const mcp = yield* nativeCatalog;
|
|
169
|
+
const discovered = (yield* mcp.tools()).filter((tool) => tool.server === server).map((tool) => mcpToolId(server, tool.name));
|
|
170
|
+
const published = (yield* ctx.tool.list()).filter((tool) => tool.options?.namespace === mcpNamespace(server)).map((tool) => tool.id);
|
|
171
|
+
return { tools: [...new Set([...discovered, ...published])].sort() };
|
|
172
|
+
}),
|
|
173
|
+
waitForTools: Effect.fn("OpenWorkMcp.waitForTools")(function* (input) {
|
|
174
|
+
supported();
|
|
175
|
+
const server = inputServer(input);
|
|
176
|
+
const mcp = yield* nativeCatalog;
|
|
177
|
+
yield* ctx.tool.reload();
|
|
178
|
+
const previous = (yield* ctx.tool.list()).filter((tool) => tool.options?.namespace === mcpNamespace(server)).map((tool) => tool.id);
|
|
179
|
+
const target = (yield* mcp.servers()).find((item) => item.name === server);
|
|
180
|
+
if (target && !["connected", "disabled"].includes(target.status.status)) {
|
|
181
|
+
return yield* Effect.die(new Error(`MCP ${server} is ${target.status.status}, not executable`));
|
|
182
|
+
}
|
|
183
|
+
const desired = (yield* mcp.tools()).filter((tool) => tool.server === server).map((tool) => mcpToolId(server, tool.name));
|
|
184
|
+
yield* waitForNativeMcpBindings(ctx.tool, server, desired, previous).pipe(Effect.scoped);
|
|
185
|
+
return { ready: true };
|
|
186
|
+
})
|
|
187
|
+
}).pipe(Effect.asVoid);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
export {
|
|
191
|
+
openwork_mcp_readiness_v2_default as default
|
|
192
|
+
};
|