@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,119 @@
1
+ /**
2
+ * @module init-cmd
3
+ *
4
+ * Command handler for `vcs init [targetDir]`.
5
+ * Initializes local repository space, root B2tFS folder item, default branch, and in-band space index.
6
+ */
7
+ import path from 'node:path';
8
+ import fs from 'node:fs/promises';
9
+ import { extractErrorMsg, getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
+ import { Factory_V1 } from '@ibgib/ts-gib/dist/V1/factory.mjs';
11
+ import { ROOT } from '@ibgib/ts-gib/dist/V1/constants.mjs';
12
+ import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
13
+ import { persistTransformResult } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
14
+ import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
15
+ import { getB2tFSItemIb } from '../../engine/item/item-atom-helper.mjs';
16
+ import { createB2tFSBranchIbGib, getB2tFSBranchSpaceName } from '../../engine/branch/branch-helper.mjs';
17
+ import { getOrCreateBranchSpace } from '../../engine/branch/branch-space-helper.mjs';
18
+ import { createB2tFSIndexIbGib, writeVcsIndexProjection } from '../../engine/index/index-helper.mjs';
19
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
20
+ const lcFile = `[init-cmd]`;
21
+ const logalot = GLOBAL_LOG_A_LOT;
22
+ export async function executeInitCmd({ targetDir = process.cwd(), vcsFolderName = '.vcsgib', defaultBranchName = 'main', quiet = false, } = {}) {
23
+ const lc = `${lcFile}[${executeInitCmd.name}]`;
24
+ try {
25
+ if (logalot) {
26
+ console.log(`${lc} starting... (I: 8a9b10c11d12e13f14a15b16c17d18e1)`);
27
+ }
28
+ const absTargetDir = path.resolve(targetDir);
29
+ const vcsPath = path.join(absTargetDir, vcsFolderName);
30
+ // Create target repository folder if it doesn't exist
31
+ await fs.mkdir(absTargetDir, { recursive: true });
32
+ // Bootstrap Metaspace
33
+ const { metaspace } = await bootstrapVcsMetaspace({
34
+ repoPath: absTargetDir,
35
+ vcsFolderName,
36
+ defaultSpaceName: `vcs_${path.basename(absTargetDir).replace(/[^a-zA-Z0-9_\-]/g, '_')}`,
37
+ });
38
+ // Initialize b2s_main branch space
39
+ const { space: branchSpace, spaceId } = await getOrCreateBranchSpace({
40
+ metaspace,
41
+ vcsPath,
42
+ branchName: defaultBranchName,
43
+ });
44
+ const folderName = path.basename(absTargetDir) || 'root';
45
+ const rootNameHash = await getUUID();
46
+ // 1. Create root folder B2tFS item inside b2s_main space
47
+ const rootItemRes = await Factory_V1.firstGen({
48
+ parentIbGib: ROOT,
49
+ ib: getB2tFSItemIb('folder', folderName, rootNameHash),
50
+ data: {
51
+ name: folderName,
52
+ nameHash: rootNameHash,
53
+ fsType: 'folder',
54
+ diffTransactionId: await getUUID(),
55
+ uuid: await getUUID(),
56
+ classname: 'B2tFSItemIbGib_V1',
57
+ },
58
+ });
59
+ const rootItem = rootItemRes.newIbGib;
60
+ await persistTransformResult({ resTransform: rootItemRes, space: branchSpace });
61
+ await metaspace.registerNewIbGib({ ibGib: rootItem, space: branchSpace });
62
+ // 2. Create default branch pointing to root folder inside b2s_main space
63
+ const branchIbGib = await createB2tFSBranchIbGib({
64
+ branchName: defaultBranchName,
65
+ rootItem,
66
+ space: branchSpace,
67
+ metaspace,
68
+ });
69
+ const branchAddr = getIbGibAddr({ ibGib: branchIbGib });
70
+ // 3. Create space index meta object stored inside b2s_main space
71
+ const indexIbGib = await createB2tFSIndexIbGib({
72
+ spaceId,
73
+ activeSpaceId: getB2tFSBranchSpaceName(defaultBranchName),
74
+ activeBranch: defaultBranchName,
75
+ space: branchSpace,
76
+ metaspace,
77
+ branchAddr,
78
+ });
79
+ // 4. Write read-only projection file in .vcsgib/
80
+ await writeVcsIndexProjection({
81
+ vcsPath,
82
+ indexIbGib,
83
+ });
84
+ // Clean up legacy out-of-band state files if present
85
+ try {
86
+ await fs.rm(path.join(vcsPath, 'vcs_state.json'), { force: true });
87
+ }
88
+ catch {
89
+ // Ignore if missing
90
+ }
91
+ try {
92
+ await fs.rm(path.join(vcsPath, 'staging.json'), { force: true });
93
+ }
94
+ catch {
95
+ // Ignore if missing
96
+ }
97
+ if (!quiet) {
98
+ console.log(`Initialized empty ibgib repository in ${vcsPath} (I: 6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f)`);
99
+ console.log(` Branch: ${defaultBranchName}`);
100
+ console.log(` Root Item: ${rootItem.ib}`);
101
+ }
102
+ return {
103
+ vcsPath,
104
+ spaceId,
105
+ branchName: defaultBranchName,
106
+ rootItemIb: rootItem.ib,
107
+ };
108
+ }
109
+ catch (error) {
110
+ console.error(`${lc} ${extractErrorMsg(error)} (E: 9b10c11d12e13f14a15b16c17d18e19f)`);
111
+ throw error;
112
+ }
113
+ finally {
114
+ if (logalot) {
115
+ console.log(`${lc} complete. (I: 0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d)`);
116
+ }
117
+ }
118
+ }
119
+ //# sourceMappingURL=init-cmd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/init-cmd.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module init-cmd.respec
3
+ *
4
+ * Unit tests for `vcs init` command handler.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=init-cmd.respec.node.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-cmd.respec.node.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/init-cmd.respec.node.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @module init-cmd.respec
3
+ *
4
+ * Unit tests for `vcs init` command handler.
5
+ */
6
+ import path from 'node:path';
7
+ import fs from 'node:fs/promises';
8
+ import { existsSync } from 'node:fs';
9
+ import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
10
+ import { executeInitCmd } from './init-cmd.mjs';
11
+ const lc = `[apps/vcs-gib/src/cli/commands/init-cmd.respec.node.mts]`;
12
+ await respecfully(lc, `vcs init Command Handler`, async () => {
13
+ await ifWe(lc, `initializes repository space, branch, and index in target folder`, async () => {
14
+ const testDir = path.join(process.cwd(), '.test_init_repo');
15
+ const vcsFolderName = '.vcsgib_init_test';
16
+ try {
17
+ const res = await executeInitCmd({
18
+ targetDir: testDir,
19
+ vcsFolderName,
20
+ quiet: true,
21
+ });
22
+ iReckon(lc, res.branchName).willEqual('main');
23
+ iReckon(lc, res.rootItemIb).includes('b2tfs_item folder');
24
+ iReckon(lc, res.vcsPath).includes(vcsFolderName);
25
+ // Strict Repository Location Isolation Assertions:
26
+ // 1. Storage MUST be inside vcsPath (.vcsgib_init_test)
27
+ const ibgibInsideVcsFolder = existsSync(path.join(res.vcsPath, 'ibgib')) || existsSync(path.join(res.vcsPath, 'space'));
28
+ iReckon(lc, ibgibInsideVcsFolder).isGonnaBeTrue();
29
+ // 2. Storage MUST NOT spill into testDir root or process.cwd() as stray 'ibgib' folder
30
+ const strayInTestDir = existsSync(path.join(testDir, 'ibgib'));
31
+ const strayInCwd = existsSync(path.join(process.cwd(), 'ibgib'));
32
+ iReckon(lc, strayInTestDir).isGonnaBeFalse();
33
+ iReckon(lc, strayInCwd).isGonnaBeFalse();
34
+ }
35
+ finally {
36
+ await fs.rm(testDir, { recursive: true, force: true });
37
+ }
38
+ });
39
+ });
40
+ //# sourceMappingURL=init-cmd.respec.node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-cmd.respec.node.mjs","sourceRoot":"","sources":["../../../src/cli/commands/init-cmd.respec.node.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EACH,WAAW,EAAE,IAAI,EAAE,OAAO,EAC7B,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,EAAE,GAAG,0DAA0D,CAAC;AAEtE,MAAM,WAAW,CAAC,EAAE,EAAE,0BAA0B,EAAE,KAAK,IAAI,EAAE;IAEzD,MAAM,IAAI,CAAC,EAAE,EAAE,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,mBAAmB,CAAC;QAC1C,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC;gBAC7B,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAC1D,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAEjD,mDAAmD;YACnD,wDAAwD;YACxD,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACxH,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,aAAa,EAAE,CAAC;YAElD,uFAAuF;YACvF,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,cAAc,EAAE,CAAC;YAC7C,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @module log-cmd
3
+ *
4
+ * Command handler for `vcs log`.
5
+ * Reads active branch timeline from B2tFSIndexIbGib_V1 in localSpace,
6
+ * walks branch timeline history backward, and displays formatted commit history.
7
+ */
8
+ export interface VcsLogItem {
9
+ branchAddr: string;
10
+ commitAddr: string;
11
+ commentAddr?: string;
12
+ message: string;
13
+ timestamp: string;
14
+ author: string;
15
+ rootItemAddr?: string;
16
+ }
17
+ export interface LogCmdOpts {
18
+ targetDir?: string;
19
+ vcsFolderName?: string;
20
+ quiet?: boolean;
21
+ }
22
+ export interface LogCmdResult {
23
+ branchName: string;
24
+ commits: VcsLogItem[];
25
+ }
26
+ export declare function executeLogCmd({ targetDir, vcsFolderName, quiet, }?: LogCmdOpts): Promise<LogCmdResult>;
27
+ //# sourceMappingURL=log-cmd.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cmd.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/log-cmd.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;CACzB;AAED,wBAAsB,aAAa,CAAC,EAChC,SAAyB,EACzB,aAAyB,EACzB,KAAa,GAChB,GAAE,UAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAiJzC"}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @module log-cmd
3
+ *
4
+ * Command handler for `vcs log`.
5
+ * Reads active branch timeline from B2tFSIndexIbGib_V1 in localSpace,
6
+ * walks branch timeline history backward, and displays formatted commit history.
7
+ */
8
+ import path from 'node:path';
9
+ import fs from 'node:fs/promises';
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 { getIbGibWithMetaspaceFallback } from '../../engine/item/item-helper.mjs';
14
+ import { getB2tFSIndexIbGib, extractBranchNameFromAddr } from '../../engine/index/index-helper.mjs';
15
+ import { GLOBAL_LOG_A_LOT } from '../../vcs-gib-constants.mjs';
16
+ const lcFile = `[log-cmd]`;
17
+ const logalot = GLOBAL_LOG_A_LOT;
18
+ export async function executeLogCmd({ targetDir = process.cwd(), vcsFolderName = '.vcsgib', quiet = false, } = {}) {
19
+ const lc = `${lcFile}[${executeLogCmd.name}]`;
20
+ try {
21
+ if (logalot) {
22
+ console.log(`${lc} starting executeLogCmd (I: 1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e)`);
23
+ }
24
+ const absTargetDir = path.resolve(targetDir);
25
+ const { metaspace, localSpace, vcsPath, repoRoot } = await bootstrapVcsMetaspace({
26
+ repoPath: absTargetDir,
27
+ vcsFolderName,
28
+ });
29
+ // Verify repo exists
30
+ try {
31
+ await fs.access(vcsPath);
32
+ }
33
+ catch {
34
+ throw new Error(`Not an ibgib repository (directory ${vcsPath} does not exist) (E: 2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f)`);
35
+ }
36
+ // 1. Fetch authoritative B2tFSIndexIbGib_V1 directly from localSpace
37
+ const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
38
+ if (!indexIbGib) {
39
+ throw new Error(`Repository index B2tFSIndexIbGib_V1 not found in localSpace (E: 3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a)`);
40
+ }
41
+ const branchName = indexIbGib.data?.activeBranch || 'main';
42
+ // Target active branch space b2s_<activeBranch>
43
+ const { space: activeSpace } = await getOrCreateBranchSpace({
44
+ metaspace,
45
+ vcsPath,
46
+ branchName,
47
+ });
48
+ // 2. Fetch active branch node address matching active branchName
49
+ const branchAddrs = [
50
+ ...(indexIbGib.rel8ns?.branch || []),
51
+ ...(indexIbGib.rel8ns?.branch_tjp || []),
52
+ ];
53
+ let currBranchAddr;
54
+ // Match branchName against branchAddrs by space-qualified address or raw atom ib string
55
+ for (const addr of branchAddrs) {
56
+ const parsedName = extractBranchNameFromAddr(addr);
57
+ if (parsedName === branchName) {
58
+ currBranchAddr = addr;
59
+ break;
60
+ }
61
+ }
62
+ // Fallback: fetch branch nodes via getIbGibWithMetaspaceFallback to match b.data?.name === branchName
63
+ if (!currBranchAddr) {
64
+ for (const addr of branchAddrs) {
65
+ const bIbGib = await getIbGibWithMetaspaceFallback({
66
+ addr,
67
+ space: activeSpace,
68
+ metaspace,
69
+ });
70
+ if (bIbGib?.data?.name === branchName) {
71
+ currBranchAddr = addr;
72
+ break;
73
+ }
74
+ }
75
+ }
76
+ // Ultimate fallback if no match found
77
+ if (!currBranchAddr) {
78
+ currBranchAddr = branchAddrs.at(0);
79
+ }
80
+ const visitedAddrs = new Set();
81
+ const commits = [];
82
+ // 3. Walk timeline history backward
83
+ while (currBranchAddr && !visitedAddrs.has(currBranchAddr)) {
84
+ visitedAddrs.add(currBranchAddr);
85
+ const branchIbGib = await getIbGibWithMetaspaceFallback({
86
+ addr: currBranchAddr,
87
+ space: activeSpace,
88
+ metaspace,
89
+ });
90
+ if (!branchIbGib) {
91
+ break;
92
+ }
93
+ const commentAddr = branchIbGib.rel8ns?.comment?.at(0);
94
+ const rootItemAddr = branchIbGib.rel8ns?.b2tfs_item?.at(0);
95
+ if (commentAddr) {
96
+ const commentIbGib = await getIbGibWithMetaspaceFallback({
97
+ addr: commentAddr,
98
+ space: activeSpace,
99
+ metaspace,
100
+ });
101
+ const message = commentIbGib?.data?.text || '';
102
+ const timestamp = commentIbGib?.data?.textTimestamp || commentIbGib?.data?.timestamp || branchIbGib.data?.committedAt || '';
103
+ const author = 'vcs-user';
104
+ commits.push({
105
+ branchAddr: currBranchAddr,
106
+ commitAddr: commentAddr,
107
+ commentAddr,
108
+ message,
109
+ timestamp,
110
+ author,
111
+ rootItemAddr,
112
+ });
113
+ }
114
+ // Move to previous branch node in timeline
115
+ currBranchAddr = branchIbGib.rel8ns?.past?.at(0) || branchIbGib.rel8ns?.ancestor?.at(0);
116
+ }
117
+ if (!quiet) {
118
+ console.log(`Branch: ${branchName} (I: 4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b)`);
119
+ if (commits.length === 0) {
120
+ console.log('No commits yet.');
121
+ }
122
+ else {
123
+ for (const commit of commits) {
124
+ console.log(`\ncommit ${commit.commitAddr}`);
125
+ console.log(`Author: ${commit.author}`);
126
+ console.log(`Date: ${commit.timestamp}`);
127
+ console.log(`\n ${commit.message}\n`);
128
+ }
129
+ }
130
+ }
131
+ return {
132
+ branchName,
133
+ commits,
134
+ };
135
+ }
136
+ catch (error) {
137
+ console.error(`${lc} ${extractErrorMsg(error)} (E: 5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c)`);
138
+ throw error;
139
+ }
140
+ finally {
141
+ if (logalot) {
142
+ console.log(`${lc} complete. (I: 6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d)`);
143
+ }
144
+ }
145
+ }
146
+ //# sourceMappingURL=log-cmd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cmd.mjs","sourceRoot":"","sources":["../../../src/cli/commands/log-cmd.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @module status-add-cmd.respec
3
+ *
4
+ * Unit tests for `vcs status` and `vcs add` command handlers.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=status-add-cmd.respec.node.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-add-cmd.respec.node.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/status-add-cmd.respec.node.mts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * @module status-add-cmd.respec
3
+ *
4
+ * Unit tests for `vcs status` and `vcs add` command handlers.
5
+ */
6
+ import path from 'node:path';
7
+ import fs from 'node:fs/promises';
8
+ import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
9
+ import { executeInitCmd } from './init-cmd.mjs';
10
+ import { executeStatusCmd } from './status-cmd.mjs';
11
+ import { executeAddCmd } from './add-cmd.mjs';
12
+ import { executeCommitCmd } from './commit-cmd.mjs';
13
+ import { bootstrapVcsMetaspace } from '../../bootstrap/node-bootstrap.mjs';
14
+ import { getB2tFSIndexIbGib } from '../../engine/index/index-helper.mjs';
15
+ const lc = `[apps/vcs-gib/src/cli/commands/status-add-cmd.respec.node.mts]`;
16
+ await respecfully(lc, `vcs status and vcs add Command Handlers`, async () => {
17
+ await ifWe(lc, `detects untracked files in fresh repository`, async () => {
18
+ const testDir = path.join(process.cwd(), '.test_status_add_1');
19
+ const vcsFolderName = '.vcsgib_test_1';
20
+ try {
21
+ await executeInitCmd({
22
+ targetDir: testDir,
23
+ vcsFolderName,
24
+ quiet: true,
25
+ });
26
+ await fs.writeFile(path.join(testDir, 'hello.txt'), 'Hello ibgib!', 'utf8');
27
+ const statusRes = await executeStatusCmd({
28
+ targetDir: testDir,
29
+ vcsFolderName,
30
+ quiet: true,
31
+ });
32
+ iReckon(lc, statusRes.branchName).willEqual('main');
33
+ iReckon(lc, statusRes.untracked.map(x => x.path)).includes('hello.txt');
34
+ iReckon(lc, statusRes.staged.length).willEqual(0);
35
+ }
36
+ finally {
37
+ await fs.rm(testDir, { recursive: true, force: true });
38
+ }
39
+ });
40
+ await ifWe(lc, `discovers .vcsgib via upward discovery when executed from a subfolder`, async () => {
41
+ const testDir = path.join(process.cwd(), '.test_status_add_subfolder');
42
+ const vcsFolderName = '.vcsgib_test_subfolder';
43
+ try {
44
+ await executeInitCmd({
45
+ targetDir: testDir,
46
+ vcsFolderName,
47
+ quiet: true,
48
+ });
49
+ const subDir = path.join(testDir, 'src', 'components');
50
+ await fs.mkdir(subDir, { recursive: true });
51
+ await fs.writeFile(path.join(subDir, 'Button.tsx'), 'export const Button = () => null;', 'utf8');
52
+ const statusRes = await executeStatusCmd({
53
+ targetDir: subDir,
54
+ vcsFolderName,
55
+ quiet: true,
56
+ });
57
+ iReckon(lc, statusRes.branchName).willEqual('main');
58
+ iReckon(lc, statusRes.untracked.map(x => x.path)).includes('src/components/Button.tsx');
59
+ }
60
+ finally {
61
+ await fs.rm(testDir, { recursive: true, force: true });
62
+ }
63
+ });
64
+ await ifWe(lc, `skips re-staging unmodified committed files during executeAddCmd with all flag`, async () => {
65
+ const testDir = path.join(process.cwd(), '.test_status_add_unmodified');
66
+ const vcsFolderName = '.vcsgib_test_unmodified';
67
+ try {
68
+ await executeInitCmd({
69
+ targetDir: testDir,
70
+ vcsFolderName,
71
+ quiet: true,
72
+ });
73
+ await fs.writeFile(path.join(testDir, 'file.txt'), 'Initial Content', 'utf8');
74
+ await executeAddCmd({
75
+ paths: ['file.txt'],
76
+ targetDir: testDir,
77
+ vcsFolderName,
78
+ quiet: true,
79
+ });
80
+ await executeCommitCmd({
81
+ message: 'Initial commit',
82
+ targetDir: testDir,
83
+ vcsFolderName,
84
+ quiet: true,
85
+ });
86
+ // Run add -a again when file is unmodified
87
+ const addRes = await executeAddCmd({
88
+ all: true,
89
+ targetDir: testDir,
90
+ vcsFolderName,
91
+ quiet: true,
92
+ });
93
+ iReckon(lc, addRes.stagedCount).willEqual(0);
94
+ iReckon(lc, addRes.stagedPaths.length).willEqual(0);
95
+ }
96
+ finally {
97
+ await fs.rm(testDir, { recursive: true, force: true });
98
+ }
99
+ });
100
+ await ifWe(lc, `stages untracked file via executeAddCmd`, async () => {
101
+ const testDir = path.join(process.cwd(), '.test_status_add_2');
102
+ const vcsFolderName = '.vcsgib_test_2';
103
+ try {
104
+ await executeInitCmd({
105
+ targetDir: testDir,
106
+ vcsFolderName,
107
+ quiet: true,
108
+ });
109
+ await fs.writeFile(path.join(testDir, 'file1.txt'), 'Content 1', 'utf8');
110
+ await fs.writeFile(path.join(testDir, 'file2.txt'), 'Content 2', 'utf8');
111
+ const addRes = await executeAddCmd({
112
+ paths: ['file1.txt'],
113
+ targetDir: testDir,
114
+ vcsFolderName,
115
+ quiet: true,
116
+ });
117
+ iReckon(lc, addRes.stagedPaths).includes('file1.txt');
118
+ const { localSpace, vcsPath } = await bootstrapVcsMetaspace({
119
+ repoPath: testDir,
120
+ vcsFolderName,
121
+ });
122
+ const indexIbGib = await getB2tFSIndexIbGib({ space: localSpace, vcsPath });
123
+ iReckon(lc, Boolean(indexIbGib?.data?.staged_item && indexIbGib.data.staged_item.length > 0)).isGonnaBeTrue();
124
+ iReckon(lc, indexIbGib?.rel8ns?.staged_item).isGonnaBeFalsy();
125
+ const statusRes = await executeStatusCmd({
126
+ targetDir: testDir,
127
+ vcsFolderName,
128
+ quiet: true,
129
+ });
130
+ iReckon(lc, statusRes.staged.map(x => x.path)).includes('file1.txt');
131
+ iReckon(lc, statusRes.untracked.map(x => x.path)).includes('file2.txt');
132
+ iReckon(lc, statusRes.untracked.map(x => x.path)).not.includes('file1.txt');
133
+ }
134
+ finally {
135
+ await fs.rm(testDir, { recursive: true, force: true });
136
+ }
137
+ });
138
+ await ifWe(lc, `respects .ibgibignore patterns during status and add`, async () => {
139
+ const testDir = path.join(process.cwd(), '.test_status_add_3');
140
+ const vcsFolderName = '.vcsgib_test_3';
141
+ try {
142
+ await executeInitCmd({
143
+ targetDir: testDir,
144
+ vcsFolderName,
145
+ quiet: true,
146
+ });
147
+ await fs.writeFile(path.join(testDir, '.ibgibignore'), 'ignored.txt\ntemp/\n', 'utf8');
148
+ await fs.writeFile(path.join(testDir, 'ignored.txt'), 'Secrets', 'utf8');
149
+ await fs.writeFile(path.join(testDir, 'tracked.txt'), 'Public', 'utf8');
150
+ await fs.mkdir(path.join(testDir, 'temp'), { recursive: true });
151
+ await fs.writeFile(path.join(testDir, 'temp/cache.dat'), 'Cache', 'utf8');
152
+ const statusRes = await executeStatusCmd({
153
+ targetDir: testDir,
154
+ vcsFolderName,
155
+ quiet: true,
156
+ });
157
+ iReckon(lc, statusRes.untracked.map(x => x.path)).includes('tracked.txt');
158
+ iReckon(lc, statusRes.untracked.map(x => x.path)).not.includes('ignored.txt');
159
+ iReckon(lc, statusRes.untracked.map(x => x.path)).not.includes('temp/cache.dat');
160
+ const addRes = await executeAddCmd({
161
+ all: true,
162
+ targetDir: testDir,
163
+ vcsFolderName,
164
+ quiet: true,
165
+ });
166
+ iReckon(lc, addRes.stagedPaths).includes('tracked.txt');
167
+ iReckon(lc, addRes.stagedPaths).not.includes('ignored.txt');
168
+ iReckon(lc, addRes.stagedPaths).not.includes('temp/cache.dat');
169
+ }
170
+ finally {
171
+ await fs.rm(testDir, { recursive: true, force: true });
172
+ }
173
+ });
174
+ await ifWe(lc, `stages files matching glob pattern with executeAddCmd`, async () => {
175
+ const testDir = path.join(process.cwd(), '.test_status_add_glob');
176
+ const vcsFolderName = '.vcsgib_test_glob';
177
+ try {
178
+ await executeInitCmd({
179
+ targetDir: testDir,
180
+ vcsFolderName,
181
+ quiet: true,
182
+ });
183
+ await fs.writeFile(path.join(testDir, 'app.js'), 'console.log("app");', 'utf8');
184
+ await fs.writeFile(path.join(testDir, 'utils.js'), 'console.log("utils");', 'utf8');
185
+ await fs.writeFile(path.join(testDir, 'index.html'), '<html></html>', 'utf8');
186
+ const addRes = await executeAddCmd({
187
+ paths: ['*.js'],
188
+ targetDir: testDir,
189
+ vcsFolderName,
190
+ quiet: true,
191
+ });
192
+ iReckon(lc, addRes.stagedPaths).includes('app.js');
193
+ iReckon(lc, addRes.stagedPaths).includes('utils.js');
194
+ iReckon(lc, addRes.stagedPaths).not.includes('index.html');
195
+ let errorThrown = false;
196
+ try {
197
+ await executeAddCmd({
198
+ paths: ['*.xyz'],
199
+ targetDir: testDir,
200
+ vcsFolderName,
201
+ quiet: true,
202
+ });
203
+ }
204
+ catch (err) {
205
+ errorThrown = true;
206
+ iReckon(lc, err.message).includes('No files matched glob pattern: *.xyz');
207
+ }
208
+ iReckon(lc, errorThrown).isGonnaBeTrue();
209
+ }
210
+ finally {
211
+ await fs.rm(testDir, { recursive: true, force: true });
212
+ }
213
+ });
214
+ });
215
+ //# sourceMappingURL=status-add-cmd.respec.node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-add-cmd.respec.node.mjs","sourceRoot":"","sources":["../../../src/cli/commands/status-add-cmd.respec.node.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAElC,OAAO,EACH,WAAW,EAAE,IAAI,EAAE,OAAO,EAC7B,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,MAAM,EAAE,GAAG,gEAAgE,CAAC;AAE5E,MAAM,WAAW,CAAC,EAAE,EAAE,yCAAyC,EAAE,KAAK,IAAI,EAAE;IAExE,MAAM,IAAI,CAAC,EAAE,EAAE,6CAA6C,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,gBAAgB,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,cAAc,CAAC;gBACjB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;YAE5E,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;gBACrC,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACxE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,EAAE,EAAE,uEAAuE,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,wBAAwB,CAAC;QAC/C,IAAI,CAAC;YACD,MAAM,cAAc,CAAC;gBACjB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,mCAAmC,EAAE,MAAM,CAAC,CAAC;YAEjG,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;gBACrC,SAAS,EAAE,MAAM;gBACjB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QAC5F,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,EAAE,EAAE,gFAAgF,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,yBAAyB,CAAC;QAChD,IAAI,CAAC;YACD,MAAM,cAAc,CAAC;gBACjB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAE9E,MAAM,aAAa,CAAC;gBAChB,KAAK,EAAE,CAAC,UAAU,CAAC;gBACnB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,gBAAgB,CAAC;gBACnB,OAAO,EAAE,gBAAgB;gBACzB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBAC/B,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,EAAE,EAAE,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,gBAAgB,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,cAAc,CAAC;gBACjB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACzE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAEzE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBAC/B,KAAK,EAAE,CAAC,WAAW,CAAC;gBACpB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEtD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,qBAAqB,CAAC;gBACxD,QAAQ,EAAE,OAAO;gBACjB,aAAa;aAChB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5E,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9G,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,cAAc,EAAE,CAAC;YAE9D,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;gBACrC,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACrE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACxE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChF,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,EAAE,EAAE,sDAAsD,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,gBAAgB,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,cAAc,CAAC;gBACjB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;YACvF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACzE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACxE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE1E,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC;gBACrC,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC1E,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9E,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAEjF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBAC/B,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxD,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC5D,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnE,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,EAAE,EAAE,uDAAuD,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,mBAAmB,CAAC;QAC1C,IAAI,CAAC;YACD,MAAM,cAAc,CAAC;gBACjB,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAChF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;YACpF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;YAE9E,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBAC/B,KAAK,EAAE,CAAC,MAAM,CAAC;gBACf,SAAS,EAAE,OAAO;gBAClB,aAAa;gBACb,KAAK,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrD,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAE3D,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBACD,MAAM,aAAa,CAAC;oBAChB,KAAK,EAAE,CAAC,OAAO,CAAC;oBAChB,SAAS,EAAE,OAAO;oBAClB,aAAa;oBACb,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAChB,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
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
+ export interface VcsStatusItem {
8
+ path: string;
9
+ fsType: 'file' | 'folder';
10
+ status: 'untracked' | 'modified' | 'deleted' | 'staged';
11
+ }
12
+ export interface StatusCmdResult {
13
+ branchName: string;
14
+ staged: VcsStatusItem[];
15
+ modified: VcsStatusItem[];
16
+ deleted: VcsStatusItem[];
17
+ untracked: VcsStatusItem[];
18
+ }
19
+ export interface StatusCmdOpts {
20
+ targetDir?: string;
21
+ vcsFolderName?: string;
22
+ quiet?: boolean;
23
+ }
24
+ export declare function executeStatusCmd({ targetDir, vcsFolderName, quiet, }?: StatusCmdOpts): Promise<StatusCmdResult>;
25
+ //# sourceMappingURL=status-cmd.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-cmd.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/status-cmd.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CAAC,EACnC,SAAyB,EACzB,aAAyB,EACzB,KAAa,GAChB,GAAE,aAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CA8M/C"}