@ibgib/core-gib 0.1.20 → 0.1.22

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 (165) hide show
  1. package/dist/sync/graft-info/graft-info-constants.d.mts +5 -0
  2. package/dist/sync/graft-info/graft-info-constants.d.mts.map +1 -0
  3. package/dist/sync/graft-info/graft-info-constants.mjs +5 -0
  4. package/dist/sync/graft-info/graft-info-constants.mjs.map +1 -0
  5. package/dist/sync/graft-info/graft-info-helpers.d.mts +49 -0
  6. package/dist/sync/graft-info/graft-info-helpers.d.mts.map +1 -0
  7. package/dist/sync/graft-info/graft-info-helpers.mjs +236 -0
  8. package/dist/sync/graft-info/graft-info-helpers.mjs.map +1 -0
  9. package/dist/sync/graft-info/graft-info-helpers.respec.d.mts +2 -0
  10. package/dist/sync/graft-info/graft-info-helpers.respec.d.mts.map +1 -0
  11. package/dist/sync/graft-info/graft-info-helpers.respec.mjs +70 -0
  12. package/dist/sync/graft-info/graft-info-helpers.respec.mjs.map +1 -0
  13. package/dist/sync/graft-info/graft-info-types.d.mts +31 -0
  14. package/dist/sync/{merge-info/merge-info-types.d.mts.map → graft-info/graft-info-types.d.mts.map} +1 -1
  15. package/dist/sync/graft-info/graft-info-types.mjs +2 -0
  16. package/dist/sync/graft-info/graft-info-types.mjs.map +1 -0
  17. package/dist/sync/strategies/conflict-optimistic.d.mts +1 -1
  18. package/dist/sync/strategies/conflict-optimistic.d.mts.map +1 -1
  19. package/dist/sync/strategies/conflict-optimistic.mjs +10 -60
  20. package/dist/sync/strategies/conflict-optimistic.mjs.map +1 -1
  21. package/dist/sync/sync-conflict.respec.mjs +155 -34
  22. package/dist/sync/sync-conflict.respec.mjs.map +1 -1
  23. package/dist/sync/sync-constants.d.mts +9 -11
  24. package/dist/sync/sync-constants.d.mts.map +1 -1
  25. package/dist/sync/sync-constants.mjs +3 -5
  26. package/dist/sync/sync-constants.mjs.map +1 -1
  27. package/dist/sync/sync-helpers.d.mts +2 -0
  28. package/dist/sync/sync-helpers.d.mts.map +1 -1
  29. package/dist/sync/sync-helpers.mjs +11 -9
  30. package/dist/sync/sync-helpers.mjs.map +1 -1
  31. package/dist/sync/sync-innerspace-constants.respec.mjs +5 -1
  32. package/dist/sync/sync-innerspace-constants.respec.mjs.map +1 -1
  33. package/dist/sync/sync-innerspace-deep-updates.respec.mjs +5 -1
  34. package/dist/sync/sync-innerspace-deep-updates.respec.mjs.map +1 -1
  35. package/dist/sync/sync-innerspace-dest-ahead.respec.mjs +8 -4
  36. package/dist/sync/sync-innerspace-dest-ahead.respec.mjs.map +1 -1
  37. package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs +5 -1
  38. package/dist/sync/sync-innerspace-multiple-timelines.respec.mjs.map +1 -1
  39. package/dist/sync/sync-innerspace-partial-update.respec.mjs +5 -1
  40. package/dist/sync/sync-innerspace-partial-update.respec.mjs.map +1 -1
  41. package/dist/sync/sync-innerspace.respec.mjs +5 -1
  42. package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
  43. package/dist/sync/sync-peer/sync-peer-constants.d.mts +2 -0
  44. package/dist/sync/sync-peer/sync-peer-constants.d.mts.map +1 -0
  45. package/dist/sync/sync-peer/sync-peer-constants.mjs +2 -0
  46. package/dist/sync/sync-peer/sync-peer-constants.mjs.map +1 -0
  47. package/dist/sync/sync-peer/sync-peer-helpers.d.mts +2 -0
  48. package/dist/sync/sync-peer/sync-peer-helpers.d.mts.map +1 -0
  49. package/dist/sync/sync-peer/sync-peer-helpers.mjs +2 -0
  50. package/dist/sync/sync-peer/sync-peer-helpers.mjs.map +1 -0
  51. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.d.mts +8 -0
  52. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.d.mts.map +1 -0
  53. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs +8 -0
  54. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mjs.map +1 -0
  55. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-helpers.d.mts +18 -0
  56. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-helpers.d.mts.map +1 -0
  57. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-helpers.mjs +54 -0
  58. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-helpers.mjs.map +1 -0
  59. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts +80 -0
  60. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.d.mts.map +1 -0
  61. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.mjs +5 -0
  62. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.mjs.map +1 -0
  63. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts +43 -0
  64. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.d.mts.map +1 -0
  65. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs +229 -0
  66. package/dist/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mjs.map +1 -0
  67. package/dist/sync/sync-peer/sync-peer-types.d.mts +12 -0
  68. package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -1
  69. package/dist/sync/sync-peer/sync-peer-v1.d.mts +15 -7
  70. package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -1
  71. package/dist/sync/sync-peer/sync-peer-v1.mjs +105 -24
  72. package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -1
  73. package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts +5 -8
  74. package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts.map +1 -1
  75. package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs +34 -18
  76. package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs.map +1 -1
  77. package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts +26 -22
  78. package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts.map +1 -1
  79. package/dist/sync/sync-saga-context/sync-saga-context-types.mjs +1 -9
  80. package/dist/sync/sync-saga-context/sync-saga-context-types.mjs.map +1 -1
  81. package/dist/sync/sync-saga-coordinator.d.mts +48 -51
  82. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
  83. package/dist/sync/sync-saga-coordinator.mjs +720 -420
  84. package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
  85. package/dist/sync/sync-saga-message/sync-saga-message-helpers.d.mts.map +1 -1
  86. package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs +1 -0
  87. package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs.map +1 -1
  88. package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts +1 -12
  89. package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts.map +1 -1
  90. package/dist/sync/sync-types.d.mts +15 -3
  91. package/dist/sync/sync-types.d.mts.map +1 -1
  92. package/dist/witness/light-witness-base-v1.d.mts.map +1 -1
  93. package/dist/witness/light-witness-base-v1.mjs +2 -0
  94. package/dist/witness/light-witness-base-v1.mjs.map +1 -1
  95. package/dist/witness/space/inner-space/inner-space-v1.mjs +1 -1
  96. package/dist/witness/space/inner-space/inner-space-v1.mjs.map +1 -1
  97. package/ibgib-foundations.md +20 -2
  98. package/package.json +1 -1
  99. package/src/sync/README.md +31 -22
  100. package/src/sync/graft-info/graft-info-constants.mts +4 -0
  101. package/src/sync/graft-info/graft-info-helpers.mts +308 -0
  102. package/src/sync/graft-info/graft-info-helpers.respec.mts +83 -0
  103. package/src/sync/graft-info/graft-info-types.mts +33 -0
  104. package/src/sync/strategies/conflict-optimistic.mts +11 -70
  105. package/src/sync/sync-conflict.respec.mts +177 -37
  106. package/src/sync/sync-constants.mts +5 -9
  107. package/src/sync/sync-helpers.mts +11 -7
  108. package/src/sync/sync-innerspace-constants.respec.mts +5 -1
  109. package/src/sync/sync-innerspace-deep-updates.respec.mts +5 -1
  110. package/src/sync/sync-innerspace-dest-ahead.respec.mts +7 -3
  111. package/src/sync/sync-innerspace-multiple-timelines.respec.mts +5 -1
  112. package/src/sync/sync-innerspace-partial-update.respec.mts +8 -2
  113. package/src/sync/sync-innerspace.respec.mts +5 -1
  114. package/src/sync/sync-peer/sync-peer-constants.mts +0 -0
  115. package/src/sync/sync-peer/sync-peer-helpers.mts +0 -0
  116. package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-constants.mts +8 -0
  117. package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-helpers.mts +72 -0
  118. package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-types.mts +87 -0
  119. package/src/sync/sync-peer/sync-peer-innerspace/sync-peer-innerspace-v1.mts +242 -0
  120. package/src/sync/sync-peer/sync-peer-types.mts +13 -1
  121. package/src/sync/sync-peer/sync-peer-v1.mts +93 -27
  122. package/src/sync/sync-saga-context/sync-saga-context-helpers.mts +47 -29
  123. package/src/sync/sync-saga-context/sync-saga-context-types.mts +29 -30
  124. package/src/sync/sync-saga-coordinator.mts +782 -441
  125. package/src/sync/sync-saga-message/sync-saga-message-helpers.mts +2 -0
  126. package/src/sync/sync-saga-message/sync-saga-message-types.mts +0 -11
  127. package/src/sync/sync-types.mts +17 -3
  128. package/src/witness/light-witness-base-v1.mts +2 -1
  129. package/src/witness/space/inner-space/inner-space-v1.mts +1 -1
  130. package/test_output.log +489 -0
  131. package/tmp.md +61 -2
  132. package/dist/sync/merge-info/merge-info-constants.d.mts +0 -2
  133. package/dist/sync/merge-info/merge-info-constants.d.mts.map +0 -1
  134. package/dist/sync/merge-info/merge-info-constants.mjs +0 -2
  135. package/dist/sync/merge-info/merge-info-constants.mjs.map +0 -1
  136. package/dist/sync/merge-info/merge-info-helpers.d.mts +0 -51
  137. package/dist/sync/merge-info/merge-info-helpers.d.mts.map +0 -1
  138. package/dist/sync/merge-info/merge-info-helpers.mjs +0 -92
  139. package/dist/sync/merge-info/merge-info-helpers.mjs.map +0 -1
  140. package/dist/sync/merge-info/merge-info-helpers.respec.d.mts +0 -2
  141. package/dist/sync/merge-info/merge-info-helpers.respec.d.mts.map +0 -1
  142. package/dist/sync/merge-info/merge-info-helpers.respec.mjs +0 -32
  143. package/dist/sync/merge-info/merge-info-helpers.respec.mjs.map +0 -1
  144. package/dist/sync/merge-info/merge-info-types.d.mts +0 -26
  145. package/dist/sync/merge-info/merge-info-types.mjs +0 -2
  146. package/dist/sync/merge-info/merge-info-types.mjs.map +0 -1
  147. package/dist/sync/sync-local-spaces.respec.d.mts +0 -2
  148. package/dist/sync/sync-local-spaces.respec.d.mts.map +0 -1
  149. package/dist/sync/sync-local-spaces.respec.mjs +0 -159
  150. package/dist/sync/sync-local-spaces.respec.mjs.map +0 -1
  151. package/dist/sync/sync-peer/sync-peer-innerspace-v1.d.mts +0 -39
  152. package/dist/sync/sync-peer/sync-peer-innerspace-v1.d.mts.map +0 -1
  153. package/dist/sync/sync-peer/sync-peer-innerspace-v1.mjs +0 -131
  154. package/dist/sync/sync-peer/sync-peer-innerspace-v1.mjs.map +0 -1
  155. package/dist/sync/sync-saga-coordinator.respec.d.mts +0 -2
  156. package/dist/sync/sync-saga-coordinator.respec.d.mts.map +0 -1
  157. package/dist/sync/sync-saga-coordinator.respec.mjs +0 -40
  158. package/dist/sync/sync-saga-coordinator.respec.mjs.map +0 -1
  159. package/src/sync/merge-info/merge-info-constants.mts +0 -1
  160. package/src/sync/merge-info/merge-info-helpers.mts +0 -134
  161. package/src/sync/merge-info/merge-info-helpers.respec.mts +0 -41
  162. package/src/sync/merge-info/merge-info-types.mts +0 -28
  163. package/src/sync/sync-local-spaces.respec.mts +0 -200
  164. package/src/sync/sync-peer/sync-peer-innerspace-v1.mts +0 -167
  165. package/src/sync/sync-saga-coordinator.respec.mts +0 -52
