@foundation0/git 1.0.0 → 1.2.1

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 (117) hide show
  1. package/{packages/git/README.md → README.md} +14 -5
  2. package/{packages/git/mcp → mcp}/README.md +3 -1
  3. package/{packages/git/mcp → mcp}/cli.mjs +0 -0
  4. package/package.json +43 -13
  5. package/{packages/git/src → src}/git-service-api.ts +3 -0
  6. package/{packages/git/src → src}/index.ts +8 -0
  7. package/src/label-management.ts +587 -0
  8. package/src/platform/config.ts +60 -0
  9. package/.codex.example/config.toml +0 -10
  10. package/.env.example +0 -10
  11. package/packages/fs/README.md +0 -47
  12. package/packages/fs/node_modules/.bin/f0-git-mcp +0 -21
  13. package/packages/fs/node_modules/.bin/f0-git-mcp-server +0 -21
  14. package/packages/fs/node_modules/.bin/f0-git-mcp-server.CMD +0 -12
  15. package/packages/fs/node_modules/.bin/f0-git-mcp-server.ps1 +0 -41
  16. package/packages/fs/node_modules/.bin/f0-git-mcp.CMD +0 -12
  17. package/packages/fs/node_modules/.bin/f0-git-mcp.ps1 +0 -41
  18. package/packages/fs/node_modules/.bin/tsc +0 -21
  19. package/packages/fs/node_modules/.bin/tsc.CMD +0 -12
  20. package/packages/fs/node_modules/.bin/tsc.ps1 +0 -41
  21. package/packages/fs/node_modules/.bin/tsserver +0 -21
  22. package/packages/fs/node_modules/.bin/tsserver.CMD +0 -12
  23. package/packages/fs/node_modules/.bin/tsserver.ps1 +0 -41
  24. package/packages/fs/node_modules/.bin/vite +0 -21
  25. package/packages/fs/node_modules/.bin/vite.CMD +0 -12
  26. package/packages/fs/node_modules/.bin/vite.ps1 +0 -41
  27. package/packages/fs/node_modules/.bin/vitest +0 -21
  28. package/packages/fs/node_modules/.bin/vitest.CMD +0 -12
  29. package/packages/fs/node_modules/.bin/vitest.ps1 +0 -41
  30. package/packages/fs/package.json +0 -28
  31. package/packages/fs/src/cli.ts +0 -74
  32. package/packages/fs/src/git-fs.ts +0 -705
  33. package/packages/fs/src/index.ts +0 -33
  34. package/packages/fs/src/mount.ts +0 -297
  35. package/packages/fs/tsconfig.json +0 -7
  36. package/packages/git/mcp/tests/e2e/git-mcp-e2e.spec.ts +0 -157
  37. package/packages/git/mcp/tests/e2e/server.fixture.ts +0 -109
  38. package/packages/git/node_modules/.bin/tsc +0 -21
  39. package/packages/git/node_modules/.bin/tsc.CMD +0 -12
  40. package/packages/git/node_modules/.bin/tsc.ps1 +0 -41
  41. package/packages/git/node_modules/.bin/tsserver +0 -21
  42. package/packages/git/node_modules/.bin/tsserver.CMD +0 -12
  43. package/packages/git/node_modules/.bin/tsserver.ps1 +0 -41
  44. package/packages/git/node_modules/.bin/vite +0 -21
  45. package/packages/git/node_modules/.bin/vite.CMD +0 -12
  46. package/packages/git/node_modules/.bin/vite.ps1 +0 -41
  47. package/packages/git/node_modules/.bin/vitest +0 -21
  48. package/packages/git/node_modules/.bin/vitest.CMD +0 -12
  49. package/packages/git/node_modules/.bin/vitest.ps1 +0 -41
  50. package/packages/git/node_modules/.vite/vitest/results.json +0 -1
  51. package/packages/git/package.json +0 -60
  52. package/packages/git/scripts/create-issue.mjs +0 -93
  53. package/packages/git/scripts/extract-git-spec.mjs +0 -234
  54. package/packages/git/scripts/fetch-gitea-swagger.mjs +0 -22
  55. package/packages/git/src/platform/config.ts +0 -140
  56. package/packages/git/tests/api.spec.ts +0 -55
  57. package/packages/git/tests/e2e/git-service-feature-e2e.spec.ts +0 -232
  58. package/packages/git/tests/git-service-api-object.spec.ts +0 -97
  59. package/packages/git/tests/git-service-feature-matrix.spec.ts +0 -182
  60. package/packages/git/tests/issue-dependencies.spec.ts +0 -81
  61. package/packages/git/tsconfig.json +0 -7
  62. package/packages/git/vitest.config.ts +0 -7
  63. package/packages/utils/package.json +0 -9
  64. package/packages/utils/src/awk.ts +0 -6
  65. package/packages/utils/src/cat.ts +0 -6
  66. package/packages/utils/src/cd.ts +0 -6
  67. package/packages/utils/src/chgrp.ts +0 -6
  68. package/packages/utils/src/chmod.ts +0 -6
  69. package/packages/utils/src/chown.ts +0 -6
  70. package/packages/utils/src/cp.ts +0 -6
  71. package/packages/utils/src/curl.ts +0 -6
  72. package/packages/utils/src/cut.ts +0 -6
  73. package/packages/utils/src/date.ts +0 -6
  74. package/packages/utils/src/echo.ts +0 -6
  75. package/packages/utils/src/find.ts +0 -6
  76. package/packages/utils/src/grep.ts +0 -6
  77. package/packages/utils/src/gunzip.ts +0 -6
  78. package/packages/utils/src/gzip.ts +0 -6
  79. package/packages/utils/src/head.ts +0 -6
  80. package/packages/utils/src/hostname.ts +0 -6
  81. package/packages/utils/src/index.ts +0 -37
  82. package/packages/utils/src/ls.ts +0 -6
  83. package/packages/utils/src/mkdir.ts +0 -6
  84. package/packages/utils/src/mv.ts +0 -6
  85. package/packages/utils/src/ping.ts +0 -6
  86. package/packages/utils/src/pwd.ts +0 -6
  87. package/packages/utils/src/rm.ts +0 -6
  88. package/packages/utils/src/rmdir.ts +0 -6
  89. package/packages/utils/src/sed.ts +0 -6
  90. package/packages/utils/src/sort.ts +0 -6
  91. package/packages/utils/src/tail.ts +0 -6
  92. package/packages/utils/src/tar.ts +0 -6
  93. package/packages/utils/src/touch.ts +0 -6
  94. package/packages/utils/src/tr.ts +0 -6
  95. package/packages/utils/src/uname.ts +0 -6
  96. package/packages/utils/src/uniq.ts +0 -6
  97. package/packages/utils/src/unzip.ts +0 -6
  98. package/packages/utils/src/util.ts +0 -4
  99. package/packages/utils/src/wc.ts +0 -6
  100. package/packages/utils/src/wget.ts +0 -6
  101. package/packages/utils/src/whoami.ts +0 -6
  102. package/packages/utils/src/zip.ts +0 -6
  103. package/pnpm-workspace.yaml +0 -2
  104. package/tsconfig.base.json +0 -12
  105. /package/{packages/git/gitea-swagger.json → gitea-swagger.json} +0 -0
  106. /package/{packages/git/mcp → mcp}/src/cli.ts +0 -0
  107. /package/{packages/git/mcp → mcp}/src/client.ts +0 -0
  108. /package/{packages/git/mcp → mcp}/src/index.ts +0 -0
  109. /package/{packages/git/mcp → mcp}/src/server.ts +0 -0
  110. /package/{packages/git/src → src}/api.ts +0 -0
  111. /package/{packages/git/src → src}/git-service-feature-spec.generated.ts +0 -0
  112. /package/{packages/git/src → src}/issue-dependencies.ts +0 -0
  113. /package/{packages/git/src → src}/platform/gitea-adapter.ts +0 -0
  114. /package/{packages/git/src → src}/platform/gitea-rules.ts +0 -0
  115. /package/{packages/git/src → src}/platform/index.ts +0 -0
  116. /package/{packages/git/src → src}/repository.ts +0 -0
  117. /package/{packages/git/src → src}/spec-mock.ts +0 -0
