@trebired/git-host 3.0.0 → 3.1.0

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 (261) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +1 -1
  3. package/dist/api/forge/actions/filters.d.ts +10 -0
  4. package/dist/api/forge/actions/filters.d.ts.map +1 -0
  5. package/dist/api/forge/actions/filters.js +63 -0
  6. package/dist/api/forge/actions/filters.js.map +1 -0
  7. package/dist/api/forge/actions/run.d.ts +8 -0
  8. package/dist/api/forge/actions/run.d.ts.map +1 -0
  9. package/dist/api/forge/actions/run.js +129 -0
  10. package/dist/api/forge/actions/run.js.map +1 -0
  11. package/dist/api/forge/actions.d.ts +3 -12
  12. package/dist/api/forge/actions.d.ts.map +1 -1
  13. package/dist/api/forge/actions.js +2 -216
  14. package/dist/api/forge/actions.js.map +1 -1
  15. package/dist/api/handler/response.d.ts.map +1 -1
  16. package/dist/api/handler/response.js +55 -1
  17. package/dist/api/handler/response.js.map +1 -1
  18. package/dist/core/actions/expressions/read.d.ts +7 -0
  19. package/dist/core/actions/expressions/read.d.ts.map +1 -0
  20. package/dist/core/actions/expressions/read.js +148 -0
  21. package/dist/core/actions/expressions/read.js.map +1 -0
  22. package/dist/core/actions/expressions/tokenize.d.ts +4 -0
  23. package/dist/core/actions/expressions/tokenize.d.ts.map +1 -0
  24. package/dist/core/actions/expressions/tokenize.js +112 -0
  25. package/dist/core/actions/expressions/tokenize.js.map +1 -0
  26. package/dist/core/actions/expressions/types.d.ts +38 -0
  27. package/dist/core/actions/expressions/types.d.ts.map +1 -0
  28. package/dist/core/actions/expressions/types.js +2 -0
  29. package/dist/core/actions/expressions/types.js.map +1 -0
  30. package/dist/core/actions/expressions.d.ts +2 -9
  31. package/dist/core/actions/expressions.d.ts.map +1 -1
  32. package/dist/core/actions/expressions.js +2 -256
  33. package/dist/core/actions/expressions.js.map +1 -1
  34. package/dist/core/actions/normalize/finalize.d.ts +7 -0
  35. package/dist/core/actions/normalize/finalize.d.ts.map +1 -0
  36. package/dist/core/actions/normalize/finalize.js +70 -0
  37. package/dist/core/actions/normalize/finalize.js.map +1 -0
  38. package/dist/core/actions/normalize/shared.d.ts +19 -0
  39. package/dist/core/actions/normalize/shared.d.ts.map +1 -0
  40. package/dist/core/actions/normalize/shared.js +289 -0
  41. package/dist/core/actions/normalize/shared.js.map +1 -0
  42. package/dist/core/actions/normalize.d.ts +1 -3
  43. package/dist/core/actions/normalize.d.ts.map +1 -1
  44. package/dist/core/actions/normalize.js +2 -354
  45. package/dist/core/actions/normalize.js.map +1 -1
  46. package/dist/core/actions/release_assets.d.ts.map +1 -1
  47. package/dist/core/actions/release_assets.js.map +1 -1
  48. package/dist/core/actions/runner/launch.d.ts.map +1 -1
  49. package/dist/core/actions/runner/launch.js +12 -8
  50. package/dist/core/actions/runner/launch.js.map +1 -1
  51. package/dist/core/archive/commit.d.ts +6 -0
  52. package/dist/core/archive/commit.d.ts.map +1 -0
  53. package/dist/core/archive/commit.js +34 -0
  54. package/dist/core/archive/commit.js.map +1 -0
  55. package/dist/core/archive/context.d.ts +32 -0
  56. package/dist/core/archive/context.d.ts.map +1 -0
  57. package/dist/core/archive/context.js +61 -0
  58. package/dist/core/archive/context.js.map +1 -0
  59. package/dist/core/archive/generation.d.ts +11 -0
  60. package/dist/core/archive/generation.d.ts.map +1 -0
  61. package/dist/core/archive/generation.js +62 -0
  62. package/dist/core/archive/generation.js.map +1 -0
  63. package/dist/core/archive/links.d.ts +5 -0
  64. package/dist/core/archive/links.d.ts.map +1 -0
  65. package/dist/core/archive/links.js +62 -0
  66. package/dist/core/archive/links.js.map +1 -0
  67. package/dist/core/archive/open.d.ts +15 -0
  68. package/dist/core/archive/open.d.ts.map +1 -0
  69. package/dist/core/archive/open.js +159 -0
  70. package/dist/core/archive/open.js.map +1 -0
  71. package/dist/core/archive/read.d.ts +19 -0
  72. package/dist/core/archive/read.d.ts.map +1 -0
  73. package/dist/core/archive/read.js +62 -0
  74. package/dist/core/archive/read.js.map +1 -0
  75. package/dist/core/archive/resolve.d.ts +8 -0
  76. package/dist/core/archive/resolve.d.ts.map +1 -0
  77. package/dist/core/archive/resolve.js +67 -0
  78. package/dist/core/archive/resolve.js.map +1 -0
  79. package/dist/core/archive/shared.d.ts +50 -0
  80. package/dist/core/archive/shared.d.ts.map +1 -0
  81. package/dist/core/archive/shared.js +119 -0
  82. package/dist/core/archive/shared.js.map +1 -0
  83. package/dist/core/archive.d.ts +2 -18
  84. package/dist/core/archive.d.ts.map +1 -1
  85. package/dist/core/archive.js +16 -556
  86. package/dist/core/archive.js.map +1 -1
  87. package/dist/core/create/git/forge/base_methods.d.ts +5 -0
  88. package/dist/core/create/git/forge/base_methods.d.ts.map +1 -0
  89. package/dist/core/create/git/forge/base_methods.js +59 -0
  90. package/dist/core/create/git/forge/base_methods.js.map +1 -0
  91. package/dist/core/create/git/forge/context.d.ts +38 -0
  92. package/dist/core/create/git/forge/context.d.ts.map +1 -0
  93. package/dist/core/create/git/forge/context.js +174 -0
  94. package/dist/core/create/git/forge/context.js.map +1 -0
  95. package/dist/core/create/git/forge/fork_methods.d.ts +5 -0
  96. package/dist/core/create/git/forge/fork_methods.d.ts.map +1 -0
  97. package/dist/core/create/git/forge/fork_methods.js +133 -0
  98. package/dist/core/create/git/forge/fork_methods.js.map +1 -0
  99. package/dist/core/create/git/forge/release_methods.d.ts +5 -0
  100. package/dist/core/create/git/forge/release_methods.d.ts.map +1 -0
  101. package/dist/core/create/git/forge/release_methods.js +116 -0
  102. package/dist/core/create/git/forge/release_methods.js.map +1 -0
  103. package/dist/core/create/git/forge/shared.d.ts +9 -0
  104. package/dist/core/create/git/forge/shared.d.ts.map +1 -0
  105. package/dist/core/create/git/forge/shared.js +80 -0
  106. package/dist/core/create/git/forge/shared.js.map +1 -0
  107. package/dist/core/create/git/forge/social_methods.d.ts +5 -0
  108. package/dist/core/create/git/forge/social_methods.d.ts.map +1 -0
  109. package/dist/core/create/git/forge/social_methods.js +31 -0
  110. package/dist/core/create/git/forge/social_methods.js.map +1 -0
  111. package/dist/core/create/git/forge.d.ts.map +1 -1
  112. package/dist/core/create/git/forge.js +10 -594
  113. package/dist/core/create/git/forge.js.map +1 -1
  114. package/dist/core/create/git/host.d.ts.map +1 -1
  115. package/dist/core/create/git/host.js +139 -114
  116. package/dist/core/create/git/host.js.map +1 -1
  117. package/dist/core/create_git_host/remote_methods.d.ts.map +1 -1
  118. package/dist/core/create_git_host/remote_methods.js +92 -97
  119. package/dist/core/create_git_host/remote_methods.js.map +1 -1
  120. package/dist/core/forge_actions/job/release_asset.d.ts +17 -0
  121. package/dist/core/forge_actions/job/release_asset.d.ts.map +1 -0
  122. package/dist/core/forge_actions/job/release_asset.js +62 -0
  123. package/dist/core/forge_actions/job/release_asset.js.map +1 -0
  124. package/dist/core/forge_actions/job/steps.d.ts +37 -0
  125. package/dist/core/forge_actions/job/steps.d.ts.map +1 -0
  126. package/dist/core/forge_actions/job/steps.js +228 -0
  127. package/dist/core/forge_actions/job/steps.js.map +1 -0
  128. package/dist/core/forge_actions/runtime/api.d.ts +26 -0
  129. package/dist/core/forge_actions/runtime/api.d.ts.map +1 -0
  130. package/dist/core/forge_actions/runtime/api.js +210 -0
  131. package/dist/core/forge_actions/runtime/api.js.map +1 -0
  132. package/dist/core/forge_actions/runtime/engine.d.ts +25 -0
  133. package/dist/core/forge_actions/runtime/engine.d.ts.map +1 -0
  134. package/dist/core/forge_actions/runtime/engine.js +28 -0
  135. package/dist/core/forge_actions/runtime/engine.js.map +1 -0
  136. package/dist/core/forge_actions/runtime/job/execute.d.ts +19 -0
  137. package/dist/core/forge_actions/runtime/job/execute.d.ts.map +1 -0
  138. package/dist/core/forge_actions/runtime/job/execute.js +191 -0
  139. package/dist/core/forge_actions/runtime/job/execute.js.map +1 -0
  140. package/dist/core/forge_actions/runtime/job/step/execute.d.ts +7 -0
  141. package/dist/core/forge_actions/runtime/job/step/execute.d.ts.map +1 -0
  142. package/dist/core/forge_actions/runtime/job/step/execute.js +176 -0
  143. package/dist/core/forge_actions/runtime/job/step/execute.js.map +1 -0
  144. package/dist/core/forge_actions/runtime/queue.d.ts +11 -0
  145. package/dist/core/forge_actions/runtime/queue.d.ts.map +1 -0
  146. package/dist/core/forge_actions/runtime/queue.js +144 -0
  147. package/dist/core/forge_actions/runtime/queue.js.map +1 -0
  148. package/dist/core/forge_actions/runtime/run/execute.d.ts +9 -0
  149. package/dist/core/forge_actions/runtime/run/execute.d.ts.map +1 -0
  150. package/dist/core/forge_actions/runtime/run/execute.js +191 -0
  151. package/dist/core/forge_actions/runtime/run/execute.js.map +1 -0
  152. package/dist/core/forge_actions/runtime/types.d.ts +24 -0
  153. package/dist/core/forge_actions/runtime/types.d.ts.map +1 -0
  154. package/dist/core/forge_actions/runtime/types.js +2 -0
  155. package/dist/core/forge_actions/runtime/types.js.map +1 -0
  156. package/dist/core/forge_actions/runtime_support.d.ts +57 -0
  157. package/dist/core/forge_actions/runtime_support.d.ts.map +1 -0
  158. package/dist/core/forge_actions/runtime_support.js +276 -0
  159. package/dist/core/forge_actions/runtime_support.js.map +1 -0
  160. package/dist/core/forge_actions/shared.d.ts +92 -0
  161. package/dist/core/forge_actions/shared.d.ts.map +1 -0
  162. package/dist/core/forge_actions/shared.js +204 -0
  163. package/dist/core/forge_actions/shared.js.map +1 -0
  164. package/dist/core/forge_actions.d.ts +17 -24
  165. package/dist/core/forge_actions.d.ts.map +1 -1
  166. package/dist/core/forge_actions.js +33 -1479
  167. package/dist/core/forge_actions.js.map +1 -1
  168. package/dist/core/git_forge/storage_memory/actions.d.ts +5 -0
  169. package/dist/core/git_forge/storage_memory/actions.d.ts.map +1 -0
  170. package/dist/core/git_forge/storage_memory/actions.js +155 -0
  171. package/dist/core/git_forge/storage_memory/actions.js.map +1 -0
  172. package/dist/core/git_forge/storage_memory/adapter.d.ts +4 -0
  173. package/dist/core/git_forge/storage_memory/adapter.d.ts.map +1 -0
  174. package/dist/core/git_forge/storage_memory/adapter.js +118 -0
  175. package/dist/core/git_forge/storage_memory/adapter.js.map +1 -0
  176. package/dist/core/git_forge/storage_memory/state.d.ts +27 -0
  177. package/dist/core/git_forge/storage_memory/state.d.ts.map +1 -0
  178. package/dist/core/git_forge/storage_memory/state.js +53 -0
  179. package/dist/core/git_forge/storage_memory/state.js.map +1 -0
  180. package/dist/core/git_forge/storage_memory.d.ts +1 -3
  181. package/dist/core/git_forge/storage_memory.d.ts.map +1 -1
  182. package/dist/core/git_forge/storage_memory.js +1 -352
  183. package/dist/core/git_forge/storage_memory.js.map +1 -1
  184. package/dist/core/inspect/history.d.ts +13 -0
  185. package/dist/core/inspect/history.d.ts.map +1 -0
  186. package/dist/core/inspect/history.js +176 -0
  187. package/dist/core/inspect/history.js.map +1 -0
  188. package/dist/core/inspect/linguist.d.ts +12 -0
  189. package/dist/core/inspect/linguist.d.ts.map +1 -0
  190. package/dist/core/inspect/linguist.js +128 -0
  191. package/dist/core/inspect/linguist.js.map +1 -0
  192. package/dist/core/inspect/search_archive.d.ts +16 -0
  193. package/dist/core/inspect/search_archive.d.ts.map +1 -0
  194. package/dist/core/inspect/search_archive.js +88 -0
  195. package/dist/core/inspect/search_archive.js.map +1 -0
  196. package/dist/core/inspect/shared.d.ts +5 -0
  197. package/dist/core/inspect/shared.d.ts.map +1 -0
  198. package/dist/core/inspect/shared.js +47 -0
  199. package/dist/core/inspect/shared.js.map +1 -0
  200. package/dist/core/inspect/tree_blob.d.ts +16 -0
  201. package/dist/core/inspect/tree_blob.d.ts.map +1 -0
  202. package/dist/core/inspect/tree_blob.js +80 -0
  203. package/dist/core/inspect/tree_blob.js.map +1 -0
  204. package/dist/core/inspect.d.ts +3 -46
  205. package/dist/core/inspect.d.ts.map +1 -1
  206. package/dist/core/inspect.js +3 -546
  207. package/dist/core/inspect.js.map +1 -1
  208. package/dist/core/inspection/analysis.d.ts +4 -0
  209. package/dist/core/inspection/analysis.d.ts.map +1 -0
  210. package/dist/core/inspection/analysis.js +25 -0
  211. package/dist/core/inspection/analysis.js.map +1 -0
  212. package/dist/core/inspection/shared.d.ts +18 -0
  213. package/dist/core/inspection/shared.d.ts.map +1 -0
  214. package/dist/core/inspection/shared.js +112 -0
  215. package/dist/core/inspection/shared.js.map +1 -0
  216. package/dist/core/inspection/snapshots.d.ts +6 -0
  217. package/dist/core/inspection/snapshots.d.ts.map +1 -0
  218. package/dist/core/inspection/snapshots.js +270 -0
  219. package/dist/core/inspection/snapshots.js.map +1 -0
  220. package/dist/core/inspection/target.d.ts +4 -0
  221. package/dist/core/inspection/target.d.ts.map +1 -0
  222. package/dist/core/inspection/target.js +97 -0
  223. package/dist/core/inspection/target.js.map +1 -0
  224. package/dist/core/inspection/tree.d.ts +6 -0
  225. package/dist/core/inspection/tree.d.ts.map +1 -0
  226. package/dist/core/inspection/tree.js +103 -0
  227. package/dist/core/inspection/tree.js.map +1 -0
  228. package/dist/core/inspection.d.ts +6 -10
  229. package/dist/core/inspection.d.ts.map +1 -1
  230. package/dist/core/inspection.js +6 -592
  231. package/dist/core/inspection.js.map +1 -1
  232. package/dist/http/handler.d.ts.map +1 -1
  233. package/dist/http/handler.js +157 -133
  234. package/dist/http/handler.js.map +1 -1
  235. package/dist/ssh/server.d.ts.map +1 -1
  236. package/dist/ssh/server.js +171 -243
  237. package/dist/ssh/server.js.map +1 -1
  238. package/dist/types/forge/workflows/actions.d.ts +70 -0
  239. package/dist/types/forge/workflows/actions.d.ts.map +1 -0
  240. package/dist/types/forge/workflows/actions.js +3 -0
  241. package/dist/types/forge/workflows/actions.js.map +1 -0
  242. package/dist/types/forge/workflows/definition.d.ts +115 -0
  243. package/dist/types/forge/workflows/definition.d.ts.map +1 -0
  244. package/dist/types/forge/workflows/definition.js +2 -0
  245. package/dist/types/forge/workflows/definition.js.map +1 -0
  246. package/dist/types/forge/workflows/runs.d.ts +184 -0
  247. package/dist/types/forge/workflows/runs.d.ts.map +1 -0
  248. package/dist/types/forge/workflows/runs.js +2 -0
  249. package/dist/types/forge/workflows/runs.js.map +1 -0
  250. package/dist/types/forge/workflows.d.ts +3 -360
  251. package/dist/types/forge/workflows.d.ts.map +1 -1
  252. package/{bin → native}/git-host-actions-runner-darwin-arm64 +0 -0
  253. package/{bin → native}/git-host-actions-runner-darwin-x64 +0 -0
  254. package/{bin → native}/git-host-actions-runner-linux-arm64-gnu +0 -0
  255. package/{bin → native}/git-host-actions-runner-linux-x64-gnu +0 -0
  256. package/package.json +62 -10
  257. package/dist/frontend/js/utils/text.d.ts +0 -2
  258. package/dist/frontend/js/utils/text.d.ts.map +0 -1
  259. package/dist/frontend/js/utils/text.js +0 -4
  260. package/dist/frontend/js/utils/text.js.map +0 -1
  261. /package/{bin → native}/.gitkeep +0 -0