@@ -2,27 +2,24 @@
2
2
  * @module sync saga context helpers
3
3
  */
4
4
 
5
- import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
5
+ import { extractErrorMsg, getTimestamp } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
6
6
  import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
7
7
  import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
8
8
  import { IbGib_V1, } from '@ibgib/ts-gib/dist/V1/types.mjs';
9
9
  import { Ib } from '@ibgib/ts-gib/dist/types.mjs';
10
10
 
11
11
  import { SYNC_SAGA_CONTEXT_ATOM } from './sync-saga-context-constants.mjs';
12
- import { SYNC_SAGA_PAYLOAD_ADDRS_REL8N_NAME } from '../sync-constants.mjs';
12
+ import { SYNC_SAGA_PAYLOAD_ADDRS_DOMAIN } from '../sync-constants.mjs';
13
13
  import {
14
- SyncSagaContextCmd, SyncSagaContextData_V1, SyncSagaContextIbGib_V1,
14
+ SyncSagaContextData_V1, SyncSagaContextIbGib_V1,
15
15
  SyncSagaContextIb_V1, SyncSagaContextRel8ns_V1
16
16
  } from './sync-saga-context-types.mjs';
17
+ import { getTimestampInfo } from '../../common/other/ibgib-helper.mjs';
17
18
 