@@ -1,81 +0,0 @@
1
- import { describe, expect, it, vi } from 'vitest'
2
-
3
- import { extractDependencyIssueNumbers, syncIssueDependencies } from '../src/issue-dependencies'
4
-
5
- describe('extractDependencyIssueNumbers', () => {
6
- it('extracts issue numbers from direct array payload', () => {
7
- const values = extractDependencyIssueNumbers([
8
- { index: 12, owner: 'example-org', repo: 'test' },
9
- { number: '34', owner: 'example-org', repo: 'test' },
10
- ])
11
-
12
- expect(values.sort((a, b) => a - b)).toEqual([12, 34])
13
- })
14
-
15
- it('extracts issue numbers from wrapped objects', () => {
16
- const values = extractDependencyIssueNumbers({
17
- dependencies: [{ issue: { index: 5 } }, { issue: { number: 7 } }],
18
- })
19
-
20
- expect(values.sort((a, b) => a - b)).toEqual([5, 7])
21
- })
22
-
23
- it('extracts issue numbers from issue meta-like object', () => {
24
- const values = extractDependencyIssueNumbers({ issue: { index: 8 }, number: 9 })
25
- expect(values.sort((a, b) => a - b)).toEqual([8, 9])
26
- })
27
- })
28
-
29
- describe('syncIssueDependencies', () => {
30
- it('adds and removes dependencies and verifies final state', async () => {
31
- const fetchSpy = vi.spyOn(globalThis, 'fetch').mockResolvedValueOnce(
32
- new Response(JSON.stringify([{ number: 2 }]), {
33
- status: 200,
34
- headers: { 'content-type': 'application/json' },
35
- }),
36
- ).mockResolvedValueOnce(
37
- new Response(null, {
38
- status: 204,
39
- headers: { 'content-type': 'application/json' },
40
- }),
41
- ).mockResolvedValueOnce(
42
- new Response(JSON.stringify({ status: 'ok' }), {
43
- status: 201,
44
- headers: { 'content-type': 'application/json' },
45
- }),
46
- ).mockResolvedValueOnce(
47
- new Response(JSON.stringify([{ number: 1 }]), {
48
- status: 200,
49
- headers: { 'content-type': 'application/json' },
50
- }),
51
- )
52
-
53
- const result = await syncIssueDependencies('example-org', 'example-repo', 42, [1], 'https://gitea.example.com', 'token', false)
54
-
55
- expect(result).toEqual({
56
- added: 1,
57
- removed: 1,
58
- unchanged: 0,
59
- })
60
-
61
- const calls = fetchSpy.mock.calls
62
- expect(calls).toHaveLength(4)
63
- const [url1, req1] = calls[0]
64
- const [url2, req2] = calls[1]
65
- const [url3, req3] = calls[2]
66
- const [url4] = calls[3]
67
-
68
- expect(url1).toBe('https://gitea.example.com/api/v1/repos/example-org/example-repo/issues/42/dependencies')
69
- expect(req1?.method).toBe('GET')
70
-
71
- expect(req2?.method).toBe('DELETE')
72
- expect(JSON.parse(req2?.body as string)).toMatchObject({ index: 2, owner: 'example-org', repo: 'example-repo' })
73
-
74
- expect(req3?.method).toBe('POST')
75
- expect(JSON.parse(req3?.body as string)).toMatchObject({ index: 1, owner: 'example-org', repo: 'example-repo' })
76
-
77
- expect(url4).toBe('https://gitea.example.com/api/v1/repos/example-org/example-repo/issues/42/dependencies')
78
-
79
- fetchSpy.mockRestore()
80
- })
81
- })
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "types": ["node"]
5
- },
6
- "include": ["src", "mcp/src", "tests", "mcp/tests"]
7
- }
@@ -1,7 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
-
3
- export default defineConfig({
4
- test: {
5
- environment: 'node',
6
- },
7
- })
@@ -1,9 +0,0 @@
1
- {
2
- "name": "@workspace/utils",
3
- "version": "0.1.0",
4
- "private": true,
5
- "type": "module",
6
- "exports": {
7
- ".": "./src/index.ts"
8
- }
9
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function awk(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function cat(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function cd(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function chgrp(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function chmod(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function chown(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function cp(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function curl(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function cut(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function date(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function echo(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function find(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function grep(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function gunzip(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function gzip(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function head(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function hostname(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,37 +0,0 @@
1
- export { ls as ls } from './ls'
2
- export { cat as cat } from './cat'
3
- export { pwd as pwd } from './pwd'
4
- export { cd as cd } from './cd'
5
- export { mkdir as mkdir } from './mkdir'
6
- export { rmdir as rmdir } from './rmdir'
7
- export { cp as cp } from './cp'
8
- export { mv as mv } from './mv'
9
- export { rm as rm } from './rm'
10
- export { touch as touch } from './touch'
11
- export { chmod as chmod } from './chmod'
12
- export { chown as chown } from './chown'
13
- export { chgrp as chgrp } from './chgrp'
14
- export { grep as grep } from './grep'
15
- export { find as find } from './find'
16
- export { sed as sed } from './sed'
17
- export { awk as awk } from './awk'
18
- export { head as head } from './head'
19
- export { tail as tail } from './tail'
20
- export { sort as sort } from './sort'
21
- export { uniq as uniq } from './uniq'
22
- export { cut as cut } from './cut'
23
- export { tr as tr } from './tr'
24
- export { wc as wc } from './wc'
25
- export { ping as ping } from './ping'
26
- export { curl as curl } from './curl'
27
- export { wget as wget } from './wget'
28
- export { tar as tar } from './tar'
29
- export { gzip as gzip } from './gzip'
30
- export { gunzip as gunzip } from './gunzip'
31
- export { zip as zip } from './zip'
32
- export { unzip as unzip } from './unzip'
33
- export { echo as echo } from './echo'
34
- export { date as date } from './date'
35
- export { hostname as hostname } from './hostname'
36
- export { whoami as whoami } from './whoami'
37
- export { uname as uname } from './uname'
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function ls(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function mkdir(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function mv(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function ping(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function pwd(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function rm(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function rmdir(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function sed(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function sort(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function tail(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function tar(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function touch(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function tr(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function uname(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function uniq(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function unzip(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,4 +0,0 @@
1
- export type UtilArgs = Array<string | number | boolean | null | undefined | Record<string, unknown> | unknown[]>
2
-
3
- export const noop = (..._args: UtilArgs): unknown => undefined
4
-
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function wc(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function wget(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function whoami(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,6 +0,0 @@
1
- import { type UtilArgs, noop } from './util'
2
-
3
-
4
- export function zip(...args: UtilArgs): unknown {
5
- return noop(...args)
6
- }
@@ -1,2 +0,0 @@
1
- packages:
2
- - "packages/*"
@@ -1,12 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "Bundler",
6
- "strict": true,
7
- "skipLibCheck": true,
8
- "types": ["node"],
9
- "resolveJsonModule": true,
10
- "esModuleInterop": true
11
- }
12
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes