@contextvm/sdk 0.10.0 → 0.11.1

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 (79) hide show
  1. package/dist/esm/core/constants.d.ts +4 -0
  2. package/dist/esm/core/constants.d.ts.map +1 -1
  3. package/dist/esm/core/constants.js +4 -0
  4. package/dist/esm/core/constants.js.map +1 -1
  5. package/dist/esm/relay/applesauce-relay-pool.d.ts.map +1 -1
  6. package/dist/esm/relay/applesauce-relay-pool.js +14 -14
  7. package/dist/esm/relay/applesauce-relay-pool.js.map +1 -1
  8. package/dist/esm/transport/call-tool-stream.d.ts +21 -0
  9. package/dist/esm/transport/call-tool-stream.d.ts.map +1 -0
  10. package/dist/esm/transport/call-tool-stream.js +22 -0
  11. package/dist/esm/transport/call-tool-stream.js.map +1 -0
  12. package/dist/esm/transport/discovery-tags.d.ts +2 -0
  13. package/dist/esm/transport/discovery-tags.d.ts.map +1 -1
  14. package/dist/esm/transport/discovery-tags.js +1 -0
  15. package/dist/esm/transport/discovery-tags.js.map +1 -1
  16. package/dist/esm/transport/index.d.ts +3 -0
  17. package/dist/esm/transport/index.d.ts.map +1 -1
  18. package/dist/esm/transport/index.js +3 -0
  19. package/dist/esm/transport/index.js.map +1 -1
  20. package/dist/esm/transport/nostr-client-transport.d.ts +39 -1
  21. package/dist/esm/transport/nostr-client-transport.d.ts.map +1 -1
  22. package/dist/esm/transport/nostr-client-transport.js +171 -1
  23. package/dist/esm/transport/nostr-client-transport.js.map +1 -1
  24. package/dist/esm/transport/nostr-server/announcement-manager.d.ts.map +1 -1
  25. package/dist/esm/transport/nostr-server/announcement-manager.js +1 -1
  26. package/dist/esm/transport/nostr-server/announcement-manager.js.map +1 -1
  27. package/dist/esm/transport/nostr-server/correlation-store.d.ts +4 -2
  28. package/dist/esm/transport/nostr-server/correlation-store.d.ts.map +1 -1
  29. package/dist/esm/transport/nostr-server/correlation-store.js +11 -7
  30. package/dist/esm/transport/nostr-server/correlation-store.js.map +1 -1
  31. package/dist/esm/transport/nostr-server/session-store.d.ts +2 -0
  32. package/dist/esm/transport/nostr-server/session-store.d.ts.map +1 -1
  33. package/dist/esm/transport/nostr-server/session-store.js +1 -0
  34. package/dist/esm/transport/nostr-server/session-store.js.map +1 -1
  35. package/dist/esm/transport/nostr-server-transport.d.ts +21 -1
  36. package/dist/esm/transport/nostr-server-transport.d.ts.map +1 -1
  37. package/dist/esm/transport/nostr-server-transport.js +207 -21
  38. package/dist/esm/transport/nostr-server-transport.js.map +1 -1
  39. package/dist/esm/transport/open-stream/constants.d.ts +8 -0
  40. package/dist/esm/transport/open-stream/constants.d.ts.map +1 -0
  41. package/dist/esm/transport/open-stream/constants.js +8 -0
  42. package/dist/esm/transport/open-stream/constants.js.map +1 -0
  43. package/dist/esm/transport/open-stream/errors.d.ts +19 -0
  44. package/dist/esm/transport/open-stream/errors.d.ts.map +1 -0
  45. package/dist/esm/transport/open-stream/errors.js +31 -0
  46. package/dist/esm/transport/open-stream/errors.js.map +1 -0
  47. package/dist/esm/transport/open-stream/frames.d.ts +37 -0
  48. package/dist/esm/transport/open-stream/frames.d.ts.map +1 -0
  49. package/dist/esm/transport/open-stream/frames.js +91 -0
  50. package/dist/esm/transport/open-stream/frames.js.map +1 -0
  51. package/dist/esm/transport/open-stream/index.d.ts +9 -0
  52. package/dist/esm/transport/open-stream/index.d.ts.map +1 -0
  53. package/dist/esm/transport/open-stream/index.js +9 -0
  54. package/dist/esm/transport/open-stream/index.js.map +1 -0
  55. package/dist/esm/transport/open-stream/receiver.d.ts +18 -0
  56. package/dist/esm/transport/open-stream/receiver.d.ts.map +1 -0
  57. package/dist/esm/transport/open-stream/receiver.js +31 -0
  58. package/dist/esm/transport/open-stream/receiver.js.map +1 -0
  59. package/dist/esm/transport/open-stream/registry.d.ts +37 -0
  60. package/dist/esm/transport/open-stream/registry.d.ts.map +1 -0
  61. package/dist/esm/transport/open-stream/registry.js +115 -0
  62. package/dist/esm/transport/open-stream/registry.js.map +1 -0
  63. package/dist/esm/transport/open-stream/session.d.ts +80 -0
  64. package/dist/esm/transport/open-stream/session.d.ts.map +1 -0
  65. package/dist/esm/transport/open-stream/session.js +343 -0
  66. package/dist/esm/transport/open-stream/session.js.map +1 -0
  67. package/dist/esm/transport/open-stream/types.d.ts +52 -0
  68. package/dist/esm/transport/open-stream/types.d.ts.map +1 -0
  69. package/dist/esm/transport/open-stream/types.js +2 -0
  70. package/dist/esm/transport/open-stream/types.js.map +1 -0
  71. package/dist/esm/transport/open-stream/writer.d.ts +38 -0
  72. package/dist/esm/transport/open-stream/writer.d.ts.map +1 -0
  73. package/dist/esm/transport/open-stream/writer.js +123 -0
  74. package/dist/esm/transport/open-stream/writer.js.map +1 -0
  75. package/dist/esm/transport/open-stream-policy.d.ts +12 -0
  76. package/dist/esm/transport/open-stream-policy.d.ts.map +1 -0
  77. package/dist/esm/transport/open-stream-policy.js +2 -0
  78. package/dist/esm/transport/open-stream-policy.js.map +1 -0
  79. package/package.json +1 -1
