@ibgib/core-gib 0.1.12 → 0.1.14

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 (106) hide show
  1. package/dist/keystone/keystone-helpers.mjs +3 -3
  2. package/dist/keystone/keystone-helpers.mjs.map +1 -1
  3. package/dist/sync/sync-constants.d.mts +4 -1
  4. package/dist/sync/sync-constants.d.mts.map +1 -1
  5. package/dist/sync/sync-constants.mjs +3 -0
  6. package/dist/sync/sync-constants.mjs.map +1 -1
  7. package/dist/sync/sync-helpers.d.mts +18 -2
  8. package/dist/sync/sync-helpers.d.mts.map +1 -1
  9. package/dist/sync/sync-helpers.mjs +84 -3
  10. package/dist/sync/sync-helpers.mjs.map +1 -1
  11. package/dist/sync/sync-innerspace.respec.d.mts +0 -6
  12. package/dist/sync/sync-innerspace.respec.d.mts.map +1 -1
  13. package/dist/sync/sync-innerspace.respec.mjs +395 -241
  14. package/dist/sync/sync-innerspace.respec.mjs.map +1 -1
  15. package/dist/sync/sync-peer/sync-peer-types.d.mts +31 -0
  16. package/dist/sync/sync-peer/sync-peer-types.d.mts.map +1 -0
  17. package/dist/sync/sync-peer/sync-peer-types.mjs +5 -0
  18. package/dist/sync/sync-peer/sync-peer-types.mjs.map +1 -0
  19. package/dist/sync/sync-peer/sync-peer-v1.d.mts +22 -0
  20. package/dist/sync/sync-peer/sync-peer-v1.d.mts.map +1 -0
  21. package/dist/sync/sync-peer/sync-peer-v1.mjs +13 -0
  22. package/dist/sync/sync-peer/sync-peer-v1.mjs.map +1 -0
  23. package/dist/sync/sync-saga-context/sync-saga-context-constants.d.mts +8 -0
  24. package/dist/sync/sync-saga-context/sync-saga-context-constants.d.mts.map +1 -0
  25. package/dist/sync/sync-saga-context/sync-saga-context-constants.mjs +8 -0
  26. package/dist/sync/sync-saga-context/sync-saga-context-constants.mjs.map +1 -0
  27. package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts +54 -0
  28. package/dist/sync/sync-saga-context/sync-saga-context-helpers.d.mts.map +1 -0
  29. package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs +87 -0
  30. package/dist/sync/sync-saga-context/sync-saga-context-helpers.mjs.map +1 -0
  31. package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts +66 -0
  32. package/dist/sync/sync-saga-context/sync-saga-context-types.d.mts.map +1 -0
  33. package/dist/sync/sync-saga-context/sync-saga-context-types.mjs +12 -0
  34. package/dist/sync/sync-saga-context/sync-saga-context-types.mjs.map +1 -0
  35. package/dist/sync/sync-saga-coordinator.d.mts +136 -91
  36. package/dist/sync/sync-saga-coordinator.d.mts.map +1 -1
  37. package/dist/sync/sync-saga-coordinator.mjs +563 -287
  38. package/dist/sync/sync-saga-coordinator.mjs.map +1 -1
  39. package/dist/sync/sync-saga-coordinator.respec.mjs +7 -7
  40. package/dist/sync/sync-saga-coordinator.respec.mjs.map +1 -1
  41. package/dist/sync/sync-saga-message/sync-saga-message-constants.d.mts +2 -0
  42. package/dist/sync/sync-saga-message/sync-saga-message-constants.d.mts.map +1 -0
  43. package/dist/sync/sync-saga-message/sync-saga-message-constants.mjs +2 -0
  44. package/dist/sync/sync-saga-message/sync-saga-message-constants.mjs.map +1 -0
  45. package/dist/sync/sync-saga-message/sync-saga-message-helpers.d.mts +15 -0
  46. package/dist/sync/sync-saga-message/sync-saga-message-helpers.d.mts.map +1 -0
  47. package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs +43 -0
  48. package/dist/sync/sync-saga-message/sync-saga-message-helpers.mjs.map +1 -0
  49. package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts +39 -0
  50. package/dist/sync/sync-saga-message/sync-saga-message-types.d.mts.map +1 -0
  51. package/dist/sync/sync-saga-message/sync-saga-message-types.mjs +2 -0
  52. package/dist/sync/sync-saga-message/sync-saga-message-types.mjs.map +1 -0
  53. package/dist/sync/sync-types.d.mts +81 -3
  54. package/dist/sync/sync-types.d.mts.map +1 -1
  55. package/dist/sync/sync-types.mjs +27 -1
  56. package/dist/sync/sync-types.mjs.map +1 -1
  57. package/dist/timeline/timeline-api.d.mts +16 -3
  58. package/dist/timeline/timeline-api.d.mts.map +1 -1
  59. package/dist/timeline/timeline-api.mjs +7 -7
  60. package/dist/timeline/timeline-api.mjs.map +1 -1
  61. package/dist/witness/space/inner-space/inner-space-v1.d.mts.map +1 -1
  62. package/dist/witness/space/inner-space/inner-space-v1.mjs +3 -4
  63. package/dist/witness/space/inner-space/inner-space-v1.mjs.map +1 -1
  64. package/dist/witness/space/outer-space/outer-space-types.d.mts +2 -0
  65. package/dist/witness/space/outer-space/outer-space-types.d.mts.map +1 -1
  66. package/dist/witness/space/space-base-v1.d.mts +19 -1
  67. package/dist/witness/space/space-base-v1.d.mts.map +1 -1
  68. package/dist/witness/space/space-base-v1.mjs +66 -6
  69. package/dist/witness/space/space-base-v1.mjs.map +1 -1
  70. package/dist/witness/space/space-helper.d.mts +14 -0
  71. package/dist/witness/space/space-helper.d.mts.map +1 -1
  72. package/dist/witness/space/space-helper.mjs +44 -1
  73. package/dist/witness/space/space-helper.mjs.map +1 -1
  74. package/dist/witness/space/space-respec-helper.d.mts.map +1 -1
  75. package/dist/witness/space/space-respec-helper.mjs +1 -1
  76. package/dist/witness/space/space-respec-helper.mjs.map +1 -1
  77. package/dist/witness/space/space-types.d.mts +12 -1
  78. package/dist/witness/space/space-types.d.mts.map +1 -1
  79. package/dist/witness/space/space-types.mjs +4 -0
  80. package/dist/witness/space/space-types.mjs.map +1 -1
  81. package/package.json +2 -2
  82. package/src/keystone/keystone-helpers.mts +3 -3
  83. package/src/sync/README.md +275 -0
  84. package/src/sync/sync-constants.mts +5 -0
  85. package/src/sync/sync-helpers.mts +105 -6
  86. package/src/sync/sync-innerspace.respec.mts +458 -289
  87. package/src/sync/sync-peer/sync-peer-types.mts +43 -0
  88. package/src/sync/sync-peer/sync-peer-v1.mts +28 -0
  89. package/src/sync/sync-saga-context/sync-saga-context-constants.mts +8 -0
  90. package/src/sync/sync-saga-context/sync-saga-context-helpers.mts +147 -0
  91. package/src/sync/sync-saga-context/sync-saga-context-types.mts +80 -0
  92. package/src/sync/sync-saga-coordinator.mts +762 -329
  93. package/src/sync/sync-saga-coordinator.respec.mts +7 -7
  94. package/src/sync/sync-saga-message/sync-saga-message-constants.mts +1 -0
  95. package/src/sync/sync-saga-message/sync-saga-message-helpers.mts +59 -0
  96. package/src/sync/sync-saga-message/sync-saga-message-types.mts +53 -0
  97. package/src/sync/sync-types.mts +103 -3
  98. package/src/timeline/timeline-api.mts +20 -4
  99. package/src/witness/space/inner-space/inner-space-v1.mts +3 -2
  100. package/src/witness/space/reconciliation-space/reconciliation-space-base.mts.OLD.md +884 -0
  101. package/src/witness/space/reconciliation-space/reconciliation-space-helper.mts.OLD.md +125 -0
  102. package/src/witness/space/space-base-v1.mts +62 -12
  103. package/src/witness/space/space-helper.mts +50 -1
  104. package/src/witness/space/space-respec-helper.mts +2 -1
  105. package/src/witness/space/space-types.mts +13 -1
  106. package/tmp.md +3 -9
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @module sync peer witness types
3
+ */
4
+
5
+ import { IbGibData_V1, IbGibRel8ns_V1, IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
6
+
7
+ import { SyncSagaContextData_V1, SyncSagaContextIbGib_V1, SyncSagaContextRel8ns_V1 } from '../sync-saga-context/sync-saga-context-types.mjs';
8
+ import { Witness_V1 } from '../../witness/witness-types.mjs';
9
+
10
+ /**
11
+ * Data for the SyncPeer witness.
12
+ */
13
+ export interface SyncPeerData_V1 extends IbGibData_V1 {
14
+ // Add specific settings for Sync Peer if needed (e.g. timeout, retry policy)
15
+ }
16
+
17
+ /**
18
+ * Relations for the SyncPeer witness.
19
+ */
20
+ export interface SyncPeerRel8ns_V1 extends IbGibRel8ns_V1 {
21
+ }
22
+
23
+ /**
24
+ * The SyncPeer witness IbGib.
25
+ */
26
+ export interface SyncPeerIbGib_V1 extends IbGib_V1<SyncPeerData_V1, SyncPeerRel8ns_V1> { }
27
+
28
+ /**
29
+ * The interface for the SyncPeer witness class.
30
+ * It witnesses a SyncSagaContext and returns a SyncSagaContext (Request -> Response).
31
+ */
32
+ export interface SyncPeerWitness extends Witness_V1<
33
+ SyncSagaContextData_V1,
34
+ SyncSagaContextRel8ns_V1,
35
+ SyncSagaContextIbGib_V1, // Input
36
+ SyncSagaContextData_V1,
37
+ SyncSagaContextRel8ns_V1,
38
+ SyncSagaContextIbGib_V1, // Output
39
+ SyncPeerData_V1,
40
+ SyncPeerRel8ns_V1
41
+ > {
42
+ witness(arg: SyncSagaContextIbGib_V1): Promise<SyncSagaContextIbGib_V1 | undefined>;
43
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module SyncPeer_V1 witness class
3
+ */
4
+
5
+ import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
6
+
7
+ import { SyncSagaContextIbGib_V1 } from '../sync-saga-context/sync-saga-context-types.mjs';
8
+ import { SyncPeerData_V1, SyncPeerRel8ns_V1, SyncPeerWitness } from './sync-peer-types.mjs';
9
+ import { LightWitnessBase_V1 } from '../../witness/light-witness-base-v1.mjs';
10
+
11
+ /**
12
+ * Abstract witness for talking to a Sync Peer (e.g. Remote Node or Local Simulator).
13
+ *
14
+ * Takes a SyncSagaContext (Request) and returns a SyncSagaContext (Response).
15
+ */
16
+ export abstract class SyncPeer_V1 extends LightWitnessBase_V1<SyncPeerData_V1, SyncPeerRel8ns_V1>
17
+ implements SyncPeerWitness {
18
+
19
+ protected lc: string = `[${SyncPeer_V1.name}]`;
20
+
21
+ /**
22
+ * Witness the synchronization context (Send/Receive).
23
+ *
24
+ * @param arg The OUTGOING context (Request).
25
+ * @returns The INCOMING context (Response), or undefined if failed/empty.
26
+ */
27
+ abstract witness(arg: SyncSagaContextIbGib_V1): Promise<SyncSagaContextIbGib_V1 | undefined>;
28
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @module sync saga context constants
3
+ */
4
+
5
+ /**
6
+ * Atom for the sync saga context ibgib.
7
+ */
8
+ export const SYNC_SAGA_CONTEXT_ATOM = 'sync_sagacontext';
@@ -0,0 +1,147 @@
1
+ /**
2
+ * @module sync saga context helpers
3
+ */
4
+
5
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
6
+ import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
7
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
8
+ import { IbGib_V1, } from '@ibgib/ts-gib/dist/V1/types.mjs';
9
+ import { Ib } from '@ibgib/ts-gib/dist/types.mjs';
10
+
11
+ import { SYNC_SAGA_CONTEXT_ATOM } from './sync-saga-context-constants.mjs';
12
+ import {
13
+ SyncSagaContextCmd, SyncSagaContextData_V1, SyncSagaContextIbGib_V1,
14
+ SyncSagaContextIb_V1, SyncSagaContextRel8ns_V1
15
+ } from './sync-saga-context-types.mjs';
16
+
17
+ /**
18
+ * Options for creating a SyncSagaContext ibgib.
19
+ */
20
+ export interface CreateSyncSagaContextOptions {
21
+ /**
22
+ * Optional command string (e.g. 'process').
23
+ */
24
+ cmd?: SyncSagaContextCmd | string;
25
+ /**
26
+ * The main saga frame (Init, Ack, etc.).
27
+ */
28
+ sagaFrame?: IbGib_V1;
29
+ /**
30
+ * Dependency stones (messages).
31
+ */
32
+ msgs?: IbGib_V1[];
33
+ /**
34
+ * Session identity keystones.
35
+ */
36
+ sessionKeystones?: IbGib_V1[];
37
+ /**
38
+ * Authorization claims.
39
+ */
40
+ claims?: IbGib_V1[];
41
+ /**
42
+ * Payload addresses (strings) for bulk data.
43
+ */
44
+ payload?: string[];
45
+ }
46
+
47
+ /**
48
+ * Constructs the standard 'ib' string for a Sync Saga Context stone.
49
+ */
50
+ export async function getSyncSagaContextIb({
51
+ data,
52
+ }: {
53
+ data: SyncSagaContextData_V1,
54
+ }): Promise<Ib> {
55
+ const lc = `[${getSyncSagaContextIb.name}]`;
56
+ try {
57
+ if (!data) { throw new Error(`data required (E: 839d82138c234b3e89582855594191fe)`); }
58
+ const cmd = data.cmd || 'default';
59
+ // sync_sagacontext cmd
60
+ const ib = [
61
+ SYNC_SAGA_CONTEXT_ATOM,
62
+ cmd
63
+ ].join(' ');
64
+
65
+ return ib;
66
+ } catch (error) {
67
+ console.error(`${lc} ${extractErrorMsg(error)}`);
68
+ throw error;
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Parses a standard Sync Saga Context 'ib' string.
74
+ */
75
+ export async function parseSyncSagaContextIb({
76
+ ib,
77
+ }: {
78
+ ib: Ib,
79
+ }): Promise<SyncSagaContextIb_V1> {
80
+ const lc = `[${parseSyncSagaContextIb.name}]`;
81
+ try {
82
+ const parts = ib.split(' ');
83
+ if (parts.length < 2) {
84
+ throw new Error(`Invalid sync saga context ib. Expected at least 2 parts [atom cmd]. Got ${parts.length}. (E: 8b06c88820c74f5fb9f21f148459422a)`);
85
+ }
86
+ const [atom, ...rest] = parts;
87
+ const cmd = rest.join(' '); // cmd might have spaces if it's not a strict enum? but usually single word key.
88
+
89
+ if (atom !== SYNC_SAGA_CONTEXT_ATOM) {
90
+ throw new Error(`Atom mismatch. Expected ${SYNC_SAGA_CONTEXT_ATOM}. Got ${atom}. (E: 67d71fc0f8d04840b178652309f471f5)`);
91
+ }
92
+
93
+ return { atom, cmd };
94
+ } catch (error) {
95
+ console.error(`${lc} ${extractErrorMsg(error)}`);
96
+ throw error;
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Creates a new SyncSagaContext ibGib stone.
102
+ *
103
+ * @returns The context ibGib.
104
+ */
105
+ export async function createSyncSagaContext({
106
+ cmd,
107
+ sagaFrame,
108
+ msgs,
109
+ sessionKeystones,
110
+ claims,
111
+ payload,
112
+ }: CreateSyncSagaContextOptions): Promise<SyncSagaContextIbGib_V1> {
113
+
114
+ const data: SyncSagaContextData_V1 = {
115
+ cmd,
116
+ };
117
+
118
+ const rel8ns: SyncSagaContextRel8ns_V1 = {};
119
+
120
+ if (sagaFrame) {
121
+ rel8ns.sagaFrame = [getIbGibAddr(sagaFrame)];
122
+ }
123
+ if (msgs && msgs.length > 0) {
124
+ rel8ns.msgs = msgs.map(getIbGibAddr);
125
+ }
126
+ if (sessionKeystones && sessionKeystones.length > 0) {
127
+ rel8ns.sessionKeystone = sessionKeystones.map(getIbGibAddr);
128
+ }
129
+ if (claims && claims.length > 0) {
130
+ rel8ns.claims = claims.map(getIbGibAddr);
131
+ }
132
+ if (payload && payload.length > 0) {
133
+ rel8ns.payload = payload;
134
+ }
135
+
136
+ // Generate standard ib
137
+ const ib = await getSyncSagaContextIb({ data });
138
+
139
+ const contextIbGib = await Factory_V1.stone<SyncSagaContextData_V1, SyncSagaContextRel8ns_V1>({
140
+ parentPrimitiveIb: SYNC_SAGA_CONTEXT_ATOM,
141
+ ib,
142
+ data,
143
+ rel8ns,
144
+ });
145
+
146
+ return contextIbGib as SyncSagaContextIbGib_V1;
147
+ }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @module sync saga context types
3
+ */
4
+
5
+ import { IbGibData_V1, IbGibRel8ns_V1, IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
6
+
7
+ // #region SyncSagaContextCmd
8
+ /**
9
+ * Commands for the Sync Saga Context.
10
+ */
11
+ export type SyncSagaContextCmd =
12
+ | 'process'
13
+ | 'ping';
14
+ export const SyncSagaContextCmd = {
15
+ process: 'process' as SyncSagaContextCmd,
16
+ ping: 'ping' as SyncSagaContextCmd,
17
+ } satisfies { [key in SyncSagaContextCmd]: SyncSagaContextCmd };
18
+ export const SYNC_SAGA_CONTEXT_CMD_VALID_VALUES = Object.values(SyncSagaContextCmd);
19
+ export function isValidSyncSagaContextCmd(cmd: string): cmd is SyncSagaContextCmd {
20
+ return SYNC_SAGA_CONTEXT_CMD_VALID_VALUES.includes(cmd as SyncSagaContextCmd);
21
+ }
22
+ // #endregion SyncSagaContextCmd
23
+
24
+ export interface SyncSagaContextIb_V1 {
25
+ atom: string; // SYNC_SAGA_CONTEXT_ATOM
26
+ cmd: SyncSagaContextCmd | string;
27
+ }
28
+
29
+ /**
30
+ * Data payload for the Sync Saga Context.
31
+ */
32
+ export interface SyncSagaContextData_V1 extends IbGibData_V1 {
33
+ /**
34
+ * Contextual command or metadata for the transport layer.
35
+ * e.g. "process", "ping".
36
+ */
37
+ cmd?: SyncSagaContextCmd | string;
38
+ }
39
+
40
+ /**
41
+ * Relationships for the Sync Saga Context.
42
+ * Contains the "Tip" saga frame and all necessary dependency stones/identities/claims.
43
+ */
44
+ export interface SyncSagaContextRel8ns_V1 extends IbGibRel8ns_V1 {
45
+ /**
46
+ * The primary Saga Frame being transported (Init, Ack, Delta, etc.).
47
+ * 0..1 (Optional only if trivial ping or strict metadata update)
48
+ */
49
+ sagaFrame?: string[]; // [addr]
50
+
51
+ /**
52
+ * Message stones associated with this context (e.g. Init payload stone).
53
+ * These provide the data payload for the saga frame.
54
+ */
55
+ msgs?: string[];
56
+
57
+ /**
58
+ * The Ephemeral Session Keystone Identity used for this saga.
59
+ * Required for validating the saga frame signature.
60
+ */
61
+ sessionKeystone?: string[];
62
+
63
+ /**
64
+ * Authorization claims linking Session Key to a Primary Identity.
65
+ * Required for authorizing the session key.
66
+ */
67
+ claims?: string[];
68
+
69
+ /**
70
+ * Payload data (ibGibs) being transported in this context (e.g. for Delta stage).
71
+ * These are the actual stones/timelines being synced.
72
+ */
73
+ payload?: string[];
74
+ }
75
+
76
+ /**
77
+ * The SyncSagaContext is a full-fledged ibGib used as the payload
78
+ * between Sync Peers.
79
+ */
80
+ export interface SyncSagaContextIbGib_V1 extends IbGib_V1<SyncSagaContextData_V1, SyncSagaContextRel8ns_V1> { }