18
19
  /**
19
20
  * Options for creating a SyncSagaContext ibgib.
20
21
  */
21
22
  export interface CreateSyncSagaContextOptions {
22
- /**
23
- * Optional command string (e.g. 'process').
24
- */
25
- cmd?: SyncSagaContextCmd | string;
26
23
  /**
27
24
  * The main saga frame (Init, Ack, etc.).
28
25
  */
@@ -32,9 +29,10 @@ export interface CreateSyncSagaContextOptions {
32
29
  */
33
30
  sessionKeystones?: IbGib_V1[];
34
31
  /**
35
- * Payload addresses (strings) for bulk data.
32
+ * Domain payload ibgibs when the sync saga frame includes actual domain
33
+ * payloads to send, e.g., in a Delta frame.
36
34
  */
37
- payloadAddrs?: string[];
35
+ payloadIbGibsDomain?: IbGib_V1[];
38
36
  }
39
37
 
40
38
  /**
@@ -48,11 +46,12 @@ export async function getSyncSagaContextIb({
48
46
  const lc = `[${getSyncSagaContextIb.name}]`;
49
47
  try {
50
48
  if (!data) { throw new Error(`data required (E: 839d82138c234b3e89582855594191fe)`); }
51
- const cmd = data.cmd || 'default';
49
+
50
+ const payloadCount = data['@payloadAddrsDomain'] ? data['@payloadAddrsDomain'].length : 0;
52
51
  // sync_sagacontext cmd
53
52
  const ib = [
54
53
  SYNC_SAGA_CONTEXT_ATOM,
55
- cmd
54
+ payloadCount,
56
55
  ].join(' ');
57
56
 
58
57
  return ib;
@@ -73,17 +72,25 @@ export async function parseSyncSagaContextIb({
73
72
  const lc = `[${parseSyncSagaContextIb.name}]`;
74
73
  try {
75
74
  const parts = ib.split(' ');
76
- if (parts.length < 2) {
77
- throw new Error(`Invalid sync saga context ib. Expected at least 2 parts [atom cmd]. Got ${parts.length}. (E: 8b06c88820c74f5fb9f21f148459422a)`);
75
+ if (parts.length !== 2) {
76
+ throw new Error(`Invalid sync saga context ib. Expected at least 2 parts [atom, payloadCount]. Got ${parts.length}. (E: 8b06c88820c74f5fb9f21f148459422a)`);
78
77
  }
79
- const [atom, ...rest] = parts;
80
- const cmd = rest.join(' '); // cmd might have spaces if it's not a strict enum? but usually single word key.
78
+ const [
79
+ atom,
80
+ payloadCountStr,
81
+ ] = parts;
81
82
 
82
83
  if (atom !== SYNC_SAGA_CONTEXT_ATOM) {
83
84
  throw new Error(`Atom mismatch. Expected ${SYNC_SAGA_CONTEXT_ATOM}. Got ${atom}. (E: 67d71fc0f8d04840b178652309f471f5)`);
84
85
  }
85
86
 
86
- return { atom, cmd };
87
+ if (!payloadCountStr) { throw new Error(`invalid ib. second piece should be payloadCount but is falsy (E: 0bb7580793d800ca02227828a7294826)`); }
88
+ const payloadCount = parseInt(payloadCountStr);
89
+ if (isNaN(payloadCount)) {
90
+ throw new Error(`payloadCountStr is not a number. (E: 49457814282a44069871630987588722)`);
91
+ }
92
+
93
+ return { atom, payloadCount };
87
94
  } catch (error) {
88
95
  console.error(`${lc} ${extractErrorMsg(error)}`);
89
96
  throw error;
@@ -96,26 +103,32 @@ export async function parseSyncSagaContextIb({
96
103
  * @returns The context ibGib.
97
104
  */
98
105
  export async function createSyncSagaContext({
99
- cmd,
100
106
  sagaFrame,
101
107
  sessionKeystones,
102
- payloadAddrs,
108
+ payloadIbGibsDomain,
103
109
  }: CreateSyncSagaContextOptions): Promise<SyncSagaContextIbGib_V1> {
104
110
 
111
+ const date = new Date();
112
+ const timestamp = getTimestamp(date);
113
+ const timestampMs = date.getMilliseconds();
114
+
105
115
  const data: SyncSagaContextData_V1 = {
106
- cmd,
116
+ timestamp,
117
+ timestampMs,
107
118
  };
108
- if (payloadAddrs && payloadAddrs.length > 0) {
109
- data[SYNC_SAGA_PAYLOAD_ADDRS_REL8N_NAME] = payloadAddrs;
110
- }
111
-
112
- const rel8ns: SyncSagaContextRel8ns_V1 = {};
113
119
 
114
- if (sagaFrame) {
115
- rel8ns.sagaFrame = [getIbGibAddr(sagaFrame)];
120
+ // Domain Payloads
121
+ const payloadAddrsDomain = payloadIbGibsDomain ? payloadIbGibsDomain?.map(x => getIbGibAddr({ ibGib: x })) : undefined;
122
+ if (payloadAddrsDomain && payloadAddrsDomain.length > 0) {
123
+ data[SYNC_SAGA_PAYLOAD_ADDRS_DOMAIN] = payloadAddrsDomain;
116
124
  }
125
+
126
+ // rel8ns should always have saga frame, sometimes have keystone
127
+ const rel8ns: SyncSagaContextRel8ns_V1 = {
128
+ sagaFrame: [getIbGibAddr({ ibGib: sagaFrame })],
129
+ };
117
130
  if (sessionKeystones && sessionKeystones.length > 0) {
118
- rel8ns.sessionKeystone = sessionKeystones.map(getIbGibAddr);
131
+ rel8ns.sessionKeystone = sessionKeystones.map(x => getIbGibAddr({ ibGib: x }));
119
132
  }
120
133
 
121
134
  // Generate standard ib
@@ -126,7 +139,12 @@ export async function createSyncSagaContext({
126
139
  ib,
127
140
  data,
128
141
  rel8ns,
129
- });
142
+ }) as SyncSagaContextIbGib_V1;
143
+
144
+ // Attach actual ibgibs for transport
145
+ if (payloadIbGibsDomain && payloadIbGibsDomain.length > 0) {
146
+ contextIbGib.payloadIbGibsDomain = payloadIbGibsDomain;
147
+ }
130
148
 
131
- return contextIbGib as SyncSagaContextIbGib_V1;
149
+ return contextIbGib;
132
150
  }
