@dotcraft/sdk 0.5.9

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 (139) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +30 -0
  3. package/dist/app-binding.d.ts +4 -0
  4. package/dist/app-binding.d.ts.map +1 -0
  5. package/dist/app-binding.js +2 -0
  6. package/dist/app-binding.js.map +1 -0
  7. package/dist/appServerClient.d.ts +66 -0
  8. package/dist/appServerClient.d.ts.map +1 -0
  9. package/dist/appServerClient.js +140 -0
  10. package/dist/appServerClient.js.map +1 -0
  11. package/dist/client.d.ts +90 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +418 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/client.test.d.ts +2 -0
  16. package/dist/client.test.d.ts.map +1 -0
  17. package/dist/client.test.js +244 -0
  18. package/dist/client.test.js.map +1 -0
  19. package/dist/contracts.d.ts +5 -0
  20. package/dist/contracts.d.ts.map +1 -0
  21. package/dist/contracts.js +5 -0
  22. package/dist/contracts.js.map +1 -0
  23. package/dist/dotcraft.d.ts +331 -0
  24. package/dist/dotcraft.d.ts.map +1 -0
  25. package/dist/dotcraft.js +819 -0
  26. package/dist/dotcraft.js.map +1 -0
  27. package/dist/dotcraft.test.d.ts +2 -0
  28. package/dist/dotcraft.test.d.ts.map +1 -0
  29. package/dist/dotcraft.test.js +423 -0
  30. package/dist/dotcraft.test.js.map +1 -0
  31. package/dist/dynamic-tools.d.ts +3 -0
  32. package/dist/dynamic-tools.d.ts.map +1 -0
  33. package/dist/dynamic-tools.js +2 -0
  34. package/dist/dynamic-tools.js.map +1 -0
  35. package/dist/errors.d.ts +50 -0
  36. package/dist/errors.d.ts.map +1 -0
  37. package/dist/errors.js +112 -0
  38. package/dist/errors.js.map +1 -0
  39. package/dist/generated/appserver/client-notifications.generated.d.ts +9 -0
  40. package/dist/generated/appserver/client-notifications.generated.d.ts.map +1 -0
  41. package/dist/generated/appserver/client-notifications.generated.js +3 -0
  42. package/dist/generated/appserver/client-notifications.generated.js.map +1 -0
  43. package/dist/generated/appserver/client-requests.generated.d.ts +785 -0
  44. package/dist/generated/appserver/client-requests.generated.d.ts.map +1 -0
  45. package/dist/generated/appserver/client-requests.generated.js +3 -0
  46. package/dist/generated/appserver/client-requests.generated.js.map +1 -0
  47. package/dist/generated/appserver/index.d.ts +9 -0
  48. package/dist/generated/appserver/index.d.ts.map +1 -0
  49. package/dist/generated/appserver/index.js +10 -0
  50. package/dist/generated/appserver/index.js.map +1 -0
  51. package/dist/generated/appserver/item-payloads.generated.d.ts +52 -0
  52. package/dist/generated/appserver/item-payloads.generated.d.ts.map +1 -0
  53. package/dist/generated/appserver/item-payloads.generated.js +35 -0
  54. package/dist/generated/appserver/item-payloads.generated.js.map +1 -0
  55. package/dist/generated/appserver/method-groups.generated.d.ts +8 -0
  56. package/dist/generated/appserver/method-groups.generated.d.ts.map +1 -0
  57. package/dist/generated/appserver/method-groups.generated.js +274 -0
  58. package/dist/generated/appserver/method-groups.generated.js.map +1 -0
  59. package/dist/generated/appserver/models.generated.d.ts +4415 -0
  60. package/dist/generated/appserver/models.generated.d.ts.map +1 -0
  61. package/dist/generated/appserver/models.generated.js +3 -0
  62. package/dist/generated/appserver/models.generated.js.map +1 -0
  63. package/dist/generated/appserver/protocol-info.generated.d.ts +6 -0
  64. package/dist/generated/appserver/protocol-info.generated.d.ts.map +1 -0
  65. package/dist/generated/appserver/protocol-info.generated.js +7 -0
  66. package/dist/generated/appserver/protocol-info.generated.js.map +1 -0
  67. package/dist/generated/appserver/server-notifications.generated.d.ts +197 -0
  68. package/dist/generated/appserver/server-notifications.generated.d.ts.map +1 -0
  69. package/dist/generated/appserver/server-notifications.generated.js +3 -0
  70. package/dist/generated/appserver/server-notifications.generated.js.map +1 -0
  71. package/dist/generated/appserver/server-requests.generated.d.ts +73 -0
  72. package/dist/generated/appserver/server-requests.generated.d.ts.map +1 -0
  73. package/dist/generated/appserver/server-requests.generated.js +3 -0
  74. package/dist/generated/appserver/server-requests.generated.js.map +1 -0
  75. package/dist/generatedAppServer.test.d.ts +2 -0
  76. package/dist/generatedAppServer.test.d.ts.map +1 -0
  77. package/dist/generatedAppServer.test.js +112 -0
  78. package/dist/generatedAppServer.test.js.map +1 -0
  79. package/dist/hub.d.ts +6 -0
  80. package/dist/hub.d.ts.map +1 -0
  81. package/dist/hub.js +5 -0
  82. package/dist/hub.js.map +1 -0
  83. package/dist/hubClient.d.ts +134 -0
  84. package/dist/hubClient.d.ts.map +1 -0
  85. package/dist/hubClient.js +372 -0
  86. package/dist/hubClient.js.map +1 -0
  87. package/dist/hubClient.test.d.ts +2 -0
  88. package/dist/hubClient.test.d.ts.map +1 -0
  89. package/dist/hubClient.test.js +220 -0
  90. package/dist/hubClient.test.js.map +1 -0
  91. package/dist/index.d.ts +7 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +5 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/meta.d.ts +2 -0
  96. package/dist/meta.d.ts.map +1 -0
  97. package/dist/meta.js +2 -0
  98. package/dist/meta.js.map +1 -0
  99. package/dist/models.d.ts +44 -0
  100. package/dist/models.d.ts.map +1 -0
  101. package/dist/models.js +96 -0
  102. package/dist/models.js.map +1 -0
  103. package/dist/protocolBaseline.test.d.ts +2 -0
  104. package/dist/protocolBaseline.test.d.ts.map +1 -0
  105. package/dist/protocolBaseline.test.js +77 -0
  106. package/dist/protocolBaseline.test.js.map +1 -0
  107. package/dist/publicApi.test.d.ts +2 -0
  108. package/dist/publicApi.test.d.ts.map +1 -0
  109. package/dist/publicApi.test.js +29 -0
  110. package/dist/publicApi.test.js.map +1 -0
  111. package/dist/test-contract-fixtures.d.ts +6 -0
  112. package/dist/test-contract-fixtures.d.ts.map +1 -0
  113. package/dist/test-contract-fixtures.js +33 -0
  114. package/dist/test-contract-fixtures.js.map +1 -0
  115. package/dist/testing.d.ts +3 -0
  116. package/dist/testing.d.ts.map +1 -0
  117. package/dist/testing.js +3 -0
  118. package/dist/testing.js.map +1 -0
  119. package/dist/transport.d.ts +54 -0
  120. package/dist/transport.d.ts.map +1 -0
  121. package/dist/transport.js +214 -0
  122. package/dist/transport.js.map +1 -0
  123. package/dist/transport.test.d.ts +2 -0
  124. package/dist/transport.test.d.ts.map +1 -0
  125. package/dist/transport.test.js +105 -0
  126. package/dist/transport.test.js.map +1 -0
  127. package/dist/turnReply.d.ts +25 -0
  128. package/dist/turnReply.d.ts.map +1 -0
  129. package/dist/turnReply.js +143 -0
  130. package/dist/turnReply.js.map +1 -0
  131. package/dist/turnReply.test.d.ts +2 -0
  132. package/dist/turnReply.test.d.ts.map +1 -0
  133. package/dist/turnReply.test.js +41 -0
  134. package/dist/turnReply.test.js.map +1 -0
  135. package/dist/wire.d.ts +8 -0
  136. package/dist/wire.d.ts.map +1 -0
  137. package/dist/wire.js +6 -0
  138. package/dist/wire.js.map +1 -0
  139. package/package.json +102 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ /** Curated high-level DotCraft SDK API. */
2
+ export { DotCraft, DotCraftThread } from "./dotcraft.js";
3
+ export { ApprovalTimeoutError, DotCraftError, InitializationError, ProtocolViolationError, RunDisconnectedError, ThreadNotActiveError, ThreadNotFoundError, TurnCancelledError, TurnFailedError, TurnInProgressError, } from "./errors.js";
4
+ export { DECISION_ACCEPT, DECISION_ACCEPT_ALWAYS, DECISION_ACCEPT_FOR_SESSION, DECISION_CANCEL, DECISION_DECLINE, commandRefPart, fileRefPart, imageDataUrlPart, localImagePart, skillRefPart, textPart, } from "./models.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA4BzD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,QAAQ,GACT,MAAM,aAAa,CAAC"}
package/dist/meta.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { APPSERVER_PROTOCOL_VERSION, CONTRACT_SHA256, CONTRACT_VERSION, SDK_VERSION, } from "./generated/appserver/protocol-info.generated.js";
2
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,kDAAkD,CAAC"}
package/dist/meta.js ADDED
@@ -0,0 +1,2 @@
1
+ export { APPSERVER_PROTOCOL_VERSION, CONTRACT_SHA256, CONTRACT_VERSION, SDK_VERSION, } from "./generated/appserver/protocol-info.generated.js";
2
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,kDAAkD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Wire DTO models for the DotCraft AppServer Wire Protocol.
3
+ */
4
+ import type { InputPart } from "./generated/appserver/index.js";
5
+ /** Parsed JSON-RPC 2.0 message. */
6
+ export declare class JsonRpcMessage {
7
+ method?: string | null;
8
+ id?: number | string | null;
9
+ params?: Record<string, unknown> | null;
10
+ result?: any;
11
+ error?: {
12
+ code?: number;
13
+ message?: string;
14
+ data?: unknown;
15
+ } | null;
16
+ constructor(init?: Partial<JsonRpcMessage>);
17
+ get isRequest(): boolean;
18
+ get isNotification(): boolean;
19
+ get isResponse(): boolean;
20
+ static fromDict(data: Record<string, unknown>): JsonRpcMessage;
21
+ toDict(): Record<string, unknown>;
22
+ }
23
+ export declare function textPart(text: string): InputPart;
24
+ export declare function imageDataUrlPart(dataUrl: string): InputPart;
25
+ export declare function localImagePart(path: string): InputPart;
26
+ export declare function skillRefPart(name: string): InputPart;
27
+ export declare function commandRefPart(rawText: string): InputPart;
28
+ export declare function fileRefPart(path: string, displayPath?: string): InputPart;
29
+ export declare const DECISION_ACCEPT = "accept";
30
+ export declare const DECISION_ACCEPT_FOR_SESSION = "acceptForSession";
31
+ export declare const DECISION_ACCEPT_ALWAYS = "acceptAlways";
32
+ export declare const DECISION_DECLINE = "decline";
33
+ export declare const DECISION_CANCEL = "cancel";
34
+ export declare const ERR_NOT_INITIALIZED = -32002;
35
+ export declare const ERR_ALREADY_INITIALIZED = -32003;
36
+ export declare const ERR_THREAD_NOT_FOUND = -32010;
37
+ export declare const ERR_THREAD_NOT_ACTIVE = -32011;
38
+ export declare const ERR_TURN_IN_PROGRESS = -32012;
39
+ export declare const ERR_TURN_NOT_FOUND = -32013;
40
+ export declare const ERR_TURN_NOT_RUNNING = -32014;
41
+ export declare const ERR_APPROVAL_TIMEOUT = -32020;
42
+ export declare const ERR_CHANNEL_REJECTED = -32030;
43
+ export declare const ERR_CRON_NOT_FOUND = -32031;
44
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,mCAAmC;AACnC,qBAAa,cAAc;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAExC,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;gBAEvD,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAI1C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IAU9D,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CASlC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAE3D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEtD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAYzD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAMzE;AAED,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,2BAA2B,qBAAqB,CAAC;AAC9D,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AACrD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,eAAe,WAAW,CAAC;AAExC,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAC9C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAC5C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,SAAS,CAAC"}
package/dist/models.js ADDED
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Wire DTO models for the DotCraft AppServer Wire Protocol.
3
+ */
4
+ /** Parsed JSON-RPC 2.0 message. */
5
+ export class JsonRpcMessage {
6
+ method;
7
+ id;
8
+ params;
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ result;
11
+ error;
12
+ constructor(init) {
13
+ if (init)
14
+ Object.assign(this, init);
15
+ }
16
+ get isRequest() {
17
+ return this.id != null && this.method != null;
18
+ }
19
+ get isNotification() {
20
+ return this.id == null && this.method != null;
21
+ }
22
+ get isResponse() {
23
+ return this.id != null && this.method == null;
24
+ }
25
+ static fromDict(data) {
26
+ return new JsonRpcMessage({
27
+ method: data.method,
28
+ id: data.id,
29
+ params: data.params ?? null,
30
+ result: data.result,
31
+ error: data.error,
32
+ });
33
+ }
34
+ toDict() {
35
+ const out = { jsonrpc: "2.0" };
36
+ if (this.id != null)
37
+ out.id = this.id;
38
+ if (this.method != null && this.method !== undefined)
39
+ out.method = this.method;
40
+ if (this.params != null)
41
+ out.params = this.params;
42
+ if (this.result !== undefined)
43
+ out.result = this.result;
44
+ if (this.error != null)
45
+ out.error = this.error;
46
+ return out;
47
+ }
48
+ }
49
+ export function textPart(text) {
50
+ return { type: "text", text };
51
+ }
52
+ export function imageDataUrlPart(dataUrl) {
53
+ return { type: "image", url: dataUrl };
54
+ }
55
+ export function localImagePart(path) {
56
+ return { type: "localImage", path };
57
+ }
58
+ export function skillRefPart(name) {
59
+ return { type: "skillRef", name };
60
+ }
61
+ export function commandRefPart(rawText) {
62
+ const normalized = rawText.trim();
63
+ const firstSpace = normalized.search(/\s/);
64
+ const token = firstSpace >= 0 ? normalized.slice(0, firstSpace) : normalized;
65
+ const name = token.replace(/^\//, "");
66
+ const argsText = firstSpace >= 0 ? normalized.slice(firstSpace + 1).trim() : "";
67
+ return {
68
+ type: "commandRef",
69
+ name,
70
+ rawText: normalized,
71
+ ...(argsText ? { argsText } : {}),
72
+ };
73
+ }
74
+ export function fileRefPart(path, displayPath) {
75
+ return {
76
+ type: "fileRef",
77
+ path,
78
+ ...(displayPath ? { displayPath } : {}),
79
+ };
80
+ }
81
+ export const DECISION_ACCEPT = "accept";
82
+ export const DECISION_ACCEPT_FOR_SESSION = "acceptForSession";
83
+ export const DECISION_ACCEPT_ALWAYS = "acceptAlways";
84
+ export const DECISION_DECLINE = "decline";
85
+ export const DECISION_CANCEL = "cancel";
86
+ export const ERR_NOT_INITIALIZED = -32002;
87
+ export const ERR_ALREADY_INITIALIZED = -32003;
88
+ export const ERR_THREAD_NOT_FOUND = -32010;
89
+ export const ERR_THREAD_NOT_ACTIVE = -32011;
90
+ export const ERR_TURN_IN_PROGRESS = -32012;
91
+ export const ERR_TURN_NOT_FOUND = -32013;
92
+ export const ERR_TURN_NOT_RUNNING = -32014;
93
+ export const ERR_APPROVAL_TIMEOUT = -32020;
94
+ export const ERR_CHANNEL_REJECTED = -32030;
95
+ export const ERR_CRON_NOT_FOUND = -32031;
96
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocolBaseline.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolBaseline.test.d.ts","sourceRoot":"","sources":["../src/protocolBaseline.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ import assert from "node:assert/strict";
2
+ import { readFileSync } from "node:fs";
3
+ import test from "node:test";
4
+ import { DotCraftWireClient } from "./client.js";
5
+ import { TransportClosed } from "./transport.js";
6
+ class FixtureTransport {
7
+ queued = [];
8
+ readers = [];
9
+ closed = false;
10
+ push(message) {
11
+ const reader = this.readers.shift();
12
+ if (reader)
13
+ reader(message);
14
+ else
15
+ this.queued.push(message);
16
+ }
17
+ async readMessage() {
18
+ if (this.closed)
19
+ throw new TransportClosed();
20
+ const message = this.queued.shift();
21
+ if (message)
22
+ return message;
23
+ return await new Promise((resolve) => this.readers.push(resolve));
24
+ }
25
+ async writeMessage(_message) { }
26
+ async close() {
27
+ this.closed = true;
28
+ }
29
+ }
30
+ const fixtures = JSON.parse(readFileSync(new URL("../../../specs/protocols/fixtures/appserver-v1/messages.json", import.meta.url), "utf8"));
31
+ function fixtureCase(name) {
32
+ const value = fixtures.cases.find((item) => item.name === name);
33
+ assert.ok(value, `missing fixture case: ${name}`);
34
+ return value;
35
+ }
36
+ test("shared AppServer fixtures expose portable lifecycle and callback cases", () => {
37
+ assert.equal(fixtures.version, 1);
38
+ for (const name of [
39
+ "initialize",
40
+ "thread-start-response-before-notification",
41
+ "turn-start-and-complete",
42
+ "approval-callback",
43
+ "user-input-callback",
44
+ "dynamic-tool-callback",
45
+ "structured-error",
46
+ "opaque-mcp-result",
47
+ "core-domain-catalog",
48
+ "mcp-elicitation-callback",
49
+ "app-binding",
50
+ "automation",
51
+ "teams",
52
+ "acp-callbacks",
53
+ "node-repl-callback",
54
+ "external-channel",
55
+ ]) {
56
+ assert.ok(fixtureCase(name).messages.length > 0);
57
+ }
58
+ });
59
+ test("wire client preserves the shared unknown-notification fixture", async () => {
60
+ const transport = new FixtureTransport();
61
+ const client = new DotCraftWireClient(transport);
62
+ await client.start();
63
+ const received = new Promise((resolve) => {
64
+ client.onRaw("fixture/unknownNotification", resolve);
65
+ });
66
+ transport.push(fixtureCase("unknown-notification").messages[0]);
67
+ const params = await received;
68
+ assert.equal(params.preserveMe, true);
69
+ assert.deepEqual(params.future, { nested: [1, "two", null] });
70
+ await client.stop();
71
+ });
72
+ test("raw TypeScript consumers retain opaque MCP fields", () => {
73
+ const result = fixtureCase("opaque-mcp-result").messages[1].result;
74
+ assert.deepEqual(result.futureResultField, { kept: true });
75
+ assert.deepEqual(result.structuredContent, { count: 1, futureShape: ["kept"] });
76
+ });
77
+ //# sourceMappingURL=protocolBaseline.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolBaseline.test.js","sourceRoot":"","sources":["../src/protocolBaseline.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAkB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAYjE,MAAM,gBAAgB;IACH,MAAM,GAA8B,EAAE,CAAC;IACvC,OAAO,GAAsD,EAAE,CAAC;IACzE,MAAM,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,OAAgC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM;YAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,eAAe,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAiC,IAAkB,CAAC;IAEvE,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,YAAY,CACV,IAAI,GAAG,CAAC,8DAA8D,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACxF,MAAM,CACP,CACiB,CAAC;AAErB,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI;QACjB,YAAY;QACZ,2CAA2C;QAC3C,yBAAyB;QACzB,mBAAmB;QACnB,qBAAqB;QACrB,uBAAuB;QACvB,kBAAkB;QAClB,mBAAmB;QACnB,qBAAqB;QACrB,0BAA0B;QAC1B,aAAa;QACb,YAAY;QACZ,OAAO;QACP,eAAe;QACf,oBAAoB;QACpB,kBAAkB;KACnB,EAAE,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;IAC/E,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAErB,MAAM,QAAQ,GAAG,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,EAAE;QAChE,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;IAC9B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAiC,CAAC;IAC9F,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=publicApi.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicApi.test.d.ts","sourceRoot":"","sources":["../src/publicApi.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ test("documented SDK entry points are importable and curated", async () => {
4
+ const [root, contracts, wire, hub, appBinding, dynamicTools, testing, meta] = await Promise.all([
5
+ import("@dotcraft/sdk"),
6
+ import("@dotcraft/sdk/contracts"),
7
+ import("@dotcraft/sdk/wire"),
8
+ import("@dotcraft/sdk/hub"),
9
+ import("@dotcraft/sdk/app-binding"),
10
+ import("@dotcraft/sdk/dynamic-tools"),
11
+ import("@dotcraft/sdk/testing"),
12
+ import("@dotcraft/sdk/meta"),
13
+ ]);
14
+ assert.equal(typeof root.DotCraft, "function");
15
+ assert.equal("InternalAppServerClient" in root, false);
16
+ assert.equal("DotCraftWireClient" in root, false);
17
+ assert.equal(typeof contracts.CONTRACT_VERSION, "string");
18
+ assert.equal("SessionThread" in wire, false);
19
+ assert.equal("mergeReplyTextFromDeltaAndSnapshot" in wire, false);
20
+ assert.equal(typeof wire.DotCraftWireClient, "function");
21
+ assert.ok(hub && appBinding && dynamicTools && testing);
22
+ assert.equal(typeof meta.SDK_VERSION, "string");
23
+ });
24
+ test("removed SDK subpaths are not exported", async () => {
25
+ for (const specifier of ["@dotcraft/sdk/appserver", "@dotcraft/sdk/channel"]) {
26
+ await assert.rejects(import(specifier), (error) => error instanceof Error && "code" in error && error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED");
27
+ }
28
+ });
29
+ //# sourceMappingURL=publicApi.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicApi.test.js","sourceRoot":"","sources":["../src/publicApi.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACxE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9F,MAAM,CAAC,eAAe,CAAC;QACvB,MAAM,CAAC,yBAAyB,CAAC;QACjC,MAAM,CAAC,oBAAoB,CAAC;QAC5B,MAAM,CAAC,mBAAmB,CAAC;QAC3B,MAAM,CAAC,2BAA2B,CAAC;QACnC,MAAM,CAAC,6BAA6B,CAAC;QACrC,MAAM,CAAC,uBAAuB,CAAC;QAC/B,MAAM,CAAC,oBAAoB,CAAC;KAC7B,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;IAClE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,UAAU,IAAI,YAAY,IAAI,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AACH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACvD,KAAK,MAAM,SAAS,IAAI,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,EAAE,CAAC;QAC7E,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAc,EAAE,EAAE,CACzD,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,CAAC,CAAC;IACjG,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ServerCapabilities, ServerInfo, SessionThread, SessionTurn } from "./generated/appserver/index.js";
2
+ export declare function makeThread(id: string, status: string, workspacePath?: string, userId?: string, originChannel?: string): SessionThread;
3
+ export declare function makeTurn(id: string, threadId: string, status: string): SessionTurn;
4
+ export declare function makeServerInfo(name: string, version: string, protocolVersion: string): ServerInfo;
5
+ export declare function makeServerCapabilities(): ServerCapabilities;
6
+ //# sourceMappingURL=test-contract-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-contract-fixtures.d.ts","sourceRoot":"","sources":["../src/test-contract-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,aAAa,SAAK,EAClB,MAAM,SAAK,EACX,aAAa,SAAQ,GACpB,aAAa,CAsBf;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAElF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,UAAU,CAEjG;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,CAE3D"}
@@ -0,0 +1,33 @@
1
+ export function makeThread(id, status, workspacePath = "", userId = "", originChannel = "sdk") {
2
+ const now = "2026-01-01T00:00:00.000Z";
3
+ return {
4
+ id,
5
+ status,
6
+ workspacePath,
7
+ effectiveWorkspacePath: workspacePath,
8
+ cwd: workspacePath,
9
+ userId,
10
+ originChannel,
11
+ createdAt: now,
12
+ lastActiveAt: now,
13
+ ephemeral: false,
14
+ historyMode: "server",
15
+ metadata: {},
16
+ queuedInputs: [],
17
+ runtime: {},
18
+ runtimeWorkspaceRoots: [],
19
+ sessionId: id,
20
+ source: { kind: "test" },
21
+ worktree: null,
22
+ };
23
+ }
24
+ export function makeTurn(id, threadId, status) {
25
+ return { id, threadId, status, startedAt: "2026-01-01T00:00:00.000Z" };
26
+ }
27
+ export function makeServerInfo(name, version, protocolVersion) {
28
+ return { name, version, protocolVersion };
29
+ }
30
+ export function makeServerCapabilities() {
31
+ return { protocolVersion: "1", version: "1", threadManagement: true, threadSubscriptions: true };
32
+ }
33
+ //# sourceMappingURL=test-contract-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-contract-fixtures.js","sourceRoot":"","sources":["../src/test-contract-fixtures.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,UAAU,CACxB,EAAU,EACV,MAAc,EACd,aAAa,GAAG,EAAE,EAClB,MAAM,GAAG,EAAE,EACX,aAAa,GAAG,KAAK;IAErB,MAAM,GAAG,GAAG,0BAA0B,CAAC;IACvC,OAAO;QACL,EAAE;QACF,MAAM;QACN,aAAa;QACb,sBAAsB,EAAE,aAAa;QACrC,GAAG,EAAE,aAAa;QAClB,MAAM;QACN,aAAa;QACb,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,qBAAqB,EAAE,EAAE;QACzB,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QACxB,QAAQ,EAAE,IAAI;KACE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU,EAAE,QAAgB,EAAE,MAAc;IACnE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe,EAAE,eAAuB;IACnF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;AACnG,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** SDK transport and protocol test surface. */
2
+ export { JsonRpcMessage } from "./models.js";
3
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** SDK transport and protocol test surface. */
2
+ export { JsonRpcMessage } from "./models.js";
3
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Transport layer: StdioTransport and WebSocketTransport.
3
+ */
4
+ export declare class TransportError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export declare class TransportClosed extends TransportError {
8
+ constructor(message?: string);
9
+ }
10
+ /** Abstract transport that reads/writes JSON-RPC messages. */
11
+ export interface Transport {
12
+ readMessage(): Promise<Record<string, unknown>>;
13
+ writeMessage(msg: Record<string, unknown>): Promise<void>;
14
+ close(): Promise<void>;
15
+ }
16
+ /**
17
+ * Newline-delimited JSON (JSONL) on stdin/stdout.
18
+ * Used when DotCraft spawns the adapter as a subprocess.
19
+ */
20
+ export declare class StdioTransport implements Transport {
21
+ private closed;
22
+ private readonly rl;
23
+ private lineIter;
24
+ constructor();
25
+ readMessage(): Promise<Record<string, unknown>>;
26
+ writeMessage(msg: Record<string, unknown>): Promise<void>;
27
+ close(): Promise<void>;
28
+ }
29
+ export interface WebSocketTransportOptions {
30
+ url: string;
31
+ token?: string | null;
32
+ }
33
+ /**
34
+ * One JSON-RPC message per WebSocket text frame.
35
+ */
36
+ export declare class WebSocketTransport implements Transport {
37
+ private readonly baseUrl;
38
+ private readonly token;
39
+ private ws;
40
+ private closed;
41
+ private receivedFrames;
42
+ private waitingReaders;
43
+ private terminalError;
44
+ constructor(opts: WebSocketTransportOptions);
45
+ private get urlWithToken();
46
+ connect(): Promise<void>;
47
+ readMessage(): Promise<Record<string, unknown>>;
48
+ writeMessage(msg: Record<string, unknown>): Promise<void>;
49
+ close(): Promise<void>;
50
+ private attachSocketHandlers;
51
+ private rejectWaitingReaders;
52
+ private rawDataToUtf8;
53
+ }
54
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,OAAO,SAAqB;CAIzC;AAED,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqC;IACxD,OAAO,CAAC,QAAQ,CAAsC;;IAMhD,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAe/C,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,cAAc,CAGd;IACR,OAAO,CAAC,aAAa,CAAiB;gBAE1B,IAAI,EAAE,yBAAyB;IAK3C,OAAO,KAAK,YAAY,GAYvB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCxB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAe/C,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,aAAa;CAQtB"}