@compozy/extension-sdk 0.3.0-beta.16 → 0.3.0-beta.17

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.
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FORGE_PR_CREATE_METHOD = exports.FORGE_STATUS_METHOD = exports.FORGE_CAPABILITIES_METHOD = exports.FORGE_PROVIDER_CAPABILITY = void 0;
4
+ exports.registerForgeProvider = registerForgeProvider;
5
+ const errors_js_1 = require("./errors.js");
6
+ const extension_provide_surface_js_1 = require("./extension-provide-surface.js");
7
+ exports.FORGE_PROVIDER_CAPABILITY = "forge.provider";
8
+ exports.FORGE_CAPABILITIES_METHOD = "forge/capabilities";
9
+ exports.FORGE_STATUS_METHOD = "forge/status";
10
+ exports.FORGE_PR_CREATE_METHOD = "forge/pr_create";
11
+ function requestRecord(method, request) {
12
+ if (typeof request !== "object" || request === null || Array.isArray(request)) {
13
+ throw new errors_js_1.InvalidParamsError(`${method} params must be an object`);
14
+ }
15
+ return request;
16
+ }
17
+ function requiredString(method, request, field) {
18
+ const value = request[field];
19
+ if (typeof value !== "string" || value.trim().length === 0) {
20
+ throw new errors_js_1.InvalidParamsError(`${method} requires a non-empty ${field}`);
21
+ }
22
+ return value;
23
+ }
24
+ function remoteURLs(method, request) {
25
+ const values = request.remote_urls;
26
+ if (!Array.isArray(values) ||
27
+ values.length === 0 ||
28
+ values.some(value => typeof value !== "string" || value.trim().length === 0)) {
29
+ throw new errors_js_1.InvalidParamsError(`${method} requires non-empty remote_urls`);
30
+ }
31
+ return values;
32
+ }
33
+ function capabilitiesRequest(request) {
34
+ const record = requestRecord(exports.FORGE_CAPABILITIES_METHOD, request);
35
+ return { remote_urls: remoteURLs(exports.FORGE_CAPABILITIES_METHOD, record) };
36
+ }
37
+ function statusRequest(request) {
38
+ const record = requestRecord(exports.FORGE_STATUS_METHOD, request);
39
+ return {
40
+ remote_urls: remoteURLs(exports.FORGE_STATUS_METHOD, record),
41
+ branch: requiredString(exports.FORGE_STATUS_METHOD, record, "branch"),
42
+ };
43
+ }
44
+ function createPRRequest(request) {
45
+ const record = requestRecord(exports.FORGE_PR_CREATE_METHOD, request);
46
+ const parsed = {
47
+ remote_urls: remoteURLs(exports.FORGE_PR_CREATE_METHOD, record),
48
+ head: requiredString(exports.FORGE_PR_CREATE_METHOD, record, "head"),
49
+ base: requiredString(exports.FORGE_PR_CREATE_METHOD, record, "base"),
50
+ title: requiredString(exports.FORGE_PR_CREATE_METHOD, record, "title"),
51
+ };
52
+ if (record.body !== undefined) {
53
+ if (typeof record.body !== "string") {
54
+ throw new errors_js_1.InvalidParamsError(`${exports.FORGE_PR_CREATE_METHOD} body must be a string`);
55
+ }
56
+ parsed.body = record.body;
57
+ }
58
+ if (record.draft !== undefined) {
59
+ if (typeof record.draft !== "boolean") {
60
+ throw new errors_js_1.InvalidParamsError(`${exports.FORGE_PR_CREATE_METHOD} draft must be a boolean`);
61
+ }
62
+ parsed.draft = record.draft;
63
+ }
64
+ return parsed;
65
+ }
66
+ function registerForgeProvider(extension, handlers) {
67
+ if (!extension) {
68
+ throw new Error("extension is required");
69
+ }
70
+ if (typeof handlers?.capabilities !== "function" ||
71
+ typeof handlers.status !== "function" ||
72
+ typeof handlers.createPR !== "function") {
73
+ throw new Error("forge provider handlers are required");
74
+ }
75
+ return extension[extension_provide_surface_js_1.registerProvideSurface](exports.FORGE_PROVIDER_CAPABILITY, [
76
+ {
77
+ method: exports.FORGE_CAPABILITIES_METHOD,
78
+ handler: async (context, request) => await handlers.capabilities(context, capabilitiesRequest(request)),
79
+ },
80
+ {
81
+ method: exports.FORGE_STATUS_METHOD,
82
+ handler: async (context, request) => await handlers.status(context, statusRequest(request)),
83
+ },
84
+ {
85
+ method: exports.FORGE_PR_CREATE_METHOD,
86
+ handler: async (context, request) => await handlers.createPR(context, createPRRequest(request)),
87
+ },
88
+ ]);
89
+ }
90
+ //# sourceMappingURL=forge-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-provider.js","sourceRoot":"","sources":["../../src/forge-provider.ts"],"names":[],"mappings":";;;;AAEA,2CAAiD;AACjD,iFAAwE;AAU3D,QAAA,yBAAyB,GAAG,gBAAgB,CAAC;AAC7C,QAAA,yBAAyB,GAAG,oBAAoB,CAAC;AACjD,QAAA,mBAAmB,GAAG,cAAc,CAAC;AACrC,QAAA,sBAAsB,GAAG,iBAAiB,CAAC;AAiBxD,SAAS,aAAa,CAAC,MAAc,EAAE,OAAgB;IACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,8BAAkB,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,OAAkC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,OAAgC,EAAE,KAAa;IACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,8BAAkB,CAAC,GAAG,MAAM,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,OAAgC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IACnC,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5E,CAAC;QACD,MAAM,IAAI,8BAAkB,CAAC,GAAG,MAAM,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAA,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,QAAA,yBAAyB,EAAE,MAAM,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAA,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO;QACL,WAAW,EAAE,UAAU,CAAC,QAAA,mBAAmB,EAAE,MAAM,CAAC;QACpD,MAAM,EAAE,cAAc,CAAC,QAAA,mBAAmB,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,QAAA,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAyB;QACnC,WAAW,EAAE,UAAU,CAAC,QAAA,sBAAsB,EAAE,MAAM,CAAC;QACvD,IAAI,EAAE,cAAc,CAAC,QAAA,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;QAC5D,IAAI,EAAE,cAAc,CAAC,QAAA,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;QAC5D,KAAK,EAAE,cAAc,CAAC,QAAA,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC;KAC/D,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,8BAAkB,CAAC,GAAG,QAAA,sBAAsB,wBAAwB,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,8BAAkB,CAAC,GAAG,QAAA,sBAAsB,0BAA0B,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+BACE,SAAoB,EACpB,QAA+B;IAE/B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,IACE,OAAO,QAAQ,EAAE,YAAY,KAAK,UAAU;QAC5C,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU;QACrC,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,SAAS,CAAC,qDAAsB,CAAC,CAAC,QAAA,yBAAyB,EAAE;QAClE;YACE,MAAM,EAAE,QAAA,yBAAyB;YACjC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAClC,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;SACrE;QACD;YACE,MAAM,EAAE,QAAA,mBAAmB;YAC3B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;SAC5F;QACD;YACE,MAAM,EAAE,QAAA,sBAAsB;YAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;SAC7D;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -8,6 +8,7 @@ exports.REQUIRED_METHODS_BY_PROVIDE = {
8
8
  "connectivity/status",