@@ -4,28 +4,17 @@
4
4
 
5
5
  import { IbGibAddr } from '@ibgib/ts-gib/dist/types.mjs';
6
6
  import { IbGibData_V1, IbGibRel8ns_V1, IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
7
- import { SYNC_SAGA_PAYLOAD_ADDRS_REL8N_NAME } from '../sync-constants.mjs';
8
7
 
9
- // #region SyncSagaContextCmd
10
- /**
11
- * Commands for the Sync Saga Context.
12
- */
13
- export type SyncSagaContextCmd =
14
- | 'process'
15
- | 'ping';
16
- export const SyncSagaContextCmd = {
17
- process: 'process' as SyncSagaContextCmd,
18
- ping: 'ping' as SyncSagaContextCmd,
19
- } satisfies { [key in SyncSagaContextCmd]: SyncSagaContextCmd };
20
- export const SYNC_SAGA_CONTEXT_CMD_VALID_VALUES = Object.values(SyncSagaContextCmd);
21
- export function isValidSyncSagaContextCmd(cmd: string): cmd is SyncSagaContextCmd {
22
- return SYNC_SAGA_CONTEXT_CMD_VALID_VALUES.includes(cmd as SyncSagaContextCmd);
23
- }
24
- // #endregion SyncSagaContextCmd
8
+ import { SYNC_SAGA_PAYLOAD_ADDRS_DOMAIN } from '../sync-constants.mjs';
9
+ import { SyncIbGib_V1 } from '../sync-types.mjs';
10
+ import { SYNC_SAGA_CONTEXT_ATOM } from './sync-saga-context-constants.mjs';
25
11
 
26
12
  export interface SyncSagaContextIb_V1 {
27
- atom: string; // SYNC_SAGA_CONTEXT_ATOM
28
- cmd: SyncSagaContextCmd | string;
13
+ atom: typeof SYNC_SAGA_CONTEXT_ATOM;
14
+ /**
15
+ * simple metadata count of data["@payloadAddrsDomain"]
16
+ */
17
+ payloadCount: number;
29
18
  }
30
19
 
31
20
  /**
@@ -33,16 +22,10 @@ export interface SyncSagaContextIb_V1 {
33
22
  */
34
23
  export interface SyncSagaContextData_V1 extends IbGibData_V1 {
35
24
  /**
36
- * Contextual command or metadata for the transport layer.
37
- * e.g. "process", "ping".
38
- */
39
- cmd?: SyncSagaContextCmd | string;
40
-
41
- /**
42
- * Payload data (ibGibs) being transported in this context (e.g. for Delta stage).
25
+ * Payload data addresses for DOMAIN ibGibs (Timeline frames, user content).
43
26
  * Soft-linked via data property to avoid hard-linking graph dependencies.
44
27
  */
45
- [SYNC_SAGA_PAYLOAD_ADDRS_REL8N_NAME]?: IbGibAddr[];
28
+ [SYNC_SAGA_PAYLOAD_ADDRS_DOMAIN]?: IbGibAddr[];
46
29
  }
47
30
 
48
31
  /**
@@ -52,9 +35,10 @@ export interface SyncSagaContextData_V1 extends IbGibData_V1 {
52
35
  export interface SyncSagaContextRel8ns_V1 extends IbGibRel8ns_V1 {
53
36
  /**
54
37
  * The primary Saga Frame being transported (Init, Ack, Delta, etc.).
55
- * 0..1 (Optional only if trivial ping or strict metadata update)
38
+ *
39
+ * Should be a single addr.
56
40
  */
57
- sagaFrame?: IbGibAddr[];
41
+ sagaFrame: IbGibAddr[];
58
42
 
59
43
  /**
60
44
  * The Ephemeral Session Keystone Identity used for this saga.
@@ -67,4 +51,19 @@ export interface SyncSagaContextRel8ns_V1 extends IbGibRel8ns_V1 {
67
51
  * The SyncSagaContext is a full-fledged ibGib used as the payload
68
52
  * between Sync Peers.
69
53
  */
70
- export interface SyncSagaContextIbGib_V1 extends IbGib_V1<SyncSagaContextData_V1, SyncSagaContextRel8ns_V1> { }
54
+ export interface SyncSagaContextIbGib_V1 extends IbGib_V1<SyncSagaContextData_V1, SyncSagaContextRel8ns_V1> {
55
+ /**
56
+ * Domain ibgibs - OUTBOUND only.
57
+ *
58
+ * For inbound, the domain payload ibgibs are streamed via observable in the
59
+ * peer.
60
+ */
61
+ payloadIbGibsDomain?: IbGib_V1[];
62
+
63
+ /**
64
+ * Reference to the actual sync saga frame that this context conveys.
65
+ *
66
+ * This frame's addr should be {@link SyncSagaContextRel8ns_V1.sagaFrame}.
67
+ */
68
+ sagaFrame: SyncIbGib_V1;
69
+ }