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.
Files changed (96) hide show
  1. package/dist/opencode-plugin-deps-1.18.30.tgz +0 -0
  2. package/dist/opencode-plugins/drive-file-tools.js +62 -0
  3. package/dist/opencode-plugins/managed-policy-next.js +18 -1
  4. package/dist/opencode-plugins/opencode-stop-fence-client.js +6 -0
  5. package/dist/opencode-plugins/openwork-agent-permissions-v2.js +14177 -0
  6. package/dist/opencode-plugins/openwork-capabilities-knowledge.js +197 -5
  7. package/dist/opencode-plugins/openwork-chrome-devtools.js +5 -5
  8. package/dist/opencode-plugins/openwork-cloud-skills-v2.js +222 -0
  9. package/dist/opencode-plugins/openwork-codemode-discovery-v2.js +60 -0
  10. package/dist/opencode-plugins/openwork-context-v2.js +13868 -1
  11. package/dist/opencode-plugins/openwork-extensions-preview-steering.js +1 -1
  12. package/dist/opencode-plugins/openwork-extensions-preview.js +195 -49
  13. package/dist/opencode-plugins/openwork-gateway-quota-v2.js +55 -24
  14. package/dist/opencode-plugins/openwork-gateway-quota.js +31 -18
  15. package/dist/opencode-plugins/openwork-mcp-readiness-v2.js +192 -0
  16. package/dist/opencode-plugins/openwork-mcp-results-v2.js +10836 -13
  17. package/dist/opencode-plugins/openwork-office-attachments.js +1 -1
  18. package/dist/opencode-plugins/openwork-provider-filters-v2.js +5 -7
  19. package/dist/opencode-plugins/openwork-provider-sync-v2.js +3880 -0
  20. package/dist/opencode-plugins/openwork-spreadsheets.js +1 -1
  21. package/dist/opencode-plugins/openwork-title-recovery.js +18 -6
  22. package/dist/opencode-plugins/openwork-ui-bridge.js +5 -2
  23. package/dist/opencode-plugins/workspace-file-destinations.js +136 -0
  24. package/dist/openwork-server.mjs +7794 -2938
  25. package/package.json +1 -1
  26. package/web/assets/{abnfDiagram-VCTEODGH-Dv8KxM1F.js → abnfDiagram-VCTEODGH-DwrIJf48.js} +1 -1
  27. package/web/assets/app-CHfH2zRH.css +32 -0
  28. package/web/assets/{app-E_RdTPah.js → app-wI0raXAn.js} +487 -435
  29. package/web/assets/{arc-_WbfJV_K.js → arc-ZosP3oxH.js} +1 -1
  30. package/web/assets/{architectureDiagram-5GKGNRK7-CckpRlSR.js → architectureDiagram-5GKGNRK7-DJ7WZh-0.js} +1 -1
  31. package/web/assets/{artifact-code-view-BbU019Q_.js → artifact-code-view-C_Qx94_t.js} +1 -1
  32. package/web/assets/{artifact-spreadsheet-editor-B3q9ZZoB.js → artifact-spreadsheet-editor-dniMTtEq.js} +1 -1
  33. package/web/assets/{artifact-text-editor-CA2Dgulr.js → artifact-text-editor-CRcxx-eZ.js} +1 -1
  34. package/web/assets/{blockDiagram-OSKFZWR5-BKdntEom.js → blockDiagram-OSKFZWR5-BRRMYQEs.js} +1 -1
  35. package/web/assets/{c4Diagram-7LVT6UL2-BJLyhqO1.js → c4Diagram-7LVT6UL2-gOHlDk2i.js} +1 -1
  36. package/web/assets/channel-CGPaVydu.js +1 -0
  37. package/web/assets/{chunk-2Q5K7J3B-D88ZIDGU.js → chunk-2Q5K7J3B-ndvUlkwq.js} +1 -1
  38. package/web/assets/{chunk-5VM5RSS4-DebGr6SE.js → chunk-5VM5RSS4-BFRve9Ox.js} +1 -1
  39. package/web/assets/{chunk-F27PBJKO-ChkVnT1d.js → chunk-F27PBJKO-CD-z5ZbY.js} +1 -1
  40. package/web/assets/{chunk-HLEWEB6X-ER6ZF6Pd.js → chunk-HLEWEB6X-CoWYhcUt.js} +1 -1
  41. package/web/assets/{chunk-JWPE2WC7-CQw0tJnK.js → chunk-JWPE2WC7-CsOREOhy.js} +1 -1
  42. package/web/assets/{chunk-POPQ4Y6H-Dm94DEFc.js → chunk-POPQ4Y6H-BPOdruz2.js} +1 -1
  43. package/web/assets/{chunk-SVP7TREG-rzCKlvNW.js → chunk-SVP7TREG-B7QwRO46.js} +1 -1
  44. package/web/assets/{chunk-XXDRQBXY-BcXExR9z.js → chunk-XXDRQBXY-DZp-LfVy.js} +1 -1
  45. package/web/assets/{chunk-ZLD2IHE6-CRtSpyr1.js → chunk-ZLD2IHE6-Bo9EgwIQ.js} +1 -1
  46. package/web/assets/classDiagram-CYGNFDIV-Bsii9q3h.js +1 -0
  47. package/web/assets/classDiagram-v2-TLXNO2FR-Bsii9q3h.js +1 -0
  48. package/web/assets/{cose-bilkent-JH36ORCC-1inJ0kKP.js → cose-bilkent-JH36ORCC-H7EUgT4k.js} +1 -1
  49. package/web/assets/{cynefin-OW5HDTMX-BAEIfHgW.js → cynefin-OW5HDTMX-r1tJgDH9.js} +1 -1
  50. package/web/assets/{cynefinDiagram-5FMLGOSQ-Dw_qVKID.js → cynefinDiagram-5FMLGOSQ-Cq4Pjmmj.js} +1 -1
  51. package/web/assets/{dagre-OS7QT2EB-BXAAz87u.js → dagre-OS7QT2EB-Bh2GFhAP.js} +1 -1
  52. package/web/assets/{diagram-S7CK7UJ4-BQt6gteN.js → diagram-S7CK7UJ4-BZNr_IG6.js} +1 -1
  53. package/web/assets/{diagram-UQ7AKVKN-Dh7vrHwF.js → diagram-UQ7AKVKN-BgaDOS70.js} +1 -1
  54. package/web/assets/{diagram-VSXAHHWV-D2kNxmUp.js → diagram-VSXAHHWV-DjUt-msp.js} +1 -1
  55. package/web/assets/{diagram-VX7I27RA-CctQDix_.js → diagram-VX7I27RA-BI3GsO3i.js} +1 -1
  56. package/web/assets/{diagram-Z3DM3KII-CDGlIVG5.js → diagram-Z3DM3KII-BLqI9pS_.js} +1 -1
  57. package/web/assets/{ebnfDiagram-PWID7BFC-0bgAb7z3.js → ebnfDiagram-PWID7BFC-D_CdQ2MS.js} +1 -1
  58. package/web/assets/{erDiagram-2YWLMYGG-Dbur-iWa.js → erDiagram-2YWLMYGG-C1SWDIhQ.js} +1 -1
  59. package/web/assets/{flowDiagram-T62WH6J4-Cw6AeymU.js → flowDiagram-T62WH6J4-BfXQV4xP.js} +1 -1
  60. package/web/assets/{ganttDiagram-EL5Y4UJY-BXYwFWOW.js → ganttDiagram-EL5Y4UJY-Bk-epoGY.js} +1 -1
  61. package/web/assets/{gitGraphDiagram-WWUBYQGX-De6ZCLNz.js → gitGraphDiagram-WWUBYQGX-O1ARqYlP.js} +1 -1
  62. package/web/assets/{infoDiagram-FKFFQAWI-B11KM4en.js → infoDiagram-FKFFQAWI-WZNXnPS1.js} +1 -1
  63. package/web/assets/{ishikawaDiagram-5VMMS53U-kGPWhBux.js → ishikawaDiagram-5VMMS53U-B8j8HgqU.js} +1 -1
  64. package/web/assets/{journeyDiagram-EYS64GPL-K8Wtegvp.js → journeyDiagram-EYS64GPL-dd2d-my9.js} +1 -1
  65. package/web/assets/{kanban-definition-UXKFOSKX-CjtX_cLJ.js → kanban-definition-UXKFOSKX-B6HfzCjr.js} +1 -1
  66. package/web/assets/{layout-Cn0uoRC-.js → layout-CjAP8jGd.js} +1 -1
  67. package/web/assets/{linear-WTNza7Ko.js → linear-DmcE_jj7.js} +1 -1
  68. package/web/assets/{mermaid.core-CbBVVRTZ.js → mermaid.core-DByIm3Os.js} +6 -6
  69. package/web/assets/{mindmap-definition-THT77NOG-DjyO1aA-.js → mindmap-definition-THT77NOG-CJdJrkzY.js} +1 -1
  70. package/web/assets/{pegDiagram-XKGWAZYB-ChPXU87n.js → pegDiagram-XKGWAZYB-DMKRyZmT.js} +1 -1
  71. package/web/assets/{pieDiagram-E7YTZNPT-bPQtXz_p.js → pieDiagram-E7YTZNPT-C0b_9HGX.js} +1 -1
  72. package/web/assets/{quadrantDiagram-AXDQQJYC-DokQ5FGV.js → quadrantDiagram-AXDQQJYC-BqkbJG9P.js} +1 -1
  73. package/web/assets/{railroadDiagram-O6MQD6OU-CcdqGxuL.js → railroadDiagram-O6MQD6OU-DXXz-as-.js} +1 -1
  74. package/web/assets/{requirementDiagram-IS5BZ75X-CGMF9hMZ.js → requirementDiagram-IS5BZ75X-DXkMFIBa.js} +1 -1
  75. package/web/assets/{sankeyDiagram-P5KCCOFB-fc-d15bH.js → sankeyDiagram-P5KCCOFB-CzXdocFr.js} +1 -1
  76. package/web/assets/{sequenceDiagram-WJ2MYXX4-DAmsOR8u.js → sequenceDiagram-WJ2MYXX4-aJBXn8VU.js} +1 -1
  77. package/web/assets/{sizeCapture-INFHLROL-6o7CY1B-.js → sizeCapture-INFHLROL-jgtrjDHs.js} +1 -1
  78. package/web/assets/{stateDiagram-XQSTLZYL-En5t4mkI.js → stateDiagram-XQSTLZYL-DrWWKXiY.js} +1 -1
  79. package/web/assets/stateDiagram-v2-IH3M54BS-D2cYASvR.js +1 -0
  80. package/web/assets/{swimlanes-V6O3JKXN-COBv2NoI.js → swimlanes-V6O3JKXN-D8Ewz1mj.js} +1 -1
  81. package/web/assets/swimlanesDiagram-JKAHXJPX-B9WLoHr4.js +8 -0
  82. package/web/assets/{timeline-definition-24CTP7MA-Qb-aTtSE.js → timeline-definition-24CTP7MA-B25naqcG.js} +1 -1
  83. package/web/assets/{vennDiagram-4TSXK5OY-Br3-0Ze-.js → vennDiagram-4TSXK5OY-3lHwPwrc.js} +1 -1
  84. package/web/assets/{wardleyDiagram-VM6X3IG4-BCeY3AKL.js → wardleyDiagram-VM6X3IG4-RGq5f_bX.js} +1 -1
  85. package/web/assets/{workspace-file-tree-CYzKM8q4.js → workspace-file-tree-Dt4_4AuL.js} +1 -1
  86. package/web/assets/{xychartDiagram-S5SC5T6Z-Bz96OPKc.js → xychartDiagram-S5SC5T6Z-DysrZCDk.js} +1 -1
  87. package/web/ext-microsoft-365.svg +1 -0
  88. package/web/index.html +2 -2
  89. package/dist/opencode-plugins/workspace-file-identity.js +0 -162
  90. package/web/assets/app-B682snBU.css +0 -32
  91. package/web/assets/channel-BZvy6aHa.js +0 -1
  92. package/web/assets/classDiagram-CYGNFDIV-DBAMzIwS.js +0 -1
  93. package/web/assets/classDiagram-v2-TLXNO2FR-DBAMzIwS.js +0 -1
  94. package/web/assets/katex-HP8lGamR.js +0 -257
  95. package/web/assets/stateDiagram-v2-IH3M54BS-DvIXHm_9.js +0 -1
  96. 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(exports_external.object({
13668
- id: exports_external.string(),
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 !== id || !await isGatewayQuotaResponse(base, new URL(event.request.url), event.response))
13801
- return;
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(exports_external.object({
13982
- id: exports_external.string(),
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
+ };