9
9
  "connectivity/teardown",
10
10
  ],
11
+ "forge.provider": ["forge/capabilities", "forge/pr_create", "forge/status"],
11
12
  "loop.watch_source": ["watch/poll"],
12
13
  "memory.backend": ["memory/forget", "memory/recall", "memory/store"],
13
14
  "model.source": ["models/list"],
@@ -18,6 +19,7 @@ exports.PUBLIC_PROVIDE_CONFORMANCE_FIXTURES = [
18
19
  provide: "connectivity.provider",
19
20
  required_methods: exports.REQUIRED_METHODS_BY_PROVIDE["connectivity.provider"],
20
21
  },
22
+ { provide: "forge.provider", required_methods: exports.REQUIRED_METHODS_BY_PROVIDE["forge.provider"] },
21
23
  {
22
24
  provide: "loop.watch_source",
23
25
  required_methods: exports.REQUIRED_METHODS_BY_PROVIDE["loop.watch_source"],
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/generated/contracts.ts"],"names":[],"mappings":";;;AA2jOa,QAAA,2BAA2B,GAAG;IACzC,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;IACjE,uBAAuB,EAAE;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,uBAAuB;KACxB;IACD,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,gBAAgB,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC;IACpE,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;CACc,CAAC;AAOpD,QAAA,mCAAmC,GAAyC;IACvF;QACE,OAAO,EAAE,uBAAuB;QAChC,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,uBAAuB,CAAC;KACvE;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,mBAAmB,CAAC;KACnE;IACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,gBAAgB,CAAC,EAAE;IAC9F,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,cAAc,CAAC,EAAE;IAC1F,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,eAAe,CAAC,EAAE;CAC7F,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/generated/contracts.ts"],"names":[],"mappings":";;;AA+zOa,QAAA,2BAA2B,GAAG;IACzC,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;IACjE,uBAAuB,EAAE;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,uBAAuB;KACxB;IACD,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,CAAC;IAC3E,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,gBAAgB,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC;IACpE,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;CACc,CAAC;AAOpD,QAAA,mCAAmC,GAAyC;IACvF;QACE,OAAO,EAAE,uBAAuB;QAChC,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,uBAAuB,CAAC;KACvE;IACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,gBAAgB,CAAC,EAAE;IAC9F;QACE,OAAO,EAAE,mBAAmB;QAC5B,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,mBAAmB,CAAC;KACnE;IACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,gBAAgB,CAAC,EAAE;IAC9F,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,cAAc,CAAC,EAAE;IAC1F,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAA,2BAA2B,CAAC,eAAe,CAAC,EAAE;CAC7F,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.schemaDigest = exports.canonicalJSON = exports.registerConnectivityProvider = exports.CONNECTIVITY_TEARDOWN_METHOD = exports.CONNECTIVITY_STATUS_METHOD = exports.CONNECTIVITY_PROVIDER_CAPABILITY = exports.CONNECTIVITY_ESTABLISH_METHOD = exports.isRPCError = exports.errorFromObject = exports.ensureRPCError = exports.ToolExecutionError = exports.ShutdownInProgressError = exports.RPCError = exports.RateLimitedError = exports.ParseError = exports.NotInitializedError = exports.MethodNotFoundError = exports.InvalidRequestError = exports.InvalidParamsError = exports.InternalError = exports.CapabilityDeniedError = exports.StdioTransport = exports.NotReadyTransport = exports.JSON_RPC_VERSION = exports.DEFAULT_MAX_MESSAGE_BYTES = exports.HostAPI = exports.Extension = void 0;
3
+ exports.schemaDigest = exports.canonicalJSON = exports.registerForgeProvider = exports.FORGE_STATUS_METHOD = exports.FORGE_PROVIDER_CAPABILITY = exports.FORGE_PR_CREATE_METHOD = exports.FORGE_CAPABILITIES_METHOD = exports.registerConnectivityProvider = exports.CONNECTIVITY_TEARDOWN_METHOD = exports.CONNECTIVITY_STATUS_METHOD = exports.CONNECTIVITY_PROVIDER_CAPABILITY = exports.CONNECTIVITY_ESTABLISH_METHOD = exports.isRPCError = exports.errorFromObject = exports.ensureRPCError = exports.ToolExecutionError = exports.ShutdownInProgressError = exports.RPCError = exports.RateLimitedError = exports.ParseError = exports.NotInitializedError = exports.MethodNotFoundError = exports.InvalidRequestError = exports.InvalidParamsError = exports.InternalError = exports.CapabilityDeniedError = exports.StdioTransport = exports.NotReadyTransport = exports.JSON_RPC_VERSION = exports.DEFAULT_MAX_MESSAGE_BYTES = exports.HostAPI = exports.Extension = void 0;
4
4
  var extension_js_1 = require("./extension.js");
5
5
  Object.defineProperty(exports, "Extension", { enumerable: true, get: function () { return extension_js_1.Extension; } });
6
6
  var host_api_js_1 = require("./host-api.js");
@@ -31,6 +31,12 @@ Object.defineProperty(exports, "CONNECTIVITY_PROVIDER_CAPABILITY", { enumerable:
31
31
  Object.defineProperty(exports, "CONNECTIVITY_STATUS_METHOD", { enumerable: true, get: function () { return connectivity_provider_js_1.CONNECTIVITY_STATUS_METHOD; } });
32
32
  Object.defineProperty(exports, "CONNECTIVITY_TEARDOWN_METHOD", { enumerable: true, get: function () { return connectivity_provider_js_1.CONNECTIVITY_TEARDOWN_METHOD; } });
33
33
  Object.defineProperty(exports, "registerConnectivityProvider", { enumerable: true, get: function () { return connectivity_provider_js_1.registerConnectivityProvider; } });
34
+ var forge_provider_js_1 = require("./forge-provider.js");
35
+ Object.defineProperty(exports, "FORGE_CAPABILITIES_METHOD", { enumerable: true, get: function () { return forge_provider_js_1.FORGE_CAPABILITIES_METHOD; } });
36
+ Object.defineProperty(exports, "FORGE_PR_CREATE_METHOD", { enumerable: true, get: function () { return forge_provider_js_1.FORGE_PR_CREATE_METHOD; } });
37
+ Object.defineProperty(exports, "FORGE_PROVIDER_CAPABILITY", { enumerable: true, get: function () { return forge_provider_js_1.FORGE_PROVIDER_CAPABILITY; } });
38
+ Object.defineProperty(exports, "FORGE_STATUS_METHOD", { enumerable: true, get: function () { return forge_provider_js_1.FORGE_STATUS_METHOD; } });
39
+ Object.defineProperty(exports, "registerForgeProvider", { enumerable: true, get: function () { return forge_provider_js_1.registerForgeProvider; } });
34
40
  var schema_digest_js_1 = require("./schema-digest.js");
35
41
  Object.defineProperty(exports, "canonicalJSON", { enumerable: true, get: function () { return schema_digest_js_1.canonicalJSON; } });
36
42
  Object.defineProperty(exports, "schemaDigest", { enumerable: true, get: function () { return schema_digest_js_1.schemaDigest; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAClB,6CAAwC;AAA/B,sGAAA,OAAO,OAAA;AAChB,+CAKwB;AAJtB,yHAAA,yBAAyB,OAAA;AACzB,gHAAA,gBAAgB,OAAA;AAChB,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AAGhB,yCAeqB;AAdnB,kHAAA,qBAAqB,OAAA;AACrB,0GAAA,aAAa,OAAA;AACb,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,uGAAA,UAAU,OAAA;AACV,6GAAA,gBAAgB,OAAA;AAChB,qGAAA,QAAQ,OAAA;AACR,oHAAA,uBAAuB,OAAA;AACvB,+GAAA,kBAAkB,OAAA;AAClB,2GAAA,cAAc,OAAA;AACd,4GAAA,eAAe,OAAA;AACf,uGAAA,UAAU,OAAA;AAGZ,uEAMoC;AALlC,yIAAA,6BAA6B,OAAA;AAC7B,4IAAA,gCAAgC,OAAA;AAChC,sIAAA,0BAA0B,OAAA;AAC1B,wIAAA,4BAA4B,OAAA;AAC5B,wIAAA,4BAA4B,OAAA;AAG9B,uDAAiE;AAAxD,iHAAA,aAAa,OAAA;AAAE,gHAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAClB,6CAAwC;AAA/B,sGAAA,OAAO,OAAA;AAChB,+CAKwB;AAJtB,yHAAA,yBAAyB,OAAA;AACzB,gHAAA,gBAAgB,OAAA;AAChB,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AAGhB,yCAeqB;AAdnB,kHAAA,qBAAqB,OAAA;AACrB,0GAAA,aAAa,OAAA;AACb,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,uGAAA,UAAU,OAAA;AACV,6GAAA,gBAAgB,OAAA;AAChB,qGAAA,QAAQ,OAAA;AACR,oHAAA,uBAAuB,OAAA;AACvB,+GAAA,kBAAkB,OAAA;AAClB,2GAAA,cAAc,OAAA;AACd,4GAAA,eAAe,OAAA;AACf,uGAAA,UAAU,OAAA;AAGZ,uEAMoC;AALlC,yIAAA,6BAA6B,OAAA;AAC7B,4IAAA,gCAAgC,OAAA;AAChC,sIAAA,0BAA0B,OAAA;AAC1B,wIAAA,4BAA4B,OAAA;AAC5B,wIAAA,4BAA4B,OAAA;AAG9B,yDAM6B;AAL3B,8HAAA,yBAAyB,OAAA;AACzB,2HAAA,sBAAsB,OAAA;AACtB,8HAAA,yBAAyB,OAAA;AACzB,wHAAA,mBAAmB,OAAA;AACnB,0HAAA,qBAAqB,OAAA;AAGvB,uDAAiE;AAAxD,iHAAA,aAAa,OAAA;AAAE,gHAAA,YAAY,OAAA"}
@@ -0,0 +1,86 @@
1
+ import { InvalidParamsError } from "./errors.js";
2
+ import { registerProvideSurface } from "./extension-provide-surface.js";
3
+ export const FORGE_PROVIDER_CAPABILITY = "forge.provider";
4
+ export const FORGE_CAPABILITIES_METHOD = "forge/capabilities";
5
+ export const FORGE_STATUS_METHOD = "forge/status";
6
+ export const FORGE_PR_CREATE_METHOD = "forge/pr_create";
7
+ function requestRecord(method, request) {
8
+ if (typeof request !== "object" || request === null || Array.isArray(request)) {
9
+ throw new InvalidParamsError(`${method} params must be an object`);
10
+ }
11
+ return request;
12
+ }
13
+ function requiredString(method, request, field) {
14
+ const value = request[field];
15
+ if (typeof value !== "string" || value.trim().length === 0) {
16
+ throw new InvalidParamsError(`${method} requires a non-empty ${field}`);
17
+ }
18
+ return value;
19
+ }
20
+ function remoteURLs(method, request) {
21
+ const values = request.remote_urls;
22
+ if (!Array.isArray(values) ||
23
+ values.length === 0 ||
24
+ values.some(value => typeof value !== "string" || value.trim().length === 0)) {
25
+ throw new InvalidParamsError(`${method} requires non-empty remote_urls`);
26
+ }
27
+ return values;
28
+ }
29
+ function capabilitiesRequest(request) {
30
+ const record = requestRecord(FORGE_CAPABILITIES_METHOD, request);
31
+ return { remote_urls: remoteURLs(FORGE_CAPABILITIES_METHOD, record) };
32
+ }
33
+ function statusRequest(request) {
34
+ const record = requestRecord(FORGE_STATUS_METHOD, request);
35
+ return {
36
+ remote_urls: remoteURLs(FORGE_STATUS_METHOD, record),
37
+ branch: requiredString(FORGE_STATUS_METHOD, record, "branch"),
38
+ };
39
+ }
40
+ function createPRRequest(request) {
41
+ const record = requestRecord(FORGE_PR_CREATE_METHOD, request);
42
+ const parsed = {
43
+ remote_urls: remoteURLs(FORGE_PR_CREATE_METHOD, record),
44
+ head: requiredString(FORGE_PR_CREATE_METHOD, record, "head"),
45
+ base: requiredString(FORGE_PR_CREATE_METHOD, record, "base"),
46
+ title: requiredString(FORGE_PR_CREATE_METHOD, record, "title"),
47
+ };
48
+ if (record.body !== undefined) {
49
+ if (typeof record.body !== "string") {
50
+ throw new InvalidParamsError(`${FORGE_PR_CREATE_METHOD} body must be a string`);
51
+ }
52
+ parsed.body = record.body;
53
+ }
54
+ if (record.draft !== undefined) {
55
+ if (typeof record.draft !== "boolean") {
56
+ throw new InvalidParamsError(`${FORGE_PR_CREATE_METHOD} draft must be a boolean`);
57
+ }
58
+ parsed.draft = record.draft;
59
+ }
60
+ return parsed;
61
+ }
62
+ export function registerForgeProvider(extension, handlers) {
63
+ if (!extension) {
64
+ throw new Error("extension is required");
65
+ }
66
+ if (typeof handlers?.capabilities !== "function" ||
67
+ typeof handlers.status !== "function" ||
68
+ typeof handlers.createPR !== "function") {
69
+ throw new Error("forge provider handlers are required");
70
+ }
71
+ return extension[registerProvideSurface](FORGE_PROVIDER_CAPABILITY, [
72
+ {
73
+ method: FORGE_CAPABILITIES_METHOD,
74
+ handler: async (context, request) => await handlers.capabilities(context, capabilitiesRequest(request)),
75
+ },
76
+ {
77
+ method: FORGE_STATUS_METHOD,
78
+ handler: async (context, request) => await handlers.status(context, statusRequest(request)),
79
+ },
80
+ {
81
+ method: FORGE_PR_CREATE_METHOD,
82
+ handler: async (context, request) => await handlers.createPR(context, createPRRequest(request)),
83
+ },
84
+ ]);
85
+ }
86
+ //# sourceMappingURL=forge-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-provider.js","sourceRoot":"","sources":["../../src/forge-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAUxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAC1D,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAiBxD,SAAS,aAAa,CAAC,MAAc,EAAE,OAAgB;IACrD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,kBAAkB,CAAC,GAAG,MAAM,2BAA2B,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,OAAkC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,OAAgC,EAAE,KAAa;IACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,kBAAkB,CAAC,GAAG,MAAM,yBAAyB,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,OAAgC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IACnC,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5E,CAAC;QACD,MAAM,IAAI,kBAAkB,CAAC,GAAG,MAAM,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IACjE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,yBAAyB,EAAE,MAAM,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO;QACL,WAAW,EAAE,UAAU,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACpD,MAAM,EAAE,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAyB;QACnC,WAAW,EAAE,UAAU,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACvD,IAAI,EAAE,cAAc,CAAC,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;QAC5D,IAAI,EAAE,cAAc,CAAC,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;QAC5D,KAAK,EAAE,cAAc,CAAC,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC;KAC/D,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,kBAAkB,CAAC,GAAG,sBAAsB,wBAAwB,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,kBAAkB,CAAC,GAAG,sBAAsB,0BAA0B,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAoB,EACpB,QAA+B;IAE/B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,IACE,OAAO,QAAQ,EAAE,YAAY,KAAK,UAAU;QAC5C,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU;QACrC,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,SAAS,CAAC,sBAAsB,CAAC,CAAC,yBAAyB,EAAE;QAClE;YACE,MAAM,EAAE,yBAAyB;YACjC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAClC,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;SACrE;QACD;YACE,MAAM,EAAE,mBAAmB;YAC3B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;SAC5F;QACD;YACE,MAAM,EAAE,sBAAsB;YAC9B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAClC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;SAC7D;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -5,6 +5,7 @@ export const REQUIRED_METHODS_BY_PROVIDE = {
5
5
  "connectivity/status",
6
6
  "connectivity/teardown",
7
7
  ],
8
+ "forge.provider": ["forge/capabilities", "forge/pr_create", "forge/status"],
8
9
  "loop.watch_source": ["watch/poll"],
9
10
  "memory.backend": ["memory/forget", "memory/recall", "memory/store"],
10
11
  "model.source": ["models/list"],
@@ -15,6 +16,7 @@ export const PUBLIC_PROVIDE_CONFORMANCE_FIXTURES = [
15
16
  provide: "connectivity.provider",
16
17
  required_methods: REQUIRED_METHODS_BY_PROVIDE["connectivity.provider"],
17
18
  },
19
+ { provide: "forge.provider", required_methods: REQUIRED_METHODS_BY_PROVIDE["forge.provider"] },
18
20
  {
19
21
  provide: "loop.watch_source",
20
22
  required_methods: REQUIRED_METHODS_BY_PROVIDE["loop.watch_source"],
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/generated/contracts.ts"],"names":[],"mappings":"AA2jOA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;IACjE,uBAAuB,EAAE;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,uBAAuB;KACxB;IACD,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,gBAAgB,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC;IACpE,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;CACc,CAAC;AAOjE,MAAM,CAAC,MAAM,mCAAmC,GAAyC;IACvF;QACE,OAAO,EAAE,uBAAuB;QAChC,gBAAgB,EAAE,2BAA2B,CAAC,uBAAuB,CAAC;KACvE;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,gBAAgB,EAAE,2BAA2B,CAAC,mBAAmB,CAAC;KACnE;IACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,EAAE;IAC9F,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,cAAc,CAAC,EAAE;IAC1F,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,eAAe,CAAC,EAAE;CAC7F,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/generated/contracts.ts"],"names":[],"mappings":"AA+zOA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;IACjE,uBAAuB,EAAE;QACvB,wBAAwB;QACxB,qBAAqB;QACrB,uBAAuB;KACxB;IACD,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,CAAC;IAC3E,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,gBAAgB,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC;IACpE,cAAc,EAAE,CAAC,aAAa,CAAC;IAC/B,eAAe,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;CACc,CAAC;AAOjE,MAAM,CAAC,MAAM,mCAAmC,GAAyC;IACvF;QACE,OAAO,EAAE,uBAAuB;QAChC,gBAAgB,EAAE,2BAA2B,CAAC,uBAAuB,CAAC;KACvE;IACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,EAAE;IAC9F;QACE,OAAO,EAAE,mBAAmB;QAC5B,gBAAgB,EAAE,2BAA2B,CAAC,mBAAmB,CAAC;KACnE;IACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,EAAE;IAC9F,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,cAAc,CAAC,EAAE;IAC1F,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,eAAe,CAAC,EAAE;CAC7F,CAAC"}
package/dist/esm/index.js CHANGED
@@ -3,5 +3,6 @@ export { HostAPI } from "./host-api.js";
3
3
  export { DEFAULT_MAX_MESSAGE_BYTES, JSON_RPC_VERSION, NotReadyTransport, StdioTransport, } from "./transport.js";
4
4
  export { CapabilityDeniedError, InternalError, InvalidParamsError, InvalidRequestError, MethodNotFoundError, NotInitializedError, ParseError, RateLimitedError, RPCError, ShutdownInProgressError, ToolExecutionError, ensureRPCError, errorFromObject, isRPCError, } from "./errors.js";
5
5
  export { CONNECTIVITY_ESTABLISH_METHOD, CONNECTIVITY_PROVIDER_CAPABILITY, CONNECTIVITY_STATUS_METHOD, CONNECTIVITY_TEARDOWN_METHOD, registerConnectivityProvider, } from "./connectivity-provider.js";
6
+ export { FORGE_CAPABILITIES_METHOD, FORGE_PR_CREATE_METHOD, FORGE_PROVIDER_CAPABILITY, FORGE_STATUS_METHOD, registerForgeProvider, } from "./forge-provider.js";
6
7
  export { canonicalJSON, schemaDigest } from "./schema-digest.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Extension } from "./extension.js";
2
+ import type { ExtensionContext } from "./extension-contract.js";
3
+ import type { ForgeCapabilitiesRequest, ForgeCapabilitiesResponse, ForgePRCreateRequest, ForgePRCreateResponse, ForgeStatusRequest, ForgeStatusResponse } from "./types.js";
4
+ export declare const FORGE_PROVIDER_CAPABILITY = "forge.provider";
5
+ export declare const FORGE_CAPABILITIES_METHOD = "forge/capabilities";
6
+ export declare const FORGE_STATUS_METHOD = "forge/status";
7
+ export declare const FORGE_PR_CREATE_METHOD = "forge/pr_create";
8
+ export interface ForgeProviderHandlers {
9
+ capabilities: (context: ExtensionContext, request: ForgeCapabilitiesRequest) => Promise<ForgeCapabilitiesResponse> | ForgeCapabilitiesResponse;
10
+ status: (context: ExtensionContext, request: ForgeStatusRequest) => Promise<ForgeStatusResponse> | ForgeStatusResponse;
11
+ createPR: (context: ExtensionContext, request: ForgePRCreateRequest) => Promise<ForgePRCreateResponse> | ForgePRCreateResponse;
12
+ }
13
+ export declare function registerForgeProvider(extension: Extension, handlers: ForgeProviderHandlers): Extension;
14
+ //# sourceMappingURL=forge-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-provider.d.ts","sourceRoot":"","sources":["../../src/forge-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAC1D,eAAO,MAAM,yBAAyB,uBAAuB,CAAC;AAC9D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAClD,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,CACZ,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;IACpE,MAAM,EAAE,CACN,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;IACxD,QAAQ,EAAE,CACR,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,oBAAoB,KAC1B,OAAO,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;CAC7D;AAiED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,qBAAqB,GAC9B,SAAS,CA2BX"}