@@ -0,0 +1,128 @@
1
+ import analyseRawContent from "linguist-js/dist/entry/analyseRaw.js";
2
+ import { GitHostError, isGitHostError } from "../../errors.js";
3
+ import { normalizeRepositoryRelativePath } from "../../utils/paths.js";
4
+ import { text } from "../../utils/text.js";
5
+ import { createLinguistProgressReporter } from "./linguist_progress.js";
6
+ import { runGitBuffer } from "../run_git.js";
7
+ import { assertRepositoryReady, decodeBlobContent, parseLsTreeBuffer, resolveCommitForRef, } from "./helpers.js";
8
+ async function readRepositoryTreeEntries(repository, options = {}) {
9
+ const ref = text(options.ref, "HEAD");
10
+ const treePath = options.path ? normalizeRepositoryRelativePath(options.path) : "";
11
+ const args = ["ls-tree", "-z", "-l"];
12
+ if (options.recursive === true)
13
+ args.push("-r");
14
+ args.push(treePath ? `${ref}:${treePath}` : ref);
15
+ const treeRes = await runGitBuffer(args, { cwd: repository.path });
16
+ if (treeRes.ok)
17
+ return parseLsTreeBuffer(treeRes.stdout, treePath);
18
+ if (treePath) {
19
+ const fallbackRes = await runGitBuffer(["ls-tree", "-z", "-l", ref, "--", treePath], { cwd: repository.path });
20
+ if (fallbackRes.ok)
21
+ return parseLsTreeBuffer(fallbackRes.stdout, "");
22
+ }
23
+ throw new GitHostError("git_command_failed", text(treeRes.stderr, "Failed to read repository tree."), {
24
+ path: treePath,
25
+ ref,
26
+ repositoryId: repository.id,
27
+ });
28
+ }
29
+ async function readTreeEntryBlob(repository, ref, entry) {
30
+ const contentRes = await runGitBuffer(["show", `${ref}:${entry.path}`], { cwd: repository.path });
31
+ if (!contentRes.ok) {
32
+ throw new GitHostError("git_command_failed", text(contentRes.stderr, "Failed to read blob content."), {
33
+ path: entry.path,
34
+ ref,
35
+ repositoryId: repository.id,
36
+ });
37
+ }
38
+ return {
39
+ object: entry.object,
40
+ path: entry.path,
41
+ ref,
42
+ size: entry.size == null ? 0 : entry.size,
43
+ ...decodeBlobContent(contentRes.stdout),
44
+ };
45
+ }
46
+ async function readRepositoryLinguistInput(repository, ref, onProgress) {
47
+ const entries = await readRepositoryTreeEntries(repository, { recursive: true, ref });
48
+ const blobEntries = entries.filter((entry) => entry.type === "blob");
49
+ const input = {};
50
+ let processedBlobs = 0;
51
+ if (onProgress)
52
+ await onProgress("reading_blobs", { processed_blobs: 0, total_blobs: blobEntries.length, total_entries: entries.length });
53
+ for (let index = 0; index < blobEntries.length; index += 16) {
54
+ const blobs = await Promise.all(blobEntries.slice(index, index + 16).map(async (entry) => await readTreeEntryBlob(repository, ref, entry)));
55
+ for (const blob of blobs) {
56
+ if (!blob.is_binary && blob.encoding === "utf8")
57
+ input[blob.path] = blob.content;
58
+ }
59
+ processedBlobs += blobs.length;
60
+ if (onProgress)
61
+ await onProgress("reading_blobs", { processed_blobs: processedBlobs, total_blobs: blobEntries.length, total_entries: entries.length });
62
+ }
63
+ return { input, total_blobs: blobEntries.length, total_entries: entries.length };
64
+ }
65
+ function normalizeLinguistLanguage(language, value, repositoryMetadata) {
66
+ const name = text(language);
67
+ const metadata = repositoryMetadata[name] || {};
68
+ return {
69
+ bytes: Number(value?.bytes) || 0,
70
+ color: text(metadata.color) || undefined,
71
+ count: Number(value?.count) || 0,
72
+ lines: { content: Number(value?.lines?.content) || 0, total: Number(value?.lines?.total) || 0 },
73
+ parent: text(metadata.parent) || undefined,
74
+ type: text(metadata.type),
75
+ };
76
+ }
77
+ function normalizeLinguistResults(result, target) {
78
+ const repositoryMetadata = result.repository || {};
79
+ return {
80
+ commit: target.commit,
81
+ files: {
82
+ bytes: Number(result.files?.bytes) || 0,
83
+ count: Number(result.files?.count) || 0,
84
+ lines: { content: Number(result.files?.lines?.content) || 0, total: Number(result.files?.lines?.total) || 0 },
85
+ results: Object.fromEntries(Object.entries(result.files?.results || {}).map(([filePath, language]) => [text(filePath), language == null ? null : text(language)])),
86
+ },
87
+ languages: {
88
+ bytes: Number(result.languages?.bytes) || 0,
89
+ count: Number(result.languages?.count) || 0,
90
+ lines: { content: Number(result.languages?.lines?.content) || 0, total: Number(result.languages?.lines?.total) || 0 },
91
+ results: Object.fromEntries(Object.entries(result.languages?.results || {}).map(([language, value]) => [text(language), normalizeLinguistLanguage(language, value || {}, repositoryMetadata)])),
92
+ },
93
+ ref: target.ref,
94
+ unknown: {
95
+ bytes: Number(result.unknown?.bytes) || 0,
96
+ count: Number(result.unknown?.count) || 0,
97
+ extensions: Object.fromEntries(Object.entries(result.unknown?.extensions || {}).map(([extension, bytes]) => [text(extension), Number(bytes) || 0])),
98
+ filenames: Object.fromEntries(Object.entries(result.unknown?.filenames || {}).map(([fileName, bytes]) => [text(fileName), Number(bytes) || 0])),
99
+ lines: { content: Number(result.unknown?.lines?.content) || 0, total: Number(result.unknown?.lines?.total) || 0 },
100
+ },
101
+ };
102
+ }
103
+ async function readRepositoryLinguist(repository, options = {}) {
104
+ await assertRepositoryReady(repository);
105
+ const progress = createLinguistProgressReporter({ onProgress: options.onProgress, ref: text(options.ref, "HEAD"), repository });
106
+ let target = { commit: "", ref: text(options.ref, "HEAD") };
107
+ try {
108
+ await progress.emit("queued");
109
+ await progress.emit("resolving_ref", { ref: target.ref });
110
+ target = await resolveCommitForRef(repository.path, target.ref, "Repository ref does not exist.");
111
+ await progress.emit("listing_tree", { commit: target.commit, ref: target.ref });
112
+ const linguistInput = await readRepositoryLinguistInput(repository, target.ref, progress.emit);
113
+ await progress.emit("analyzing", { commit: target.commit, processed_blobs: linguistInput.total_blobs, ref: target.ref, total_blobs: linguistInput.total_blobs, total_entries: linguistInput.total_entries });
114
+ const normalized = normalizeLinguistResults(await analyseRawContent(linguistInput.input, { offline: true }), target);
115
+ await progress.emit("completed", { commit: target.commit, processed_blobs: linguistInput.total_blobs, ref: target.ref, total_blobs: linguistInput.total_blobs, total_entries: linguistInput.total_entries });
116
+ return normalized;
117
+ }
118
+ catch (error) {
119
+ await progress.emit("failed", {
120
+ commit: text(target.commit) || undefined,
121
+ error: { code: isGitHostError(error) ? error.code : "internal_error", message: error instanceof Error ? error.message : "Linguist scan failed." },
122
+ ref: target.ref,
123
+ }).catch(() => undefined);
124
+ throw error;
125
+ }
126
+ }
127
+ export { readRepositoryLinguist, readRepositoryTreeEntries, };
128
+ //# sourceMappingURL=linguist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linguist.js","sourceRoot":"","sources":["../../../src/core/inspect/linguist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { GitArchive, GitRepositoryHandle, GitSearchResult } from "../../types.js";
2
+ declare function searchRepository(repository: GitRepositoryHandle, options: {
3
+ caseSensitive?: boolean;
4
+ limit?: number;
5
+ path?: string;
6
+ query?: string;
7
+ ref?: string;
8
+ regexp?: boolean;
9
+ }): Promise<GitSearchResult>;
10
+ declare function readRepositoryArchive(repository: GitRepositoryHandle, options?: {
11
+ format?: "tar" | "tar.gz" | "zip";
12
+ prefix?: string;
13
+ ref?: string;
14
+ }): Promise<GitArchive>;
15
+ export { readRepositoryArchive, searchRepository };
16
+ //# sourceMappingURL=search_archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_archive.d.ts","sourceRoot":"","sources":["../../../src/core/inspect/search_archive.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAuB,eAAe,EAAE,MAAM,eAAe,CAAC;AAiB3G,iBAAe,gBAAgB,CAC7B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,eAAe,CAAC,CAqE1B;AAED,iBAAe,qBAAqB,CAClC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { createGitArchiveService } from "../archive.js";
2
+ import { GitHostError } from "../../errors.js";
3
+ import { text } from "../../utils/text.js";
4
+ import { runGitBuffer } from "../run_git.js";
5
+ import { assertRepositoryReady, resolveCommitForRef } from "./helpers.js";
6
+ import { normalizeOptionalPath } from "./shared.js";
7
+ const silentArchiveLogger = {
8
+ error() { },
9
+ fail() { },
10
+ info() { },
11
+ warn() { },
12
+ };
13
+ const repositoryArchiveService = createGitArchiveService({
14
+ logger: silentArchiveLogger,
15
+ });
16
+ async function searchRepository(repository, options) {
17
+ await assertRepositoryReady(repository);
18
+ const query = text(options && options.query);
19
+ if (!query) {
20
+ throw new GitHostError("git_command_failed", "Search query is required.", {
21
+ repositoryId: repository.id,
22
+ });
23
+ }
24
+ const target = await resolveCommitForRef(repository.path, text(options && options.ref, "HEAD"), "Search ref does not exist.");
25
+ const path = normalizeOptionalPath(options && options.path);
26
+ const limit = Number(options && options.limit) > 0 ? Number(options && options.limit) : 0;
27
+ const args = ["grep", "-n", "--column", "-z", "-I", "--full-name"];
28
+ if (options && options.caseSensitive === false)
29
+ args.push("-i");
30
+ if (!options || options.regexp !== true)
31
+ args.push("-F");
32
+ args.push("-e", query, target.ref);
33
+ if (path)
34
+ args.push("--", path);
35
+ const grepRes = await runGitBuffer(args, { cwd: repository.path });
36
+ if (!grepRes.ok && grepRes.code !== 1) {
37
+ throw new GitHostError("git_command_failed", text(grepRes.stderr, "Failed to search repository."), {
38
+ path,
39
+ query,
40
+ ref: target.ref,
41
+ repositoryId: repository.id,
42
+ });
43
+ }
44
+ const tokens = grepRes.stdout.toString("utf8").split("\0").filter((entry) => entry !== "");
45
+ const parsed = [];
46
+ for (let index = 0; index + 3 < tokens.length; index += 4) {
47
+ const pathToken = tokens[index] || "";
48
+ const lineNumber = Number(tokens[index + 1]) || 0;
49
+ const column = Number(tokens[index + 2]) || 0;
50
+ const line = String(tokens[index + 3] || "").replace(/\r?\n$/, "");
51
+ const filePath = pathToken.startsWith(`${target.ref}:`) ? pathToken.slice(target.ref.length + 1) : pathToken;
52
+ parsed.push({
53
+ column,
54
+ line,
55
+ line_number: lineNumber,
56
+ path: filePath,
57
+ });
58
+ }
59
+ const totalMatches = parsed.length;
60
+ const limited = limit > 0 ? parsed.slice(0, limit) : parsed;
61
+ const filesMap = new Map();
62
+ for (const match of limited) {
63
+ const current = filesMap.get(match.path) || {
64
+ match_count: 0,
65
+ matches: [],
66
+ path: match.path,
67
+ };
68
+ current.match_count += 1;
69
+ current.matches.push({
70
+ column: match.column,
71
+ line: match.line,
72
+ line_number: match.line_number,
73
+ });
74
+ filesMap.set(match.path, current);
75
+ }
76
+ return {
77
+ files: Array.from(filesMap.values()),
78
+ match_count: limited.length,
79
+ query,
80
+ ref: target.ref,
81
+ truncated: limit > 0 && totalMatches > limit,
82
+ };
83
+ }
84
+ async function readRepositoryArchive(repository, options = {}) {
85
+ return await repositoryArchiveService.read(repository, options);
86
+ }
87
+ export { readRepositoryArchive, searchRepository };
88
+ //# sourceMappingURL=search_archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_archive.js","sourceRoot":"","sources":["../../../src/core/inspect/search_archive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { GitBlob, GitRepositoryHandle, GitTreeEntry } from "../../types.js";
2
+ export declare function normalizeOptionalPath(value: unknown): string;
3
+ export declare function formatGitTimestamp(epochSecondsInput: unknown, timezoneInput: unknown): string;
4
+ export declare function readTreeEntryBlob(repository: GitRepositoryHandle, ref: string, entry: GitTreeEntry): Promise<GitBlob>;
5
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/core/inspect/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMhF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG5D;AAED,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAmB7F;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,mBAAmB,EAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,OAAO,CAAC,CAkBlB"}
@@ -0,0 +1,47 @@
1
+ import { GitHostError } from "../../errors.js";
2
+ import { normalizeRepositoryRelativePath } from "../../utils/paths.js";
3
+ import { text } from "../../utils/text.js";
4
+ import { runGitBuffer } from "../run_git.js";
5
+ import { decodeBlobContent } from "./helpers.js";
6
+ export function normalizeOptionalPath(value) {
7
+ const raw = text(value);
8
+ return raw ? normalizeRepositoryRelativePath(raw) : "";
9
+ }
10
+ export function formatGitTimestamp(epochSecondsInput, timezoneInput) {
11
+ const epochSeconds = Number(epochSecondsInput);
12
+ const timezone = text(timezoneInput);
13
+ if (!Number.isFinite(epochSeconds) || !timezone || !/^[+-]\d{4}$/.test(timezone)) {
14
+ return "";
15
+ }
16
+ const sign = timezone.startsWith("-") ? -1 : 1;
17
+ const hours = Number(timezone.slice(1, 3)) || 0;
18
+ const minutes = Number(timezone.slice(3, 5)) || 0;
19
+ const offsetMinutes = sign * ((hours * 60) + minutes);
20
+ const shifted = new Date((epochSeconds + (offsetMinutes * 60)) * 1000);
21
+ const year = shifted.getUTCFullYear();
22
+ const month = String(shifted.getUTCMonth() + 1).padStart(2, "0");
23
+ const day = String(shifted.getUTCDate()).padStart(2, "0");
24
+ const hour = String(shifted.getUTCHours()).padStart(2, "0");
25
+ const minute = String(shifted.getUTCMinutes()).padStart(2, "0");
26
+ const second = String(shifted.getUTCSeconds()).padStart(2, "0");
27
+ return `${year}-${month}-${day}T${hour}:${minute}:${second}${timezone.slice(0, 3)}:${timezone.slice(3, 5)}`;
28
+ }
29
+ export async function readTreeEntryBlob(repository, ref, entry) {
30
+ const objectSpec = `${ref}:${entry.path}`;
31
+ const contentRes = await runGitBuffer(["show", objectSpec], { cwd: repository.path });
32
+ if (!contentRes.ok) {
33
+ throw new GitHostError("git_command_failed", text(contentRes.stderr, "Failed to read blob content."), {
34
+ path: entry.path,
35
+ ref,
36
+ repositoryId: repository.id,
37
+ });
38
+ }
39
+ return {
40
+ object: entry.object,
41
+ path: entry.path,
42
+ ref,
43
+ size: entry.size == null ? 0 : entry.size,
44
+ ...decodeBlobContent(contentRes.stdout),
45
+ };
46
+ }
47
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/core/inspect/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { GitBlob, GitLinguistProgressEvent, GitRepositoryHandle, GitTreeEntry } from "../../types.js";
2
+ import { readRepositoryLinguist, readRepositoryTreeEntries } from "./linguist.js";
3
+ declare function listRepositoryTree(repository: GitRepositoryHandle, options?: {
4
+ icons?: boolean;
5
+ linguist?: boolean;
6
+ onLinguistProgress?: (event: GitLinguistProgressEvent) => Promise<void> | void;
7
+ path?: string;
8
+ recursive?: boolean;
9
+ ref?: string;
10
+ }): Promise<GitTreeEntry[]>;
11
+ declare function readRepositoryBlob(repository: GitRepositoryHandle, options: {
12
+ path?: string;
13
+ ref?: string;
14
+ }): Promise<GitBlob>;
15
+ export { listRepositoryTree, readRepositoryBlob, readRepositoryLinguist, readRepositoryTreeEntries };
16
+ //# sourceMappingURL=tree_blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree_blob.d.ts","sourceRoot":"","sources":["../../../src/core/inspect/tree_blob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACb,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIlF,iBAAe,kBAAkB,CAC/B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC,YAAY,EAAE,CAAC,CAwBzB;AAED,iBAAe,kBAAkB,CAC/B,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,OAAO,CAAC,CAiDlB;AAED,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { GitHostError } from "../../errors.js";
2
+ import { normalizeRepositoryRelativePath } from "../../utils/paths.js";
3
+ import { text } from "../../utils/text.js";
4
+ import { resolveTreeEntryIcon } from "./icon_theme.js";
5
+ import { readRepositoryLinguist, readRepositoryTreeEntries } from "./linguist.js";
6
+ import { runGit, runGitBuffer } from "../run_git.js";
7
+ import { assertRepositoryReady, decodeBlobContent } from "./helpers.js";
8
+ async function listRepositoryTree(repository, options = {}) {
9
+ await assertRepositoryReady(repository);
10
+ const ref = text(options.ref, "HEAD");
11
+ const entries = await readRepositoryTreeEntries(repository, {
12
+ path: options.path,
13
+ recursive: options.recursive,
14
+ ref,
15
+ });
16
+ if (options.icons !== true && options.linguist !== true)
17
+ return entries;
18
+ const linguist = options.linguist === true
19
+ ? await readRepositoryLinguist(repository, {
20
+ onProgress: options.onLinguistProgress,
21
+ ref,
22
+ })
23
+ : null;
24
+ return entries.map((entry) => ({
25
+ ...entry,
26
+ ...(options.icons === true ? { icon: resolveTreeEntryIcon(entry) } : {}),
27
+ ...(options.linguist === true
28
+ ? { language: linguist && Object.prototype.hasOwnProperty.call(linguist.files.results, entry.path) ? linguist.files.results[entry.path] : null }
29
+ : {}),
30
+ }));
31
+ }
32
+ async function readRepositoryBlob(repository, options) {
33
+ await assertRepositoryReady(repository);
34
+ const ref = text(options && options.ref, "HEAD");
35
+ const blobPath = normalizeRepositoryRelativePath(options && options.path);
36
+ const objectSpec = `${ref}:${blobPath}`;
37
+ const [revRes, typeRes, sizeRes, contentRes] = await Promise.all([
38
+ runGit(["rev-parse", "--verify", objectSpec], { cwd: repository.path }),
39
+ runGit(["cat-file", "-t", objectSpec], { cwd: repository.path }),
40
+ runGit(["cat-file", "-s", objectSpec], { cwd: repository.path }),
41
+ runGitBuffer(["show", objectSpec], { cwd: repository.path }),
42
+ ]);
43
+ if (!revRes.ok) {
44
+ throw new GitHostError("path_not_found", text(revRes.stderr, "Blob does not exist."), {
45
+ path: blobPath,
46
+ ref,
47
+ repositoryId: repository.id,
48
+ });
49
+ }
50
+ if (!typeRes.ok || text(typeRes.stdout) !== "blob") {
51
+ throw new GitHostError("path_not_blob", text(typeRes.stderr, "Requested path is not a blob."), {
52
+ path: blobPath,
53
+ ref,
54
+ repositoryId: repository.id,
55
+ });
56
+ }
57
+ if (!sizeRes.ok) {
58
+ throw new GitHostError("git_command_failed", text(sizeRes.stderr, "Failed to read blob size."), {
59
+ path: blobPath,
60
+ ref,
61
+ repositoryId: repository.id,
62
+ });
63
+ }
64
+ if (!contentRes.ok) {
65
+ throw new GitHostError("git_command_failed", text(contentRes.stderr, "Failed to read blob content."), {
66
+ path: blobPath,
67
+ ref,
68
+ repositoryId: repository.id,
69
+ });
70
+ }
71
+ return {
72
+ object: text(revRes.stdout),
73
+ path: blobPath,
74
+ ref,
75
+ size: Number(text(sizeRes.stdout)) || 0,
76
+ ...decodeBlobContent(contentRes.stdout),
77
+ };
78
+ }
79
+ export { listRepositoryTree, readRepositoryBlob, readRepositoryLinguist, readRepositoryTreeEntries };
80
+ //# sourceMappingURL=tree_blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree_blob.js","sourceRoot":"","sources":["../../../src/core/inspect/tree_blob.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,4 @@
1
- import type { GitArchive, GitBlob, GitBlame, GitCommitDetail, GitCompareSummary, GitLinguistProgressEvent, GitRepositoryHandle, GitRepositoryLinguist, GitSearchResult, GitTreeEntry } from "../types.js";
2
- declare function readRepositoryTreeEntries(repository: GitRepositoryHandle, options?: {
3
- path?: string;
4
- recursive?: boolean;
5
- ref?: string;
6
- }): Promise<GitTreeEntry[]>;
7
- declare function readRepositoryLinguist(repository: GitRepositoryHandle, options?: {
8
- onProgress?: (event: GitLinguistProgressEvent) => Promise<void> | void;
9
- ref?: string;
10
- }): Promise<GitRepositoryLinguist>;
11
- declare function listRepositoryTree(repository: GitRepositoryHandle, options?: {
12
- icons?: boolean;
13
- linguist?: boolean;
14
- onLinguistProgress?: (event: GitLinguistProgressEvent) => Promise<void> | void;
15
- path?: string;
16
- recursive?: boolean;
17
- ref?: string;
18
- }): Promise<GitTreeEntry[]>;
19
- declare function readRepositoryBlob(repository: GitRepositoryHandle, options: {
20
- path?: string;
21
- ref?: string;
22
- }): Promise<GitBlob>;
23
- declare function readRepositoryCommit(repository: GitRepositoryHandle, commitRefInput: unknown): Promise<GitCommitDetail>;
24
- declare function readRepositoryCompare(repository: GitRepositoryHandle, options: {
25
- baseRef?: string;
26
- headRef?: string;
27
- path?: string;
28
- }): Promise<GitCompareSummary>;
29
- declare function readRepositoryBlame(repository: GitRepositoryHandle, options: {
30
- path?: string;
31
- ref?: string;
32
- }): Promise<GitBlame>;
33
- declare function searchRepository(repository: GitRepositoryHandle, options: {
34
- caseSensitive?: boolean;
35
- limit?: number;
36
- path?: string;
37
- query?: string;
38
- ref?: string;
39
- regexp?: boolean;
40
- }): Promise<GitSearchResult>;
41
- declare function readRepositoryArchive(repository: GitRepositoryHandle, options?: {
42
- format?: "tar" | "tar.gz" | "zip";
43
- prefix?: string;
44
- ref?: string;
45
- }): Promise<GitArchive>;
46
- export { listRepositoryTree, readRepositoryTreeEntries, readRepositoryArchive, readRepositoryBlame, readRepositoryBlob, readRepositoryCommit, readRepositoryCompare, readRepositoryLinguist, searchRepository, };
1
+ export { readRepositoryBlame, readRepositoryCommit, readRepositoryCompare } from "./inspect/history.js";
2
+ export { readRepositoryArchive, searchRepository } from "./inspect/search_archive.js";
3
+ export { listRepositoryTree, readRepositoryBlob, readRepositoryLinguist, readRepositoryTreeEntries } from "./inspect/tree_blob.js";
47
4
  //# sourceMappingURL=inspect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/core/inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/core/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}