@@ -0,0 +1,19 @@
1
+ /** Base class for all CEP-41 open-stream errors. */
2
+ export declare class OpenStreamError extends Error {
3
+ constructor(message: string);
4
+ }
5
+ /** Thrown when a stream is aborted locally or by the remote peer. */
6
+ export declare class OpenStreamAbortError extends OpenStreamError {
7
+ readonly progressToken: string;
8
+ readonly reason: string | undefined;
9
+ constructor(progressToken: string, reason?: string);
10
+ }
11
+ /** Thrown when a stream violates local admission or buffering policy. */
12
+ export declare class OpenStreamPolicyError extends OpenStreamError {
13
+ constructor(message: string);
14
+ }
15
+ /** Thrown when CEP-41 lifecycle or ordering rules are violated. */
16
+ export declare class OpenStreamSequenceError extends OpenStreamError {
17
+ constructor(message: string);
18
+ }
19
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/transport/open-stream/errors.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qEAAqE;AACrE,qBAAa,oBAAqB,SAAQ,eAAe;IACvD,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAMnD;AAED,yEAAyE;AACzE,qBAAa,qBAAsB,SAAQ,eAAe;gBAC5C,OAAO,EAAE,MAAM;CAI5B;AAED,mEAAmE;AACnE,qBAAa,uBAAwB,SAAQ,eAAe;gBAC9C,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,31 @@
1
+ /** Base class for all CEP-41 open-stream errors. */
2
+ export class OpenStreamError extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = 'OpenStreamError';
6
+ }
7
+ }
8
+ /** Thrown when a stream is aborted locally or by the remote peer. */
9
+ export class OpenStreamAbortError extends OpenStreamError {
10
+ constructor(progressToken, reason) {
11
+ super(`Open stream aborted${reason ? `: ${reason}` : ''}`);
12
+ this.name = 'OpenStreamAbortError';
13
+ this.progressToken = progressToken;
14
+ this.reason = reason;
15
+ }
16
+ }
17
+ /** Thrown when a stream violates local admission or buffering policy. */
18
+ export class OpenStreamPolicyError extends OpenStreamError {
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = 'OpenStreamPolicyError';
22
+ }
23
+ }
24
+ /** Thrown when CEP-41 lifecycle or ordering rules are violated. */
25
+ export class OpenStreamSequenceError extends OpenStreamError {
26
+ constructor(message) {
27
+ super(message);
28
+ this.name = 'OpenStreamSequenceError';
29
+ }
30
+ }
31
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/transport/open-stream/errors.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAIvD,YAAY,aAAqB,EAAE,MAAe;QAChD,KAAK,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,yEAAyE;AACzE,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IACxD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,uBAAwB,SAAQ,eAAe;IAC1D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import type { OpenStreamProgress } from './types.js';
2
+ export declare function buildOpenStreamStartFrame(params: {
3
+ progressToken: string;
4
+ progress: number;
5
+ contentType?: string;
6
+ }): OpenStreamProgress;
7
+ export declare function buildOpenStreamAcceptFrame(params: {
8
+ progressToken: string;
9
+ progress: number;
10
+ }): OpenStreamProgress;
11
+ export declare function buildOpenStreamChunkFrame(params: {
12
+ progressToken: string;
13
+ progress: number;
14
+ chunkIndex: number;
15
+ data: string;
16
+ }): OpenStreamProgress;
17
+ export declare function buildOpenStreamPingFrame(params: {
18
+ progressToken: string;
19
+ progress: number;
20
+ nonce: string;
21
+ }): OpenStreamProgress;
22
+ export declare function buildOpenStreamPongFrame(params: {
23
+ progressToken: string;
24
+ progress: number;
25
+ nonce: string;
26
+ }): OpenStreamProgress;
27
+ export declare function buildOpenStreamCloseFrame(params: {
28
+ progressToken: string;
29
+ progress: number;
30
+ lastChunkIndex?: number;
31
+ }): OpenStreamProgress;
32
+ export declare function buildOpenStreamAbortFrame(params: {
33
+ progressToken: string;
34
+ progress: number;
35
+ reason?: string;
36
+ }): OpenStreamProgress;
37
+ //# sourceMappingURL=frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../../src/transport/open-stream/frames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,kBAAkB,CAerB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,kBAAkB,CAWrB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,kBAAkB,CAarB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,kBAAkB,CAYrB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,kBAAkB,CAYrB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,kBAAkB,CAerB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,kBAAkB,CAerB"}
@@ -0,0 +1,91 @@
1
+ export function buildOpenStreamStartFrame(params) {
2
+ const cvm = {
3
+ type: 'open-stream',
4
+ frameType: 'start',
5
+ };
6
+ if (params.contentType !== undefined) {
7
+ cvm.contentType = params.contentType;
8
+ }
9
+ return {
10
+ progressToken: params.progressToken,
11
+ progress: params.progress,
12
+ cvm,
13
+ };
14
+ }
15
+ export function buildOpenStreamAcceptFrame(params) {
16
+ const cvm = {
17
+ type: 'open-stream',
18
+ frameType: 'accept',
19
+ };
20
+ return {
21
+ progressToken: params.progressToken,
22
+ progress: params.progress,
23
+ cvm,
24
+ };
25
+ }
26
+ export function buildOpenStreamChunkFrame(params) {
27
+ const cvm = {
28
+ type: 'open-stream',
29
+ frameType: 'chunk',
30
+ chunkIndex: params.chunkIndex,
31
+ data: params.data,
32
+ };
33
+ return {
34
+ progressToken: params.progressToken,
35
+ progress: params.progress,
36
+ cvm,
37
+ };
38
+ }
39
+ export function buildOpenStreamPingFrame(params) {
40
+ const cvm = {
41
+ type: 'open-stream',
42
+ frameType: 'ping',
43
+ nonce: params.nonce,
44
+ };
45
+ return {
46
+ progressToken: params.progressToken,
47
+ progress: params.progress,
48
+ cvm,
49
+ };
50
+ }
51
+ export function buildOpenStreamPongFrame(params) {
52
+ const cvm = {
53
+ type: 'open-stream',
54
+ frameType: 'pong',
55
+ nonce: params.nonce,
56
+ };
57
+ return {
58
+ progressToken: params.progressToken,
59
+ progress: params.progress,
60
+ cvm,
61
+ };
62
+ }
63
+ export function buildOpenStreamCloseFrame(params) {
64
+ const cvm = {
65
+ type: 'open-stream',
66
+ frameType: 'close',
67
+ };
68
+ if (params.lastChunkIndex !== undefined) {
69
+ cvm.lastChunkIndex = params.lastChunkIndex;
70
+ }
71
+ return {
72
+ progressToken: params.progressToken,
73
+ progress: params.progress,
74
+ cvm,
75
+ };
76
+ }
77
+ export function buildOpenStreamAbortFrame(params) {
78
+ const cvm = {
79
+ type: 'open-stream',
80
+ frameType: 'abort',
81
+ };
82
+ if (params.reason !== undefined) {
83
+ cvm.reason = params.reason;
84
+ }
85
+ return {
86
+ progressToken: params.progressToken,
87
+ progress: params.progress,
88
+ cvm,
89
+ };
90
+ }
91
+ //# sourceMappingURL=frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../../src/transport/open-stream/frames.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,GAAG,GAAyB;QAChC,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,CAAC;IAED,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAG1C;IACC,MAAM,GAAG,GAA0B;QACjC,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,QAAQ;KACpB,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAKzC;IACC,MAAM,GAAG,GAAyB;QAChC,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAIxC;IACC,MAAM,GAAG,GAAwB;QAC/B,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAIxC;IACC,MAAM,GAAG,GAAwB;QAC/B,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,GAAG,GAAyB;QAChC,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAIzC;IACC,MAAM,GAAG,GAAyB;QAChC,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './constants.js';
2
+ export * from './errors.js';
3
+ export * from './frames.js';
4
+ export * from './types.js';
5
+ export { OpenStreamSession } from './session.js';
6
+ export { OpenStreamRegistry } from './registry.js';
7
+ export { OpenStreamReceiver } from './receiver.js';
8
+ export { OpenStreamWriter } from './writer.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transport/open-stream/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './constants.js';
2
+ export * from './errors.js';
3
+ export * from './frames.js';
4
+ export * from './types.js';
5
+ export { OpenStreamSession } from './session.js';
6
+ export { OpenStreamRegistry } from './registry.js';
7
+ export { OpenStreamReceiver } from './receiver.js';
8
+ export { OpenStreamWriter } from './writer.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transport/open-stream/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { JSONRPCNotification } from '@modelcontextprotocol/sdk/types.js';
2
+ import { type OpenStreamRegistryOptions } from './registry.js';
3
+ import type { OpenStreamSession, OpenStreamSessionOptions } from './session.js';
4
+ /**
5
+ * Stateful receiver for inbound CEP-41 `notifications/progress` frames.
6
+ */
7
+ export declare class OpenStreamReceiver {
8
+ private readonly registry;
9
+ constructor(options: OpenStreamRegistryOptions);
10
+ static isOpenStreamFrame(notification: JSONRPCNotification): boolean;
11
+ processFrame(notification: JSONRPCNotification): Promise<OpenStreamSession>;
12
+ getSession(progressToken: string): OpenStreamSession | undefined;
13
+ getOrCreateSession(progressToken: string): OpenStreamSession;
14
+ createSession(options: OpenStreamSessionOptions): OpenStreamSession;
15
+ clear(): void;
16
+ get size(): number;
17
+ }
18
+ //# sourceMappingURL=receiver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receiver.d.ts","sourceRoot":"","sources":["../../../../src/transport/open-stream/receiver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGhF;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,OAAO,EAAE,yBAAyB;WAIhC,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO;IAI9D,YAAY,CACvB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,iBAAiB,CAAC;IAMtB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIhE,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAI5D,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB;IAInE,KAAK,IAAI,IAAI;IAIpB,IAAW,IAAI,IAAI,MAAM,CAExB;CACF"}
@@ -0,0 +1,31 @@
1
+ import { OpenStreamRegistry, } from './registry.js';
2
+ /**
3
+ * Stateful receiver for inbound CEP-41 `notifications/progress` frames.
4
+ */
5
+ export class OpenStreamReceiver {
6
+ constructor(options) {
7
+ this.registry = new OpenStreamRegistry(options);
8
+ }
9
+ static isOpenStreamFrame(notification) {
10
+ return OpenStreamRegistry.isOpenStreamProgress(notification.params);
11
+ }
12
+ async processFrame(notification) {
13
+ return this.registry.processFrame(notification.params);
14
+ }
15
+ getSession(progressToken) {
16
+ return this.registry.getSession(progressToken);
17
+ }
18
+ getOrCreateSession(progressToken) {
19
+ return this.registry.getOrCreateSession(progressToken);
20
+ }
21
+ createSession(options) {
22
+ return this.registry.createSession(options);
23
+ }
24
+ clear() {
25
+ this.registry.clear();
26
+ }
27
+ get size() {
28
+ return this.registry.size;
29
+ }
30
+ }
31
+ //# sourceMappingURL=receiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receiver.js","sourceRoot":"","sources":["../../../../src/transport/open-stream/receiver.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAIvB;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAG7B,YAAY,OAAkC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,YAAiC;QAC/D,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,YAAiC;QAEjC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC/B,YAAY,CAAC,MAA4B,CAC1C,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,aAAqB;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAEM,kBAAkB,CAAC,aAAqB;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAEM,aAAa,CAAC,OAAiC;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ import type { Logger } from '../../core/utils/logger.js';
2
+ import { OpenStreamSession, type OpenStreamSessionOptions } from './session.js';
3
+ import type { OpenStreamProgress } from './types.js';
4
+ export interface OpenStreamRegistryOptions {
5
+ maxConcurrentStreams?: number;
6
+ maxBufferedChunksPerStream?: number;
7
+ maxBufferedBytesPerStream?: number;
8
+ idleTimeoutMs?: number;
9
+ probeTimeoutMs?: number;
10
+ closeGracePeriodMs?: number;
11
+ getSessionOptions?: (progressToken: string) => Partial<Omit<OpenStreamSessionOptions, 'progressToken'>>;
12
+ logger: Logger;
13
+ }
14
+ /**
15
+ * Registry of active CEP-41 sessions keyed by progress token.
16
+ */
17
+ export declare class OpenStreamRegistry {
18
+ private readonly logger;
19
+ private readonly maxConcurrentStreams;
20
+ private readonly maxBufferedChunksPerStream;
21
+ private readonly maxBufferedBytesPerStream;
22
+ private readonly idleTimeoutMs;
23
+ private readonly probeTimeoutMs;
24
+ private readonly closeGracePeriodMs;
25
+ private readonly getSessionOptions;
26
+ private readonly sessions;
27
+ constructor(options: OpenStreamRegistryOptions);
28
+ static isOpenStreamProgress(value: unknown): value is OpenStreamProgress;
29
+ getSession(progressToken: string): OpenStreamSession | undefined;
30
+ createSession(options: string | (Pick<OpenStreamSessionOptions, 'progressToken'> & Partial<Omit<OpenStreamSessionOptions, 'progressToken'>>)): OpenStreamSession;
31
+ getOrCreateSession(progressToken: string): OpenStreamSession;
32
+ processFrame(frame: OpenStreamProgress): Promise<OpenStreamSession>;
33
+ deleteSession(progressToken: string): boolean;
34
+ clear(): void;
35
+ get size(): number;
36
+ }
37
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/transport/open-stream/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAUzD,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAmB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,WAAW,yBAAyB;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,CAClB,aAAa,EAAE,MAAM,KAClB,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAIpB;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;gBAErD,OAAO,EAAE,yBAAyB;WAmBhC,oBAAoB,CAChC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB;IAQvB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIhE,aAAa,CAClB,OAAO,EACH,MAAM,GACN,CAAC,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC,CAAC,GAC9D,iBAAiB;IA+Db,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,iBAAiB;IAItD,YAAY,CACvB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAiBtB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAI7C,KAAK,IAAI,IAAI;IAYpB,IAAW,IAAI,IAAI,MAAM,CAExB;CACF"}
@@ -0,0 +1,115 @@
1
+ import { DEFAULT_MAX_BUFFERED_BYTES_PER_STREAM, DEFAULT_MAX_BUFFERED_CHUNKS_PER_STREAM, DEFAULT_MAX_CONCURRENT_OPEN_STREAMS, DEFAULT_OPEN_STREAM_CLOSE_GRACE_PERIOD_MS, DEFAULT_OPEN_STREAM_IDLE_TIMEOUT_MS, DEFAULT_OPEN_STREAM_PROBE_TIMEOUT_MS, } from './constants.js';
2
+ import { OpenStreamPolicyError, OpenStreamSequenceError } from './errors.js';
3
+ import { OpenStreamSession } from './session.js';
4
+ function isOpenStreamFrame(value) {
5
+ return (typeof value === 'object' &&
6
+ value !== null &&
7
+ value.type === 'open-stream' &&
8
+ typeof value.frameType === 'string');
9
+ }
10
+ /**
11
+ * Registry of active CEP-41 sessions keyed by progress token.
12
+ */
13
+ export class OpenStreamRegistry {
14
+ constructor(options) {
15
+ var _a, _b, _c, _d, _e, _f;
16
+ this.sessions = new Map();
17
+ this.logger = options.logger;
18
+ this.maxConcurrentStreams =
19
+ (_a = options.maxConcurrentStreams) !== null && _a !== void 0 ? _a : DEFAULT_MAX_CONCURRENT_OPEN_STREAMS;
20
+ this.maxBufferedChunksPerStream =
21
+ (_b = options.maxBufferedChunksPerStream) !== null && _b !== void 0 ? _b : DEFAULT_MAX_BUFFERED_CHUNKS_PER_STREAM;
22
+ this.maxBufferedBytesPerStream =
23
+ (_c = options.maxBufferedBytesPerStream) !== null && _c !== void 0 ? _c : DEFAULT_MAX_BUFFERED_BYTES_PER_STREAM;
24
+ this.idleTimeoutMs =
25
+ (_d = options.idleTimeoutMs) !== null && _d !== void 0 ? _d : DEFAULT_OPEN_STREAM_IDLE_TIMEOUT_MS;
26
+ this.probeTimeoutMs =
27
+ (_e = options.probeTimeoutMs) !== null && _e !== void 0 ? _e : DEFAULT_OPEN_STREAM_PROBE_TIMEOUT_MS;
28
+ this.closeGracePeriodMs =
29
+ (_f = options.closeGracePeriodMs) !== null && _f !== void 0 ? _f : DEFAULT_OPEN_STREAM_CLOSE_GRACE_PERIOD_MS;
30
+ this.getSessionOptions = options.getSessionOptions;
31
+ }
32
+ static isOpenStreamProgress(value) {
33
+ return (typeof value === 'object' &&
34
+ value !== null &&
35
+ isOpenStreamFrame(value.cvm));
36
+ }
37
+ getSession(progressToken) {
38
+ return this.sessions.get(progressToken);
39
+ }
40
+ createSession(options) {
41
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
42
+ const sessionOptions = typeof options === 'string' ? { progressToken: options } : options;
43
+ const { progressToken } = sessionOptions;
44
+ const derivedSessionOptions = (_b = (_a = this.getSessionOptions) === null || _a === void 0 ? void 0 : _a.call(this, progressToken)) !== null && _b !== void 0 ? _b : {};
45
+ if (this.sessions.has(progressToken)) {
46
+ throw new OpenStreamSequenceError(`Stream session already exists for ${progressToken}`);
47
+ }
48
+ if (this.sessions.size >= this.maxConcurrentStreams) {
49
+ throw new OpenStreamPolicyError('Maximum concurrent open streams exceeded');
50
+ }
51
+ const session = new OpenStreamSession({
52
+ progressToken,
53
+ maxBufferedChunks: (_d = (_c = sessionOptions.maxBufferedChunks) !== null && _c !== void 0 ? _c : derivedSessionOptions.maxBufferedChunks) !== null && _d !== void 0 ? _d : this.maxBufferedChunksPerStream,
54
+ maxBufferedBytes: (_f = (_e = sessionOptions.maxBufferedBytes) !== null && _e !== void 0 ? _e : derivedSessionOptions.maxBufferedBytes) !== null && _f !== void 0 ? _f : this.maxBufferedBytesPerStream,
55
+ idleTimeoutMs: (_h = (_g = sessionOptions.idleTimeoutMs) !== null && _g !== void 0 ? _g : derivedSessionOptions.idleTimeoutMs) !== null && _h !== void 0 ? _h : this.idleTimeoutMs,
56
+ probeTimeoutMs: (_k = (_j = sessionOptions.probeTimeoutMs) !== null && _j !== void 0 ? _j : derivedSessionOptions.probeTimeoutMs) !== null && _k !== void 0 ? _k : this.probeTimeoutMs,
57
+ closeGracePeriodMs: (_m = (_l = sessionOptions.closeGracePeriodMs) !== null && _l !== void 0 ? _l : derivedSessionOptions.closeGracePeriodMs) !== null && _m !== void 0 ? _m : this.closeGracePeriodMs,
58
+ sendPing: (_o = sessionOptions.sendPing) !== null && _o !== void 0 ? _o : derivedSessionOptions.sendPing,
59
+ sendPong: (_p = sessionOptions.sendPong) !== null && _p !== void 0 ? _p : derivedSessionOptions.sendPong,
60
+ sendAbort: (_q = sessionOptions.sendAbort) !== null && _q !== void 0 ? _q : derivedSessionOptions.sendAbort,
61
+ onClose: async () => {
62
+ var _a;
63
+ try {
64
+ await ((_a = sessionOptions.onClose) === null || _a === void 0 ? void 0 : _a.call(sessionOptions));
65
+ }
66
+ finally {
67
+ this.sessions.delete(progressToken);
68
+ }
69
+ },
70
+ onAbort: async (reason) => {
71
+ var _a;
72
+ try {
73
+ await ((_a = sessionOptions.onAbort) === null || _a === void 0 ? void 0 : _a.call(sessionOptions, reason));
74
+ }
75
+ finally {
76
+ this.sessions.delete(progressToken);
77
+ }
78
+ },
79
+ });
80
+ this.sessions.set(progressToken, session);
81
+ return session;
82
+ }
83
+ getOrCreateSession(progressToken) {
84
+ var _a;
85
+ return (_a = this.getSession(progressToken)) !== null && _a !== void 0 ? _a : this.createSession(progressToken);
86
+ }
87
+ async processFrame(frame) {
88
+ const progressToken = String(frame.progressToken);
89
+ const existingSession = this.getSession(progressToken);
90
+ if (!existingSession) {
91
+ if (frame.cvm.frameType !== 'start') {
92
+ throw new OpenStreamSequenceError(`Received ${frame.cvm.frameType} frame before start for ${progressToken}`);
93
+ }
94
+ }
95
+ const session = existingSession !== null && existingSession !== void 0 ? existingSession : this.createSession(progressToken);
96
+ await session.processFrame(frame.progress, frame.cvm);
97
+ return session;
98
+ }
99
+ deleteSession(progressToken) {
100
+ return this.sessions.delete(progressToken);
101
+ }
102
+ clear() {
103
+ this.logger.debug('Clearing open stream registry', {
104
+ count: this.sessions.size,
105
+ });
106
+ for (const session of this.sessions.values()) {
107
+ session.dispose();
108
+ }
109
+ this.sessions.clear();
110
+ }
111
+ get size() {
112
+ return this.sessions.size;
113
+ }
114
+ }
115
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/transport/open-stream/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { OpenStreamFrame, OpenStreamReadResult, OpenStreamSessionLike } from './types.js';
2
+ type PendingChunk = OpenStreamReadResult<string>;
3
+ export interface OpenStreamSessionOptions {
4
+ progressToken: string;
5
+ maxBufferedChunks: number;
6
+ maxBufferedBytes: number;
7
+ idleTimeoutMs?: number;
8
+ probeTimeoutMs?: number;
9
+ closeGracePeriodMs?: number;
10
+ sendPing?: (nonce: string) => Promise<void>;
11
+ sendPong?: (nonce: string) => Promise<void>;
12
+ sendAbort?: (reason?: string) => Promise<void>;
13
+ onAbort?: (reason?: string) => Promise<void>;
14
+ onClose?: () => Promise<void>;
15
+ }
16
+ /**
17
+ * Readable client-side/session-side view of a CEP-41 stream.
18
+ */
19
+ export declare class OpenStreamSession implements OpenStreamSessionLike<string> {
20
+ readonly progressToken: string;
21
+ readonly closed: Promise<void>;
22
+ private readonly onAbort?;
23
+ private readonly onClose?;
24
+ private readonly closeDeferred;
25
+ private readonly waiters;
26
+ private readonly queue;
27
+ private readonly bufferedChunks;
28
+ private readonly maxBufferedChunks;
29
+ private readonly maxBufferedBytes;
30
+ private readonly idleTimeoutMs;
31
+ private readonly probeTimeoutMs;
32
+ private readonly closeGracePeriodMs;
33
+ private readonly sendPing?;
34
+ private readonly sendPong?;
35
+ private readonly sendAbort?;
36
+ private bufferedBytes;
37
+ private queuedBytes;
38
+ private active;
39
+ private started;
40
+ private closedRemotely;
41
+ private closeState;
42
+ private nextExpectedChunkIndex;
43
+ private lastProgress;
44
+ private terminalError;
45
+ private controlNonce;
46
+ private pendingProbeNonce;
47
+ private idleTimer;
48
+ private probeTimer;
49
+ private closeGraceTimer;
50
+ constructor(options: OpenStreamSessionOptions);
51
+ get isActive(): boolean;
52
+ abort(reason?: string): Promise<void>;
53
+ dispose(): void;
54
+ processFrame(progress: number, frame: OpenStreamFrame): Promise<void>;
55
+ [Symbol.asyncIterator](): AsyncIterator<PendingChunk>;
56
+ private assertActive;
57
+ private assertStarted;
58
+ private assertProgress;
59
+ private bufferChunk;
60
+ private flushContiguousChunks;
61
+ private emit;
62
+ private maybeFinishGracefully;
63
+ private handlePing;
64
+ private handlePong;
65
+ private refreshIdleTimer;
66
+ private handleIdleTimeout;
67
+ private handleProbeTimeout;
68
+ private armCloseGraceTimer;
69
+ private handleCloseGraceTimeout;
70
+ private nextControlNonce;
71
+ private clearIdleTimer;
72
+ private clearProbeTimer;
73
+ private clearCloseGraceTimer;
74
+ private clearTimers;
75
+ private finalize;
76
+ private finishClosed;
77
+ private finishAborted;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/transport/open-stream/session.ts"],"names":[],"mappings":"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"}