@ibgib/vcs-gib 0.0.6

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 (202) hide show
  1. package/README.md +94 -0
  2. package/VCS_CLI_USER_GUIDE.md +198 -0
  3. package/dist/AUTO-GENERATED-version.d.mts +6 -0
  4. package/dist/AUTO-GENERATED-version.d.mts.map +1 -0
  5. package/dist/AUTO-GENERATED-version.mjs +6 -0
  6. package/dist/AUTO-GENERATED-version.mjs.map +1 -0
  7. package/dist/assumptions.respec.d.mts +2 -0
  8. package/dist/assumptions.respec.d.mts.map +1 -0
  9. package/dist/assumptions.respec.mjs +41 -0
  10. package/dist/assumptions.respec.mjs.map +1 -0
  11. package/dist/bootstrap/node-bootstrap.d.mts +35 -0
  12. package/dist/bootstrap/node-bootstrap.d.mts.map +1 -0
  13. package/dist/bootstrap/node-bootstrap.mjs +165 -0
  14. package/dist/bootstrap/node-bootstrap.mjs.map +1 -0
  15. package/dist/bootstrap/node-bootstrap.respec.node.d.mts +7 -0
  16. package/dist/bootstrap/node-bootstrap.respec.node.d.mts.map +1 -0
  17. package/dist/bootstrap/node-bootstrap.respec.node.mjs +28 -0
  18. package/dist/bootstrap/node-bootstrap.respec.node.mjs.map +1 -0
  19. package/dist/cli/cli-arg-parser.d.mts +27 -0
  20. package/dist/cli/cli-arg-parser.d.mts.map +1 -0
  21. package/dist/cli/cli-arg-parser.mjs +96 -0
  22. package/dist/cli/cli-arg-parser.mjs.map +1 -0
  23. package/dist/cli/cli-arg-parser.respec.node.d.mts +7 -0
  24. package/dist/cli/cli-arg-parser.respec.node.d.mts.map +1 -0
  25. package/dist/cli/cli-arg-parser.respec.node.mjs +35 -0
  26. package/dist/cli/cli-arg-parser.respec.node.mjs.map +1 -0
  27. package/dist/cli/cli-constants.d.mts +26 -0
  28. package/dist/cli/cli-constants.d.mts.map +1 -0
  29. package/dist/cli/cli-constants.mjs +67 -0
  30. package/dist/cli/cli-constants.mjs.map +1 -0
  31. package/dist/cli/cli-e2e.respec.node.d.mts +8 -0
  32. package/dist/cli/cli-e2e.respec.node.d.mts.map +1 -0
  33. package/dist/cli/cli-e2e.respec.node.mjs +263 -0
  34. package/dist/cli/cli-e2e.respec.node.mjs.map +1 -0
  35. package/dist/cli/commands/add-cmd.d.mts +20 -0
  36. package/dist/cli/commands/add-cmd.d.mts.map +1 -0
  37. package/dist/cli/commands/add-cmd.mjs +333 -0
  38. package/dist/cli/commands/add-cmd.mjs.map +1 -0
  39. package/dist/cli/commands/branch-checkout-cmd.respec.node.d.mts +7 -0
  40. package/dist/cli/commands/branch-checkout-cmd.respec.node.d.mts.map +1 -0
  41. package/dist/cli/commands/branch-checkout-cmd.respec.node.mjs +288 -0
  42. package/dist/cli/commands/branch-checkout-cmd.respec.node.mjs.map +1 -0
  43. package/dist/cli/commands/branch-cmd.d.mts +25 -0
  44. package/dist/cli/commands/branch-cmd.d.mts.map +1 -0
  45. package/dist/cli/commands/branch-cmd.mjs +187 -0
  46. package/dist/cli/commands/branch-cmd.mjs.map +1 -0
  47. package/dist/cli/commands/checkout-cmd.d.mts +21 -0
  48. package/dist/cli/commands/checkout-cmd.d.mts.map +1 -0
  49. package/dist/cli/commands/checkout-cmd.mjs +154 -0
  50. package/dist/cli/commands/checkout-cmd.mjs.map +1 -0
  51. package/dist/cli/commands/commit-cmd.d.mts +23 -0
  52. package/dist/cli/commands/commit-cmd.d.mts.map +1 -0
  53. package/dist/cli/commands/commit-cmd.mjs +326 -0
  54. package/dist/cli/commands/commit-cmd.mjs.map +1 -0
  55. package/dist/cli/commands/commit-log-cmd.respec.node.d.mts +7 -0
  56. package/dist/cli/commands/commit-log-cmd.respec.node.d.mts.map +1 -0
  57. package/dist/cli/commands/commit-log-cmd.respec.node.mjs +251 -0
  58. package/dist/cli/commands/commit-log-cmd.respec.node.mjs.map +1 -0
  59. package/dist/cli/commands/init-cmd.d.mts +20 -0
  60. package/dist/cli/commands/init-cmd.d.mts.map +1 -0
  61. package/dist/cli/commands/init-cmd.mjs +119 -0
  62. package/dist/cli/commands/init-cmd.mjs.map +1 -0
  63. package/dist/cli/commands/init-cmd.respec.node.d.mts +7 -0
  64. package/dist/cli/commands/init-cmd.respec.node.d.mts.map +1 -0
  65. package/dist/cli/commands/init-cmd.respec.node.mjs +40 -0
  66. package/dist/cli/commands/init-cmd.respec.node.mjs.map +1 -0
  67. package/dist/cli/commands/log-cmd.d.mts +27 -0
  68. package/dist/cli/commands/log-cmd.d.mts.map +1 -0
  69. package/dist/cli/commands/log-cmd.mjs +146 -0
  70. package/dist/cli/commands/log-cmd.mjs.map +1 -0
  71. package/dist/cli/commands/status-add-cmd.respec.node.d.mts +7 -0
  72. package/dist/cli/commands/status-add-cmd.respec.node.d.mts.map +1 -0
  73. package/dist/cli/commands/status-add-cmd.respec.node.mjs +215 -0
  74. package/dist/cli/commands/status-add-cmd.respec.node.mjs.map +1 -0
  75. package/dist/cli/commands/status-cmd.d.mts +25 -0
  76. package/dist/cli/commands/status-cmd.d.mts.map +1 -0
  77. package/dist/cli/commands/status-cmd.mjs +286 -0
  78. package/dist/cli/commands/status-cmd.mjs.map +1 -0
  79. package/dist/cli/vcs-cli-main.d.mts +14 -0
  80. package/dist/cli/vcs-cli-main.d.mts.map +1 -0
  81. package/dist/cli/vcs-cli-main.mjs +136 -0
  82. package/dist/cli/vcs-cli-main.mjs.map +1 -0
  83. package/dist/engine/branch/branch-graph-helper.d.mts +19 -0
  84. package/dist/engine/branch/branch-graph-helper.d.mts.map +1 -0
  85. package/dist/engine/branch/branch-graph-helper.mjs +49 -0
  86. package/dist/engine/branch/branch-graph-helper.mjs.map +1 -0
  87. package/dist/engine/branch/branch-helper.d.mts +26 -0
  88. package/dist/engine/branch/branch-helper.d.mts.map +1 -0
  89. package/dist/engine/branch/branch-helper.mjs +57 -0
  90. package/dist/engine/branch/branch-helper.mjs.map +1 -0
  91. package/dist/engine/branch/branch-space-helper.d.mts +22 -0
  92. package/dist/engine/branch/branch-space-helper.d.mts.map +1 -0
  93. package/dist/engine/branch/branch-space-helper.mjs +77 -0
  94. package/dist/engine/branch/branch-space-helper.mjs.map +1 -0
  95. package/dist/engine/branch/branch-space.respec.node.d.mts +8 -0
  96. package/dist/engine/branch/branch-space.respec.node.d.mts.map +1 -0
  97. package/dist/engine/branch/branch-space.respec.node.mjs +138 -0
  98. package/dist/engine/branch/branch-space.respec.node.mjs.map +1 -0
  99. package/dist/engine/branch/branch-types.d.mts +26 -0
  100. package/dist/engine/branch/branch-types.d.mts.map +1 -0
  101. package/dist/engine/branch/branch-types.mjs +7 -0
  102. package/dist/engine/branch/branch-types.mjs.map +1 -0
  103. package/dist/engine/diff/line-diff-helper.d.mts +76 -0
  104. package/dist/engine/diff/line-diff-helper.d.mts.map +1 -0
  105. package/dist/engine/diff/line-diff-helper.mjs +144 -0
  106. package/dist/engine/diff/line-diff-helper.mjs.map +1 -0
  107. package/dist/engine/diff/line-diff-helper.respec.node.d.mts +7 -0
  108. package/dist/engine/diff/line-diff-helper.respec.node.d.mts.map +1 -0
  109. package/dist/engine/diff/line-diff-helper.respec.node.mjs +66 -0
  110. package/dist/engine/diff/line-diff-helper.respec.node.mjs.map +1 -0
  111. package/dist/engine/filter/glob-helper.d.mts +51 -0
  112. package/dist/engine/filter/glob-helper.d.mts.map +1 -0
  113. package/dist/engine/filter/glob-helper.mjs +132 -0
  114. package/dist/engine/filter/glob-helper.mjs.map +1 -0
  115. package/dist/engine/filter/glob-helper.respec.node.d.mts +7 -0
  116. package/dist/engine/filter/glob-helper.respec.node.d.mts.map +1 -0
  117. package/dist/engine/filter/glob-helper.respec.node.mjs +78 -0
  118. package/dist/engine/filter/glob-helper.respec.node.mjs.map +1 -0
  119. package/dist/engine/index/index-helper.d.mts +78 -0
  120. package/dist/engine/index/index-helper.d.mts.map +1 -0
  121. package/dist/engine/index/index-helper.mjs +289 -0
  122. package/dist/engine/index/index-helper.mjs.map +1 -0
  123. package/dist/engine/index/index-types.d.mts +63 -0
  124. package/dist/engine/index/index-types.d.mts.map +1 -0
  125. package/dist/engine/index/index-types.mjs +7 -0
  126. package/dist/engine/index/index-types.mjs.map +1 -0
  127. package/dist/engine/item/item-atom-helper.d.mts +20 -0
  128. package/dist/engine/item/item-atom-helper.d.mts.map +1 -0
  129. package/dist/engine/item/item-atom-helper.mjs +30 -0
  130. package/dist/engine/item/item-atom-helper.mjs.map +1 -0
  131. package/dist/engine/item/item-helper.d.mts +37 -0
  132. package/dist/engine/item/item-helper.d.mts.map +1 -0
  133. package/dist/engine/item/item-helper.mjs +194 -0
  134. package/dist/engine/item/item-helper.mjs.map +1 -0
  135. package/dist/engine/item/item-types.d.mts +127 -0
  136. package/dist/engine/item/item-types.d.mts.map +1 -0
  137. package/dist/engine/item/item-types.mjs +16 -0
  138. package/dist/engine/item/item-types.mjs.map +1 -0
  139. package/dist/index.d.mts +7 -0
  140. package/dist/index.d.mts.map +1 -0
  141. package/dist/index.mjs +7 -0
  142. package/dist/index.mjs.map +1 -0
  143. package/dist/respec-gib.node.d.mts +7 -0
  144. package/dist/respec-gib.node.d.mts.map +1 -0
  145. package/dist/respec-gib.node.mjs +11 -0
  146. package/dist/respec-gib.node.mjs.map +1 -0
  147. package/dist/vcs-gib-constants.d.mts +7 -0
  148. package/dist/vcs-gib-constants.d.mts.map +1 -0
  149. package/dist/vcs-gib-constants.mjs +7 -0
  150. package/dist/vcs-gib-constants.mjs.map +1 -0
  151. package/dist/vcs-gib.respec.node.d.mts +8 -0
  152. package/dist/vcs-gib.respec.node.d.mts.map +1 -0
  153. package/dist/vcs-gib.respec.node.mjs +82 -0
  154. package/dist/vcs-gib.respec.node.mjs.map +1 -0
  155. package/generate-version-file.js +20 -0
  156. package/package.json +28 -0
  157. package/src/AUTO-GENERATED-version.mts +5 -0
  158. package/src/assumptions.respec.mts +50 -0
  159. package/src/bootstrap/node-bootstrap.mts +198 -0
  160. package/src/bootstrap/node-bootstrap.respec.node.mts +35 -0
  161. package/src/cli/cli-arg-parser.mts +119 -0
  162. package/src/cli/cli-arg-parser.respec.node.mts +45 -0
  163. package/src/cli/cli-constants.mts +77 -0
  164. package/src/cli/cli-e2e.respec.node.mts +318 -0
  165. package/src/cli/commands/add-cmd.mts +415 -0
  166. package/src/cli/commands/branch-checkout-cmd.respec.node.mts +322 -0
  167. package/src/cli/commands/branch-cmd.mts +243 -0
  168. package/src/cli/commands/checkout-cmd.mts +202 -0
  169. package/src/cli/commands/commit-cmd.mts +421 -0
  170. package/src/cli/commands/commit-log-cmd.respec.node.mts +276 -0
  171. package/src/cli/commands/init-cmd.mts +152 -0
  172. package/src/cli/commands/init-cmd.respec.node.mts +49 -0
  173. package/src/cli/commands/log-cmd.mts +197 -0
  174. package/src/cli/commands/status-add-cmd.respec.node.mts +246 -0
  175. package/src/cli/commands/status-cmd.mts +366 -0
  176. package/src/cli/vcs-cli-main.mts +153 -0
  177. package/src/engine/branch/branch-graph-helper.mts +69 -0
  178. package/src/engine/branch/branch-helper.mts +79 -0
  179. package/src/engine/branch/branch-space-helper.mts +104 -0
  180. package/src/engine/branch/branch-space.respec.node.mts +158 -0
  181. package/src/engine/branch/branch-types.mts +29 -0
  182. package/src/engine/diff/line-diff-helper.mts +210 -0
  183. package/src/engine/diff/line-diff-helper.respec.node.mts +84 -0
  184. package/src/engine/filter/glob-helper.mts +165 -0
  185. package/src/engine/filter/glob-helper.respec.node.mts +94 -0
  186. package/src/engine/index/index-helper.mts +378 -0
  187. package/src/engine/index/index-types.mts +66 -0
  188. package/src/engine/item/item-atom-helper.mts +30 -0
  189. package/src/engine/item/item-helper.mts +239 -0
  190. package/src/engine/item/item-types.mts +136 -0
  191. package/src/index.mts +7 -0
  192. package/src/respec-gib.node.mts +12 -0
  193. package/src/vcs-gib-constants.mts +7 -0
  194. package/src/vcs-gib.respec.node.mts +96 -0
  195. package/test_runs/001-hello-node/20260728_090100_0001-flow-core-main.md +39 -0
  196. package/test_runs/001-hello-node/20260728_090200_0003-flow-branching-worktree.md +54 -0
  197. package/test_runs/001-hello-node/20260728_090300_0002-flow-selective-add.md +45 -0
  198. package/test_runs/001-hello-node/20260728_142100_0007-flow-edge-cases.md +44 -0
  199. package/test_runs/001-hello-node/20260728_142400_0005-flow-hardcoded-ignores.md +36 -0
  200. package/tools/pack-for-test.mjs +73 -0
  201. package/tsconfig.json +18 -0
  202. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,286 @@
1
+ /**
2
+ * @module status-cmd
3
+ *
4
+ * Command handler for `vcs status`.
5
+ * Compares physical workspace state against active branch snapshot tip and in-band index staging area.
6
+ */
7
+ import path from 'node:path';
8
+ import fs from 'node:fs/promises';
9
+ import crypto from 'node:crypto';
10
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
11
+ import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
12
+ import { getOrCreateBranchSpace } from '../../engine/branch/branch-space-helper.mjs';
13
+ import { B2TFS_CHILD_ITEM_REL8N_NAME } from '../../engine/item/item-types.mjs';
14
+ import { getIbGibWithMetaspaceFallback } from '../../engine/item/item-helper.mjs';
15
+ import { isPathFiltered, parseFilterFileContent } from '../../engine/filter/glob-helper.mjs';
16
+ import { getB2tFSIndexIbGib } from '../../engine/index/index-helper.mjs';
17
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
18
+ const lcFile = `[status-cmd]`;
19
+ const logalot = GLOBAL_LOG_A_LOT;
20
+ export async function executeStatusCmd({ targetDir = process.cwd(), vcsFolderName = '.vcsgib', quiet = false, } = {}) {
21
+ const lc = `${lcFile}[${executeStatusCmd.name}]`;
22
+ try {
23
+ if (logalot) {
24
+ console.log(`${lc} starting executeStatusCmd (I: 7a8b9c10d11e12f13a14b15c16d17e18)`);
25
+ }
26
+ const absTargetDir = path.resolve(targetDir);
27
+ const { metaspace, localSpace, vcsPath, repoRoot } = await bootstrapVcsMetaspace({
28
+ repoPath: absTargetDir,
29
+ vcsFolderName,
30
+ });
31
+ // Verify repo exists
32
+ try {
33
+ await fs.access(vcsPath);
34
+ }
35
+ catch {
36
+ throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 4d5e6f7a8b9c10d11e12f13a14b15c6d)`);
37
+ }
38
+ // 1. Fetch authoritative B2tFSIndexIbGib_V1 directly from localSpace
39
+ const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
40
+ const branchName = indexIbGib?.data?.activeBranch || 'main';
41
+ const activeWorktreeDir = branchName === 'main' ? repoRoot : path.join(repoRoot, 'b', branchName);
42
+ // Target active branch space b2s_<activeBranch>
43
+ const { space: activeBranchSpace } = await getOrCreateBranchSpace({
44
+ metaspace,
45
+ vcsPath,
46
+ branchName,
47
+ });
48
+ // 2. Extract staged items directly from in-band B2tFSIndexIbGib_V1 data
49
+ const stagedMap = new Map();
50
+ const indexStagedPaths = indexIbGib?.data?.stagedPaths || {};
51
+ for (const [relPath, itemRec] of Object.entries(indexStagedPaths)) {
52
+ stagedMap.set(relPath, itemRec);
53
+ }
54
+ // 3. Find active branch root item address from in-band branch graph node
55
+ let rootItemAddr;
56
+ const branchAddrs = [
57
+ ...(indexIbGib?.rel8ns?.branch || []),
58
+ ...(indexIbGib?.rel8ns?.branch_tjp || []),
59
+ ];
60
+ if (branchAddrs.length > 0) {
61
+ let branchIbGibs = [];
62
+ for (const bAddr of branchAddrs) {
63
+ const bIbGib = await getIbGibWithMetaspaceFallback({
64
+ addr: bAddr,
65
+ space: activeBranchSpace,
66
+ metaspace,
67
+ });
68
+ if (bIbGib) {
69
+ branchIbGibs.push(bIbGib);
70
+ }
71
+ }
72
+ const activeBranchIbGib = branchIbGibs.find((b) => b?.data?.name === branchName) || branchIbGibs.at(0);
73
+ rootItemAddr = activeBranchIbGib?.rel8ns?.b2tfs_item?.at(0);
74
+ }
75
+ // Read .ibgibignore patterns
76
+ let filterPatterns = [];
77
+ const ignorePath = path.join(activeWorktreeDir, '.ibgibignore');
78
+ try {
79
+ const ignoreContent = await fs.readFile(ignorePath, 'utf8');
80
+ filterPatterns = parseFilterFileContent(ignoreContent);
81
+ }
82
+ catch {
83
+ // Ignore file missing is fine
84
+ }
85
+ // 4. Walk active branch graph items
86
+ const branchItemsMap = new Map();
87
+ if (rootItemAddr) {
88
+ const rootItem = await getIbGibWithMetaspaceFallback({
89
+ addr: rootItemAddr,
90
+ space: activeBranchSpace,
91
+ metaspace,
92
+ });
93
+ if (rootItem) {
94
+ await statusCmd_walkBranchGraph({
95
+ item: rootItem,
96
+ space: activeBranchSpace,
97
+ metaspace,
98
+ currentRelPath: '',
99
+ outMap: branchItemsMap,
100
+ });
101
+ }
102
+ }
103
+ // 5. Scan physical workspace
104
+ const physicalItemsMap = new Map();
105
+ await statusCmd_scanPhysicalWorkspace({
106
+ dirPath: activeWorktreeDir,
107
+ baseDir: activeWorktreeDir,
108
+ vcsFolderName,
109
+ filterPatterns,
110
+ outMap: physicalItemsMap,
111
+ });
112
+ // 6. Categorize items into staged, modified, deleted, untracked
113
+ const staged = [];
114
+ const modified = [];
115
+ const deleted = [];
116
+ const untracked = [];
117
+ // Add staged items
118
+ for (const [relPath, stagedRec] of stagedMap.entries()) {
119
+ staged.push({
120
+ path: relPath,
121
+ fsType: stagedRec.fsType || 'file',
122
+ status: 'staged',
123
+ });
124
+ }
125
+ // Compare physical items against branch items and staged
126
+ for (const [relPath, physItem] of physicalItemsMap.entries()) {
127
+ if (stagedMap.has(relPath)) {
128
+ continue; // Staged item already reported
129
+ }
130
+ const branchItem = branchItemsMap.get(relPath);
131
+ if (!branchItem) {
132
+ // Not in active branch snapshot and not staged => untracked
133
+ untracked.push({
134
+ path: relPath,
135
+ fsType: physItem.isDirectory ? 'folder' : 'file',
136
+ status: 'untracked',
137
+ });
138
+ }
139
+ else {
140
+ // Tracked in branch -> check if modified
141
+ if (!physItem.isDirectory && physItem.fileHash && branchItem.fileHash && physItem.fileHash !== branchItem.fileHash) {
142
+ modified.push({
143
+ path: relPath,
144
+ fsType: 'file',
145
+ status: 'modified',
146
+ });
147
+ }
148
+ }
149
+ }
150
+ // Check for deleted items (in branch snapshot, but not in physical workspace and not staged)
151
+ for (const [relPath, branchItem] of branchItemsMap.entries()) {
152
+ if (!relPath || relPath === '.' || relPath === '') {
153
+ continue;
154
+ }
155
+ if (!physicalItemsMap.has(relPath) && !stagedMap.has(relPath)) {
156
+ deleted.push({
157
+ path: relPath,
158
+ fsType: branchItem.fsType,
159
+ status: 'deleted',
160
+ });
161
+ }
162
+ }
163
+ if (!quiet) {
164
+ console.log(`On branch ${branchName} (I: 9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b)`);
165
+ if (staged.length > 0) {
166
+ console.log('\nChanges to be committed:');
167
+ for (const item of staged) {
168
+ console.log(` staged: ${item.path}`);
169
+ }
170
+ }
171
+ if (modified.length > 0 || deleted.length > 0) {
172
+ console.log('\nChanges not staged for commit:');
173
+ for (const item of modified) {
174
+ console.log(` modified: ${item.path}`);
175
+ }
176
+ for (const item of deleted) {
177
+ console.log(` deleted: ${item.path}`);
178
+ }
179
+ }
180
+ if (untracked.length > 0) {
181
+ console.log('\nUntracked files:');
182
+ for (const item of untracked) {
183
+ console.log(` untracked:${item.path}`);
184
+ }
185
+ }
186
+ if (staged.length === 0 && modified.length === 0 && deleted.length === 0 && untracked.length === 0) {
187
+ console.log('nothing to commit, working tree clean');
188
+ }
189
+ }
190
+ return {
191
+ branchName,
192
+ staged,
193
+ modified,
194
+ deleted,
195
+ untracked,
196
+ };
197
+ }
198
+ catch (error) {
199
+ console.error(`${lc} ${extractErrorMsg(error)} (E: 5e6f7a8b9c10d11e12f13a14b15c6d7e)`);
200
+ throw error;
201
+ }
202
+ finally {
203
+ if (logalot) {
204
+ console.log(`${lc} complete. (I: 6f7a8b9c10d11e12f13a14b15c6d7e8f)`);
205
+ }
206
+ }
207
+ }
208
+ // #region statusCmd_walkBranchGraph
209
+ async function statusCmd_walkBranchGraph({ item, space, metaspace, currentRelPath, outMap, }) {
210
+ if (!item || !item.data) {
211
+ return;
212
+ }
213
+ const { fsType, fileHash } = item.data;
214
+ if (currentRelPath) {
215
+ outMap.set(currentRelPath, { relPath: currentRelPath, fileHash, fsType });
216
+ }
217
+ if (fsType === 'folder') {
218
+ const childAddrs = item.rel8ns?.[B2TFS_CHILD_ITEM_REL8N_NAME] || [];
219
+ for (const childAddr of childAddrs) {
220
+ const childItem = await getIbGibWithMetaspaceFallback({
221
+ addr: childAddr,
222
+ space,
223
+ metaspace,
224
+ });
225
+ if (childItem && childItem.data) {
226
+ const childRelPath = currentRelPath
227
+ ? `${currentRelPath}/${childItem.data.name}`
228
+ : childItem.data.name;
229
+ await statusCmd_walkBranchGraph({
230
+ item: childItem,
231
+ space,
232
+ metaspace,
233
+ currentRelPath: childRelPath,
234
+ outMap,
235
+ });
236
+ }
237
+ }
238
+ }
239
+ }
240
+ // #endregion statusCmd_walkBranchGraph
241
+ // #region statusCmd_scanPhysicalWorkspace
242
+ async function statusCmd_scanPhysicalWorkspace({ dirPath, baseDir, vcsFolderName, filterPatterns, outMap, }) {
243
+ let entries = [];
244
+ try {
245
+ entries = await fs.readdir(dirPath, { withFileTypes: true });
246
+ }
247
+ catch {
248
+ return;
249
+ }
250
+ for (const entry of entries) {
251
+ const fullEntryPath = path.join(dirPath, entry.name);
252
+ const relPath = path.relative(baseDir, fullEntryPath).replace(/\\/g, '/');
253
+ // Ignore vcs storage folder, .git, and worktrees folder b
254
+ if (relPath === vcsFolderName || relPath.startsWith(vcsFolderName + '/') ||
255
+ relPath === '.git' || relPath.startsWith('.git/') ||
256
+ relPath === 'b' || relPath.startsWith('b/')) {
257
+ continue;
258
+ }
259
+ if (isPathFiltered({ relativePath: relPath, isDirectory: entry.isDirectory(), filterPatterns })) {
260
+ continue;
261
+ }
262
+ if (entry.isDirectory()) {
263
+ outMap.set(relPath, { relPath, fullPath: fullEntryPath, isDirectory: true });
264
+ await statusCmd_scanPhysicalWorkspace({
265
+ dirPath: fullEntryPath,
266
+ baseDir,
267
+ vcsFolderName,
268
+ filterPatterns,
269
+ outMap,
270
+ });
271
+ }
272
+ else if (entry.isFile()) {
273
+ let fileHash;
274
+ try {
275
+ const fileData = await fs.readFile(fullEntryPath);
276
+ fileHash = crypto.createHash('sha256').update(fileData).digest('hex');
277
+ }
278
+ catch {
279
+ // File unreadable
280
+ }
281
+ outMap.set(relPath, { relPath, fullPath: fullEntryPath, isDirectory: false, fileHash });
282
+ }
283
+ }
284
+ }
285
+ // #endregion statusCmd_scanPhysicalWorkspace
286
+ //# sourceMappingURL=status-cmd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/status-cmd.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @module vcs-cli-main
4
+ *
5
+ * Executable CLI entry point for the `vcs` command line interface.
6
+ * Parses command line arguments and dispatches execution to subcommand handlers.
7
+ */
8
+ export interface MainOptions {
9
+ argv?: string[];
10
+ }
11
+ export declare function showHelp(): void;
12
+ export declare function showVersion(): void;
13
+ export declare function main({ argv, }?: MainOptions): Promise<number>;
14
+ //# sourceMappingURL=vcs-cli-main.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-cli-main.d.mts","sourceRoot":"","sources":["../../src/cli/vcs-cli-main.mts"],"names":[],"mappings":";AACA;;;;;GAKG;AAmBH,MAAM,WAAW,WAAW;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAyB/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,wBAAsB,IAAI,CAAC,EACvB,IAA4B,GAC/B,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyEpC"}
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @module vcs-cli-main
4
+ *
5
+ * Executable CLI entry point for the `vcs` command line interface.
6
+ * Parses command line arguments and dispatches execution to subcommand handlers.
7
+ */
8
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
9
+ import { parseVcsArgs } from './cli-arg-parser.mjs';
10
+ import { VCS_SUBCOMMANDS } from './cli-constants.mjs';
11
+ import { executeInitCmd } from './commands/init-cmd.mjs';
12
+ import { executeStatusCmd } from './commands/status-cmd.mjs';
13
+ import { executeAddCmd } from './commands/add-cmd.mjs';
14
+ import { executeCommitCmd } from './commands/commit-cmd.mjs';
15
+ import { executeLogCmd } from './commands/log-cmd.mjs';
16
+ import { executeBranchCmd } from './commands/branch-cmd.mjs';
17
+ import { executeCheckoutCmd } from './commands/checkout-cmd.mjs';
18
+ import { AUTO_GENERATED_VERSION } from '../AUTO-GENERATED-version.mjs';
19
+ import { GLOBAL_LOG_A_LOT } from '../vcs-gib-constants.mjs';
20
+ const lcFile = `[vcs-cli-main]`;
21
+ const logalot = GLOBAL_LOG_A_LOT;
22
+ export function showHelp() {
23
+ const helpText = `
24
+ vcs - Decentralized Version Control System (ibgib)
25
+
26
+ Usage:
27
+ vcs <command> [options] [arguments]
28
+
29
+ Commands:
30
+ init [dir] Initialize a new ibgib repository
31
+ status Show repository working tree status
32
+ add <path...> Stage file/folder changes (-a, --all to stage all)
33
+ commit -m "message" Record snapshot changes to the repository
34
+ log Show commit logs
35
+ branch [name] List or create branches
36
+ checkout <branch> Switch to a specified branch and project worktree
37
+
38
+ Flags:
39
+ -h, --help Show help information
40
+ -v, --version Show version information
41
+ -m <message> Commit message
42
+ -b <branch> Target branch name
43
+ -a, --all Stage all tracked/untracked files (for add)
44
+ -f, --force Force operation execution
45
+ `;
46
+ console.log(helpText.trim());
47
+ }
48
+ export function showVersion() {
49
+ console.log(`@ibgib/vcs-gib v${AUTO_GENERATED_VERSION}`);
50
+ }
51
+ export async function main({ argv = process.argv.slice(2), } = {}) {
52
+ const lc = `${lcFile}[${main.name}]`;
53
+ try {
54
+ if (logalot) {
55
+ console.log(`${lc} starting... (I: 4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d)`);
56
+ }
57
+ const parsed = parseVcsArgs(argv);
58
+ if (parsed.flags.help) {
59
+ showHelp();
60
+ return 0;
61
+ }
62
+ switch (parsed.command) {
63
+ case VCS_SUBCOMMANDS.INIT: {
64
+ const targetDir = parsed.positionals[0] || process.cwd();
65
+ await executeInitCmd({ targetDir });
66
+ break;
67
+ }
68
+ case VCS_SUBCOMMANDS.STATUS: {
69
+ const targetDir = parsed.positionals[0] || process.cwd();
70
+ await executeStatusCmd({ targetDir });
71
+ break;
72
+ }
73
+ case VCS_SUBCOMMANDS.ADD: {
74
+ await executeAddCmd({
75
+ paths: parsed.positionals,
76
+ all: parsed.flags.all,
77
+ });
78
+ break;
79
+ }
80
+ case VCS_SUBCOMMANDS.COMMIT: {
81
+ await executeCommitCmd({
82
+ message: parsed.flags.message,
83
+ });
84
+ break;
85
+ }
86
+ case VCS_SUBCOMMANDS.LOG: {
87
+ const targetDir = parsed.positionals[0] || process.cwd();
88
+ await executeLogCmd({ targetDir });
89
+ break;
90
+ }
91
+ case VCS_SUBCOMMANDS.BRANCH: {
92
+ const branchName = parsed.positionals[0] || parsed.flags.branchName;
93
+ await executeBranchCmd({ branchName });
94
+ break;
95
+ }
96
+ case VCS_SUBCOMMANDS.CHECKOUT: {
97
+ const branchName = parsed.positionals[0] || parsed.flags.branchName;
98
+ await executeCheckoutCmd({ branchName });
99
+ break;
100
+ }
101
+ case VCS_SUBCOMMANDS.VERSION: {
102
+ showVersion();
103
+ break;
104
+ }
105
+ case VCS_SUBCOMMANDS.HELP:
106
+ default: {
107
+ showHelp();
108
+ break;
109
+ }
110
+ }
111
+ return 0;
112
+ }
113
+ catch (error) {
114
+ console.error(`Error: ${extractErrorMsg(error)} (E: 8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c)`);
115
+ return 1;
116
+ }
117
+ finally {
118
+ if (logalot) {
119
+ console.log(`${lc} complete. (I: 9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c)`);
120
+ }
121
+ }
122
+ }
123
+ // Auto-run if executed directly as entry script
124
+ const isMainScript = process.argv[1] && (process.argv[1].endsWith('vcs-cli-main.mjs') ||
125
+ process.argv[1].endsWith('vcs-cli-main.mts') ||
126
+ process.argv[1].endsWith('vcs'));
127
+ if (isMainScript) {
128
+ main().then((code) => {
129
+ if (code !== 0) {
130
+ process.exit(code);
131
+ }
132
+ }).catch(() => {
133
+ process.exit(1);
134
+ });
135
+ }
136
+ //# sourceMappingURL=vcs-cli-main.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vcs-cli-main.mjs","sourceRoot":"","sources":["../../src/cli/vcs-cli-main.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @module branch-graph-helper
3
+ *
4
+ * Helper for extracting dependency graphs and populating branch spaces.
5
+ */
6
+ import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
7
+ import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
8
+ import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
9
+ export interface PopulateBranchSpaceFromGraphOpts {
10
+ sourceSpace: IbGibSpaceAny;
11
+ targetBranchSpace: IbGibSpaceAny;
12
+ rootItemIbGib: IbGib_V1;
13
+ metaspace?: MetaspaceService;
14
+ }
15
+ /**
16
+ * Extracts the live dependency graph of rootItemIbGib from sourceSpace and persists all ibgibs into targetBranchSpace.
17
+ */
18
+ export declare function populateBranchSpaceFromGraph({ sourceSpace, targetBranchSpace, rootItemIbGib, metaspace, }: PopulateBranchSpaceFromGraphOpts): Promise<void>;
19
+ //# sourceMappingURL=branch-graph-helper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-graph-helper.d.mts","sourceRoot":"","sources":["../../../src/engine/branch/branch-graph-helper.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AAOpG,MAAM,WAAW,gCAAgC;IAC7C,WAAW,EAAE,aAAa,CAAC;IAC3B,iBAAiB,EAAE,aAAa,CAAC;IACjC,aAAa,EAAE,QAAQ,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,EAC/C,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,GACZ,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmClD"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @module branch-graph-helper
3
+ *
4
+ * Helper for extracting dependency graphs and populating branch spaces.
5
+ */
6
+ import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
7
+ import { getDependencyGraph } from '@ibgib/core-gib/dist/common/other/graph-helper.mjs';
8
+ import { putInSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
9
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
10
+ const lcFile = `[branch-graph-helper]`;
11
+ const logalot = GLOBAL_LOG_A_LOT;
12
+ /**
13
+ * Extracts the live dependency graph of rootItemIbGib from sourceSpace and persists all ibgibs into targetBranchSpace.
14
+ */
15
+ export async function populateBranchSpaceFromGraph({ sourceSpace, targetBranchSpace, rootItemIbGib, metaspace, }) {
16
+ const lc = `${lcFile}[${populateBranchSpaceFromGraph.name}]`;
17
+ try {
18
+ if (logalot) {
19
+ console.log(`${lc} starting... (I: 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d)`);
20
+ }
21
+ if (!sourceSpace || !targetBranchSpace || !rootItemIbGib) {
22
+ throw new Error(`sourceSpace, targetBranchSpace, and rootItemIbGib are required (E: 2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e)`);
23
+ }
24
+ const graph = await getDependencyGraph({
25
+ ibGib: rootItemIbGib,
26
+ space: sourceSpace,
27
+ live: true,
28
+ });
29
+ for (const [addr, ibGib] of Object.entries(graph)) {
30
+ await putInSpace({ space: targetBranchSpace, ibGib });
31
+ if (metaspace) {
32
+ await metaspace.registerNewIbGib({ ibGib, space: targetBranchSpace });
33
+ }
34
+ }
35
+ if (logalot) {
36
+ console.log(`${lc} Populated target branch space with ${Object.keys(graph).length} ibgibs (I: 3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f)`);
37
+ }
38
+ }
39
+ catch (error) {
40
+ console.error(`${lc} ${extractErrorMsg(error)} (E: 4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a)`);
41
+ throw error;
42
+ }
43
+ finally {
44
+ if (logalot) {
45
+ console.log(`${lc} complete. (I: 5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b)`);
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=branch-graph-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-graph-helper.mjs","sourceRoot":"","sources":["../../../src/engine/branch/branch-graph-helper.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AAExF,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,MAAM,MAAM,GAAG,uBAAuB,CAAC;AACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AASjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,EAC/C,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,GACsB;IAC/B,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,4BAA4B,CAAC,IAAI,GAAG,CAAC;IAC7D,IAAI,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,iBAAiB,IAAI,CAAC,aAAa,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;QAC5H,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;YACnC,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,uCAAuC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,+CAA+C,CAAC,CAAC;QACtI,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvF,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @module branch-helper
3
+ *
4
+ * B2tFS Branch Helper functions: dedicated branch spaces (`b2s_...`), branch creation,
5
+ * and branch timeline tracking.
6
+ */
7
+ import { MetaspaceService } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
8
+ import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
9
+ import { B2tFSBranchIbGib_V1 } from './branch-types.mjs';
10
+ import { B2tFSItemIbGib_V1 } from '../item/item-types.mjs';
11
+ export declare const B2TFS_BRANCH_SPACE_PREFIX = "b2s_";
12
+ /**
13
+ * Generates a dedicated branch space name.
14
+ * Example: 'main' -> 'b2s_main'
15
+ */
16
+ export declare function getB2tFSBranchSpaceName(branchName: string): string;
17
+ /**
18
+ * Creates a new B2tFSBranchIbGib pointing to a root folder item.
19
+ */
20
+ export declare function createB2tFSBranchIbGib(opts: {
21
+ branchName: string;
22
+ rootItem: B2tFSItemIbGib_V1;
23
+ space: IbGibSpaceAny;
24
+ metaspace: MetaspaceService;
25
+ }): Promise<B2tFSBranchIbGib_V1>;
26
+ //# sourceMappingURL=branch-helper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-helper.d.mts","sourceRoot":"","sources":["../../../src/engine/branch/branch-helper.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAIrF,OAAO,EAAE,mBAAmB,EAA4C,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAK3D,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;CAC/B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqC/B"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @module branch-helper
3
+ *
4
+ * B2tFS Branch Helper functions: dedicated branch spaces (`b2s_...`), branch creation,
5
+ * and branch timeline tracking.
6
+ */
7
+ import { getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
8
+ import { ROOT } from '@ibgib/ts-gib/dist/V1/constants.mjs';
9
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
10
+ import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
11
+ import { persistTransformResult } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
12
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
13
+ const lcFile = `[branch-helper]`;
14
+ const logalot = GLOBAL_LOG_A_LOT;
15
+ export const B2TFS_BRANCH_SPACE_PREFIX = 'b2s_';
16
+ /**
17
+ * Generates a dedicated branch space name.
18
+ * Example: 'main' -> 'b2s_main'
19
+ */
20
+ export function getB2tFSBranchSpaceName(branchName) {
21
+ const safeName = branchName.replace(/[^a-zA-Z0-9_\-]/g, '_');
22
+ return `${B2TFS_BRANCH_SPACE_PREFIX}${safeName}`;
23
+ }
24
+ /**
25
+ * Creates a new B2tFSBranchIbGib pointing to a root folder item.
26
+ */
27
+ export async function createB2tFSBranchIbGib(opts) {
28
+ const lc = `${lcFile}[${createB2tFSBranchIbGib.name}]`;
29
+ const { branchName, rootItem, space, metaspace } = opts;
30
+ if (!branchName || !rootItem) {
31
+ throw new Error(`branchName and rootItem required (E: 9012a472c9104b2d)`);
32
+ }
33
+ const uuid = await getUUID();
34
+ const rootAddr = getIbGibAddr({ ibGib: rootItem });
35
+ const data = {
36
+ name: branchName,
37
+ uuid,
38
+ classname: 'B2tFSBranchIbGib_V1',
39
+ };
40
+ const rel8ns = {
41
+ b2tfs_item: [rootAddr],
42
+ };
43
+ const res = await Factory_V1.firstGen({
44
+ parentIbGib: ROOT,
45
+ ib: `b2tfs_branch ${branchName} v1 ${uuid}`,
46
+ data,
47
+ rel8ns,
48
+ });
49
+ const branchIbGib = res.newIbGib;
50
+ await persistTransformResult({ resTransform: res, space });
51
+ await metaspace.registerNewIbGib({ ibGib: branchIbGib });
52
+ if (logalot) {
53
+ console.log(`${lc} Created branch IbGib: ${branchIbGib.ib}`);
54
+ }
55
+ return branchIbGib;
56
+ }
57
+ //# sourceMappingURL=branch-helper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch-helper.mjs","sourceRoot":"","sources":["../../../src/engine/branch/branch-helper.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iDAAiD,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAG/D,OAAO,EAAc,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAEzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAI/D,MAAM,MAAM,GAAG,iBAAiB,CAAC;AACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAEjC,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,yBAAyB,GAAG,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAK5C;IACG,MAAM,EAAE,GAAG,GAAG,MAAM,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC;IACvD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAExD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAuB;QAC7B,IAAI,EAAE,UAAU;QAChB,IAAI;QACJ,SAAS,EAAE,qBAAqB;KACnC,CAAC;IAEF,MAAM,MAAM,GAAyB;QACjC,UAAU,EAAE,CAAC,QAAQ,CAAC;KACzB,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC;QAClC,WAAW,EAAE,IAAI;QACjB,EAAE,EAAE,gBAAgB,UAAU,OAAO,IAAI,EAAE;QAC3C,IAAI;QACJ,MAAM;KACT,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,GAAG,CAAC,QAA+B,CAAC;IACxD,MAAM,sBAAsB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAEzD,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,0BAA0B,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC"}