@dsh-plugin/dsh-synapse 0.0.0-stage → 0.1.0-dev.41044818627

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 (150) hide show
  1. package/LICENSE +661 -0
  2. package/NOTICE.md +18 -0
  3. package/README.md +136 -2
  4. package/cordis.patch.yml +3 -0
  5. package/lib/bot.cjs +8314 -0
  6. package/lib/bot.cjs.map +7 -0
  7. package/lib/build.json +1 -0
  8. package/lib/client.js +46 -0
  9. package/lib/host/agent.d.ts +21 -0
  10. package/lib/host/agent.js +151 -0
  11. package/lib/host/agent.js.map +1 -0
  12. package/lib/host/bot.d.ts +17 -0
  13. package/lib/host/bot.js +158 -0
  14. package/lib/host/bot.js.map +1 -0
  15. package/lib/host/client.d.ts +2 -0
  16. package/lib/host/client.js +19 -0
  17. package/lib/host/client.js.map +1 -0
  18. package/lib/host/config.d.ts +24 -0
  19. package/lib/host/config.js +192 -0
  20. package/lib/host/config.js.map +1 -0
  21. package/lib/host/files.d.ts +29 -0
  22. package/lib/host/files.js +188 -0
  23. package/lib/host/files.js.map +1 -0
  24. package/lib/host/gateway.d.ts +33 -0
  25. package/lib/host/gateway.js +237 -0
  26. package/lib/host/gateway.js.map +1 -0
  27. package/lib/host/github.d.ts +47 -0
  28. package/lib/host/github.js +219 -0
  29. package/lib/host/github.js.map +1 -0
  30. package/lib/host/http.d.ts +4 -0
  31. package/lib/host/http.js +41 -0
  32. package/lib/host/http.js.map +1 -0
  33. package/lib/host/index.d.ts +32 -0
  34. package/lib/host/index.js +192 -0
  35. package/lib/host/index.js.map +1 -0
  36. package/lib/host/inference-worker.d.ts +1 -0
  37. package/lib/host/inference-worker.js +72 -0
  38. package/lib/host/inference-worker.js.map +1 -0
  39. package/lib/host/mcp.d.ts +138 -0
  40. package/lib/host/mcp.js +104 -0
  41. package/lib/host/mcp.js.map +1 -0
  42. package/lib/host/memory.d.ts +26 -0
  43. package/lib/host/memory.js +155 -0
  44. package/lib/host/memory.js.map +1 -0
  45. package/lib/host/panel.d.ts +1 -0
  46. package/lib/host/panel.html +174 -0
  47. package/lib/host/panel.js +388 -0
  48. package/lib/host/panel.js.map +1 -0
  49. package/lib/host/runtime.d.ts +21 -0
  50. package/lib/host/runtime.js +145 -0
  51. package/lib/host/runtime.js.map +1 -0
  52. package/lib/host/types.d.ts +112 -0
  53. package/lib/host/types.js +2 -0
  54. package/lib/host/types.js.map +1 -0
  55. package/package.json +94 -4
  56. package/scripts/build.mjs +90 -0
  57. package/scripts/check.mjs +13 -0
  58. package/scripts/dump-npm-latest.mjs +49 -0
  59. package/scripts/model-smoke.mjs +25 -0
  60. package/src/agent.ts +203 -0
  61. package/src/bot.ts +173 -0
  62. package/src/client.ts +20 -0
  63. package/src/config.ts +217 -0
  64. package/src/files.ts +206 -0
  65. package/src/gateway.ts +276 -0
  66. package/src/github.ts +263 -0
  67. package/src/http.ts +41 -0
  68. package/src/index.ts +227 -0
  69. package/src/inference-worker.ts +89 -0
  70. package/src/mcp.ts +112 -0
  71. package/src/memory.ts +178 -0
  72. package/src/panel.html +174 -0
  73. package/src/panel.ts +440 -0
  74. package/src/runtime.ts +164 -0
  75. package/src/types.ts +106 -0
  76. package/test/core.test.mjs +279 -0
  77. package/test/fixtures/mcp-server.mjs +14 -0
  78. package/test/integration.test.mjs +253 -0
  79. package/test/panel.test.mjs +73 -0
  80. package/tsconfig.json +18 -0
  81. package/vendor/gugle-chat-bot/LICENSE +661 -0
  82. package/vendor/gugle-chat-bot/package.json +57 -0
  83. package/vendor/gugle-chat-bot/src/allow-rule.yml +9345 -0
  84. package/vendor/gugle-chat-bot/src/api.json +4285 -0
  85. package/vendor/gugle-chat-bot/src/command/index.ts +141 -0
  86. package/vendor/gugle-chat-bot/src/config/features.ts +548 -0
  87. package/vendor/gugle-chat-bot/src/config/index.ts +184 -0
  88. package/vendor/gugle-chat-bot/src/config/manager.ts +357 -0
  89. package/vendor/gugle-chat-bot/src/constants/index.ts +13 -0
  90. package/vendor/gugle-chat-bot/src/custom.ts +548 -0
  91. package/vendor/gugle-chat-bot/src/event/index.ts +118 -0
  92. package/vendor/gugle-chat-bot/src/features/admin/index.ts +414 -0
  93. package/vendor/gugle-chat-bot/src/features/bili/image/impl/video.ts +39 -0
  94. package/vendor/gugle-chat-bot/src/features/bili/image/index.ts +37 -0
  95. package/vendor/gugle-chat-bot/src/features/bili/index.ts +65 -0
  96. package/vendor/gugle-chat-bot/src/features/bili/template/style/video.css +97 -0
  97. package/vendor/gugle-chat-bot/src/features/bili/template/video.html +57 -0
  98. package/vendor/gugle-chat-bot/src/features/discord-bridge/index.ts +1128 -0
  99. package/vendor/gugle-chat-bot/src/features/discord-bridge/markdown.ts +105 -0
  100. package/vendor/gugle-chat-bot/src/features/discord-bridge/slash.ts +355 -0
  101. package/vendor/gugle-chat-bot/src/features/discord-bridge/source.ts +96 -0
  102. package/vendor/gugle-chat-bot/src/features/discord-bridge/template/message.html +14 -0
  103. package/vendor/gugle-chat-bot/src/features/discord-bridge/template/style/message.css +144 -0
  104. package/vendor/gugle-chat-bot/src/features/github/api.ts +93 -0
  105. package/vendor/gugle-chat-bot/src/features/github/binding.ts +161 -0
  106. package/vendor/gugle-chat-bot/src/features/github/image/impl/issue.ts +132 -0
  107. package/vendor/gugle-chat-bot/src/features/github/image/impl/pr.ts +144 -0
  108. package/vendor/gugle-chat-bot/src/features/github/image/impl/release.ts +160 -0
  109. package/vendor/gugle-chat-bot/src/features/github/image/index.ts +310 -0
  110. package/vendor/gugle-chat-bot/src/features/github/index.ts +302 -0
  111. package/vendor/gugle-chat-bot/src/features/github/template/issue.html +118 -0
  112. package/vendor/gugle-chat-bot/src/features/github/template/pull_request.html +125 -0
  113. package/vendor/gugle-chat-bot/src/features/github/template/release.html +53 -0
  114. package/vendor/gugle-chat-bot/src/features/github/template/style/issue.css +468 -0
  115. package/vendor/gugle-chat-bot/src/features/github/template/style/pull_request.css +469 -0
  116. package/vendor/gugle-chat-bot/src/features/github/template/style/release.css +412 -0
  117. package/vendor/gugle-chat-bot/src/features/hermes/client.ts +184 -0
  118. package/vendor/gugle-chat-bot/src/features/hermes/config.ts +210 -0
  119. package/vendor/gugle-chat-bot/src/features/hermes/context.ts +67 -0
  120. package/vendor/gugle-chat-bot/src/features/hermes/history.ts +86 -0
  121. package/vendor/gugle-chat-bot/src/features/hermes/index.ts +1533 -0
  122. package/vendor/gugle-chat-bot/src/features/hermes/message.ts +319 -0
  123. package/vendor/gugle-chat-bot/src/features/hermes/reaction.ts +181 -0
  124. package/vendor/gugle-chat-bot/src/features/hermes/render.ts +118 -0
  125. package/vendor/gugle-chat-bot/src/features/hermes/reply-units.ts +331 -0
  126. package/vendor/gugle-chat-bot/src/features/hermes/skills.ts +406 -0
  127. package/vendor/gugle-chat-bot/src/features/hermes/template/approval.html +30 -0
  128. package/vendor/gugle-chat-bot/src/features/hermes/template/progress.html +21 -0
  129. package/vendor/gugle-chat-bot/src/features/hermes/template/style/approval.css +81 -0
  130. package/vendor/gugle-chat-bot/src/features/hermes/template/style/progress.css +120 -0
  131. package/vendor/gugle-chat-bot/src/features/hermes/trigger.ts +86 -0
  132. package/vendor/gugle-chat-bot/src/features/hermes/types.ts +327 -0
  133. package/vendor/gugle-chat-bot/src/features/management/index.ts +156 -0
  134. package/vendor/gugle-chat-bot/src/features/minecraft/index.ts +127 -0
  135. package/vendor/gugle-chat-bot/src/features/modrinth/index.ts +71 -0
  136. package/vendor/gugle-chat-bot/src/features/parentheses/index.ts +117 -0
  137. package/vendor/gugle-chat-bot/src/features/peak-valley-timer/index.ts +452 -0
  138. package/vendor/gugle-chat-bot/src/features/poke/index.ts +24 -0
  139. package/vendor/gugle-chat-bot/src/features/version-tracker/index.ts +78 -0
  140. package/vendor/gugle-chat-bot/src/features/welcome/index.ts +58 -0
  141. package/vendor/gugle-chat-bot/src/github-ip.json +5814 -0
  142. package/vendor/gugle-chat-bot/src/image/index.ts +278 -0
  143. package/vendor/gugle-chat-bot/src/index.ts +695 -0
  144. package/vendor/gugle-chat-bot/src/logger/index.ts +54 -0
  145. package/vendor/gugle-chat-bot/src/result.json +359 -0
  146. package/vendor/gugle-chat-bot/src/type/bili.d.ts +825 -0
  147. package/vendor/gugle-chat-bot/src/type/event.d.ts +146 -0
  148. package/vendor/gugle-chat-bot/src/type/github.d.ts +446 -0
  149. package/vendor/gugle-chat-bot/src/type/index.d.ts +254 -0
  150. package/vendor/gugle-chat-bot/tsconfig.json +46 -0
@@ -0,0 +1,54 @@
1
+ // 导入winston库中的createLogger、Logger、transports和format模块,以及dayjs库
2
+ import { createLogger, format, Logger, transports } from 'winston';
3
+ import 'winston-daily-rotate-file';
4
+ import dayjs from 'dayjs';
5
+
6
+ // 定义LoggerFactory类
7
+ export class LoggerFactory {
8
+ /**
9
+ * 创建一个Logger实例
10
+ *
11
+ * @param name 日志的名称,用于在日志条目中标识,可选,默认为undefined
12
+ * @param path 日志文件的存储路径,可选,默认为当前工作目录
13
+ * @param logLevel 日志级别,可选,默认为'info',可选值包括'debug'、'info'、'warn'和'error'
14
+ * @returns 返回一个配置好的Logger实例
15
+ */
16
+ public static createLogger(
17
+ name: string | undefined = undefined,
18
+ path: string = process.cwd(),
19
+ logLevel: 'debug' | 'info' | 'warn' | 'error' = 'info'
20
+ ): Logger {
21
+ // 配置文件日志输出
22
+ const dailyRotateFile = new transports.DailyRotateFile({
23
+ // 指定日志文件的名称和路径
24
+ filename: `%DATE%.log`,
25
+ dirname: path,
26
+ datePattern: 'YYYY-MM-DD',
27
+ // 使用自定义打印格式
28
+ format: format.printf(
29
+ info => `[${dayjs().format('YYYY-MM-DD HH:mm:ss')}]${name ? `[${name}]` : ''}[${info.level}] ${info.message}`
30
+ ),
31
+ maxSize: '16k',
32
+ zippedArchive: true
33
+ });
34
+
35
+ // 配置控制台日志输出
36
+ const console = new transports.Console({
37
+ // 结合颜色格式化和自定义打印格式
38
+ format: format.combine(
39
+ format.colorize(),
40
+ format.printf(
41
+ info => `[${dayjs().format('YYYY-MM-DD HH:mm:ss')}]${name ? `[${name}]` : ''}[${info.level}] ${info.message}`
42
+ )
43
+ )
44
+ });
45
+
46
+ // 使用winston的createLogger方法创建并返回一个Logger实例
47
+ return createLogger({
48
+ // 设置日志级别
49
+ level: logLevel,
50
+ // 配置日志传输(输出)的方式,包括控制台和文件
51
+ transports: [console, dailyRotateFile]
52
+ });
53
+ }
54
+ }
@@ -0,0 +1,359 @@
1
+ {
2
+ "url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/3213",
3
+ "id": 3165836439,
4
+ "node_id": "PR_kwDOLXouGc68stSX",
5
+ "html_url": "https://github.com/Anvil-Dev/AnvilCraft/pull/3213",
6
+ "diff_url": "https://github.com/Anvil-Dev/AnvilCraft/pull/3213.diff",
7
+ "patch_url": "https://github.com/Anvil-Dev/AnvilCraft/pull/3213.patch",
8
+ "issue_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues/3213",
9
+ "number": 3213,
10
+ "state": "open",
11
+ "locked": false,
12
+ "title": "add fluid tank assets",
13
+ "user": {
14
+ "login": "XeKr",
15
+ "id": 45423407,
16
+ "node_id": "MDQ6VXNlcjQ1NDIzNDA3",
17
+ "avatar_url": "https://avatars.githubusercontent.com/u/45423407?v=4",
18
+ "gravatar_id": "",
19
+ "url": "https://api.github.com/users/XeKr",
20
+ "html_url": "https://github.com/XeKr",
21
+ "followers_url": "https://api.github.com/users/XeKr/followers",
22
+ "following_url": "https://api.github.com/users/XeKr/following{/other_user}",
23
+ "gists_url": "https://api.github.com/users/XeKr/gists{/gist_id}",
24
+ "starred_url": "https://api.github.com/users/XeKr/starred{/owner}{/repo}",
25
+ "subscriptions_url": "https://api.github.com/users/XeKr/subscriptions",
26
+ "organizations_url": "https://api.github.com/users/XeKr/orgs",
27
+ "repos_url": "https://api.github.com/users/XeKr/repos",
28
+ "events_url": "https://api.github.com/users/XeKr/events{/privacy}",
29
+ "received_events_url": "https://api.github.com/users/XeKr/received_events",
30
+ "type": "User",
31
+ "user_view_type": "public",
32
+ "site_admin": false
33
+ },
34
+ "body": null,
35
+ "created_at": "2026-01-12T13:16:33Z",
36
+ "updated_at": "2026-01-12T13:16:33Z",
37
+ "closed_at": null,
38
+ "merged_at": null,
39
+ "merge_commit_sha": "dd15257734ff4c89e20d92ddba9ff69e03c901e2",
40
+ "assignee": null,
41
+ "assignees": [],
42
+ "requested_reviewers": [],
43
+ "requested_teams": [],
44
+ "labels": [],
45
+ "milestone": null,
46
+ "draft": false,
47
+ "commits_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/3213/commits",
48
+ "review_comments_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/3213/comments",
49
+ "review_comment_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/comments{/number}",
50
+ "comments_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues/3213/comments",
51
+ "statuses_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/statuses/8b70150723f609af7d9fd9def43001769012626e",
52
+ "head": {
53
+ "label": "XeKr:assets/1.21",
54
+ "ref": "assets/1.21",
55
+ "sha": "8b70150723f609af7d9fd9def43001769012626e",
56
+ "user": {
57
+ "login": "XeKr",
58
+ "id": 45423407,
59
+ "node_id": "MDQ6VXNlcjQ1NDIzNDA3",
60
+ "avatar_url": "https://avatars.githubusercontent.com/u/45423407?v=4",
61
+ "gravatar_id": "",
62
+ "url": "https://api.github.com/users/XeKr",
63
+ "html_url": "https://github.com/XeKr",
64
+ "followers_url": "https://api.github.com/users/XeKr/followers",
65
+ "following_url": "https://api.github.com/users/XeKr/following{/other_user}",
66
+ "gists_url": "https://api.github.com/users/XeKr/gists{/gist_id}",
67
+ "starred_url": "https://api.github.com/users/XeKr/starred{/owner}{/repo}",
68
+ "subscriptions_url": "https://api.github.com/users/XeKr/subscriptions",
69
+ "organizations_url": "https://api.github.com/users/XeKr/orgs",
70
+ "repos_url": "https://api.github.com/users/XeKr/repos",
71
+ "events_url": "https://api.github.com/users/XeKr/events{/privacy}",
72
+ "received_events_url": "https://api.github.com/users/XeKr/received_events",
73
+ "type": "User",
74
+ "user_view_type": "public",
75
+ "site_admin": false
76
+ },
77
+ "repo": {
78
+ "id": 788866142,
79
+ "node_id": "R_kgDOLwUkXg",
80
+ "name": "AnvilCraft",
81
+ "full_name": "XeKr/AnvilCraft",
82
+ "private": false,
83
+ "owner": {
84
+ "login": "XeKr",
85
+ "id": 45423407,
86
+ "node_id": "MDQ6VXNlcjQ1NDIzNDA3",
87
+ "avatar_url": "https://avatars.githubusercontent.com/u/45423407?v=4",
88
+ "gravatar_id": "",
89
+ "url": "https://api.github.com/users/XeKr",
90
+ "html_url": "https://github.com/XeKr",
91
+ "followers_url": "https://api.github.com/users/XeKr/followers",
92
+ "following_url": "https://api.github.com/users/XeKr/following{/other_user}",
93
+ "gists_url": "https://api.github.com/users/XeKr/gists{/gist_id}",
94
+ "starred_url": "https://api.github.com/users/XeKr/starred{/owner}{/repo}",
95
+ "subscriptions_url": "https://api.github.com/users/XeKr/subscriptions",
96
+ "organizations_url": "https://api.github.com/users/XeKr/orgs",
97
+ "repos_url": "https://api.github.com/users/XeKr/repos",
98
+ "events_url": "https://api.github.com/users/XeKr/events{/privacy}",
99
+ "received_events_url": "https://api.github.com/users/XeKr/received_events",
100
+ "type": "User",
101
+ "user_view_type": "public",
102
+ "site_admin": false
103
+ },
104
+ "html_url": "https://github.com/XeKr/AnvilCraft",
105
+ "description": null,
106
+ "fork": true,
107
+ "url": "https://api.github.com/repos/XeKr/AnvilCraft",
108
+ "forks_url": "https://api.github.com/repos/XeKr/AnvilCraft/forks",
109
+ "keys_url": "https://api.github.com/repos/XeKr/AnvilCraft/keys{/key_id}",
110
+ "collaborators_url": "https://api.github.com/repos/XeKr/AnvilCraft/collaborators{/collaborator}",
111
+ "teams_url": "https://api.github.com/repos/XeKr/AnvilCraft/teams",
112
+ "hooks_url": "https://api.github.com/repos/XeKr/AnvilCraft/hooks",
113
+ "issue_events_url": "https://api.github.com/repos/XeKr/AnvilCraft/issues/events{/number}",
114
+ "events_url": "https://api.github.com/repos/XeKr/AnvilCraft/events",
115
+ "assignees_url": "https://api.github.com/repos/XeKr/AnvilCraft/assignees{/user}",
116
+ "branches_url": "https://api.github.com/repos/XeKr/AnvilCraft/branches{/branch}",
117
+ "tags_url": "https://api.github.com/repos/XeKr/AnvilCraft/tags",
118
+ "blobs_url": "https://api.github.com/repos/XeKr/AnvilCraft/git/blobs{/sha}",
119
+ "git_tags_url": "https://api.github.com/repos/XeKr/AnvilCraft/git/tags{/sha}",
120
+ "git_refs_url": "https://api.github.com/repos/XeKr/AnvilCraft/git/refs{/sha}",
121
+ "trees_url": "https://api.github.com/repos/XeKr/AnvilCraft/git/trees{/sha}",
122
+ "statuses_url": "https://api.github.com/repos/XeKr/AnvilCraft/statuses/{sha}",
123
+ "languages_url": "https://api.github.com/repos/XeKr/AnvilCraft/languages",
124
+ "stargazers_url": "https://api.github.com/repos/XeKr/AnvilCraft/stargazers",
125
+ "contributors_url": "https://api.github.com/repos/XeKr/AnvilCraft/contributors",
126
+ "subscribers_url": "https://api.github.com/repos/XeKr/AnvilCraft/subscribers",
127
+ "subscription_url": "https://api.github.com/repos/XeKr/AnvilCraft/subscription",
128
+ "commits_url": "https://api.github.com/repos/XeKr/AnvilCraft/commits{/sha}",
129
+ "git_commits_url": "https://api.github.com/repos/XeKr/AnvilCraft/git/commits{/sha}",
130
+ "comments_url": "https://api.github.com/repos/XeKr/AnvilCraft/comments{/number}",
131
+ "issue_comment_url": "https://api.github.com/repos/XeKr/AnvilCraft/issues/comments{/number}",
132
+ "contents_url": "https://api.github.com/repos/XeKr/AnvilCraft/contents/{+path}",
133
+ "compare_url": "https://api.github.com/repos/XeKr/AnvilCraft/compare/{base}...{head}",
134
+ "merges_url": "https://api.github.com/repos/XeKr/AnvilCraft/merges",
135
+ "archive_url": "https://api.github.com/repos/XeKr/AnvilCraft/{archive_format}{/ref}",
136
+ "downloads_url": "https://api.github.com/repos/XeKr/AnvilCraft/downloads",
137
+ "issues_url": "https://api.github.com/repos/XeKr/AnvilCraft/issues{/number}",
138
+ "pulls_url": "https://api.github.com/repos/XeKr/AnvilCraft/pulls{/number}",
139
+ "milestones_url": "https://api.github.com/repos/XeKr/AnvilCraft/milestones{/number}",
140
+ "notifications_url": "https://api.github.com/repos/XeKr/AnvilCraft/notifications{?since,all,participating}",
141
+ "labels_url": "https://api.github.com/repos/XeKr/AnvilCraft/labels{/name}",
142
+ "releases_url": "https://api.github.com/repos/XeKr/AnvilCraft/releases{/id}",
143
+ "deployments_url": "https://api.github.com/repos/XeKr/AnvilCraft/deployments",
144
+ "created_at": "2024-04-19T08:36:20Z",
145
+ "updated_at": "2025-09-07T05:18:11Z",
146
+ "pushed_at": "2026-01-12T13:16:15Z",
147
+ "git_url": "git://github.com/XeKr/AnvilCraft.git",
148
+ "ssh_url": "git@github.com:XeKr/AnvilCraft.git",
149
+ "clone_url": "https://github.com/XeKr/AnvilCraft.git",
150
+ "svn_url": "https://github.com/XeKr/AnvilCraft",
151
+ "homepage": null,
152
+ "size": 26918,
153
+ "stargazers_count": 1,
154
+ "watchers_count": 1,
155
+ "language": "Java",
156
+ "has_issues": false,
157
+ "has_projects": true,
158
+ "has_downloads": true,
159
+ "has_wiki": true,
160
+ "has_pages": false,
161
+ "has_discussions": false,
162
+ "forks_count": 0,
163
+ "mirror_url": null,
164
+ "archived": false,
165
+ "disabled": false,
166
+ "open_issues_count": 0,
167
+ "license": {
168
+ "key": "other",
169
+ "name": "Other",
170
+ "spdx_id": "NOASSERTION",
171
+ "url": null,
172
+ "node_id": "MDc6TGljZW5zZTA="
173
+ },
174
+ "allow_forking": true,
175
+ "is_template": false,
176
+ "web_commit_signoff_required": false,
177
+ "topics": [],
178
+ "visibility": "public",
179
+ "forks": 0,
180
+ "open_issues": 0,
181
+ "watchers": 1,
182
+ "default_branch": "releases/1.20.1"
183
+ }
184
+ },
185
+ "base": {
186
+ "label": "Anvil-Dev:dev/1.21/1.6",
187
+ "ref": "dev/1.21/1.6",
188
+ "sha": "b55ae6de7bbe37885045e00ac73a57f1eb0037b5",
189
+ "user": {
190
+ "login": "Anvil-Dev",
191
+ "id": 167496292,
192
+ "node_id": "O_kgDOCfvKZA",
193
+ "avatar_url": "https://avatars.githubusercontent.com/u/167496292?v=4",
194
+ "gravatar_id": "",
195
+ "url": "https://api.github.com/users/Anvil-Dev",
196
+ "html_url": "https://github.com/Anvil-Dev",
197
+ "followers_url": "https://api.github.com/users/Anvil-Dev/followers",
198
+ "following_url": "https://api.github.com/users/Anvil-Dev/following{/other_user}",
199
+ "gists_url": "https://api.github.com/users/Anvil-Dev/gists{/gist_id}",
200
+ "starred_url": "https://api.github.com/users/Anvil-Dev/starred{/owner}{/repo}",
201
+ "subscriptions_url": "https://api.github.com/users/Anvil-Dev/subscriptions",
202
+ "organizations_url": "https://api.github.com/users/Anvil-Dev/orgs",
203
+ "repos_url": "https://api.github.com/users/Anvil-Dev/repos",
204
+ "events_url": "https://api.github.com/users/Anvil-Dev/events{/privacy}",
205
+ "received_events_url": "https://api.github.com/users/Anvil-Dev/received_events",
206
+ "type": "Organization",
207
+ "user_view_type": "public",
208
+ "site_admin": false
209
+ },
210
+ "repo": {
211
+ "id": 762981913,
212
+ "node_id": "R_kgDOLXouGQ",
213
+ "name": "AnvilCraft",
214
+ "full_name": "Anvil-Dev/AnvilCraft",
215
+ "private": false,
216
+ "owner": {
217
+ "login": "Anvil-Dev",
218
+ "id": 167496292,
219
+ "node_id": "O_kgDOCfvKZA",
220
+ "avatar_url": "https://avatars.githubusercontent.com/u/167496292?v=4",
221
+ "gravatar_id": "",
222
+ "url": "https://api.github.com/users/Anvil-Dev",
223
+ "html_url": "https://github.com/Anvil-Dev",
224
+ "followers_url": "https://api.github.com/users/Anvil-Dev/followers",
225
+ "following_url": "https://api.github.com/users/Anvil-Dev/following{/other_user}",
226
+ "gists_url": "https://api.github.com/users/Anvil-Dev/gists{/gist_id}",
227
+ "starred_url": "https://api.github.com/users/Anvil-Dev/starred{/owner}{/repo}",
228
+ "subscriptions_url": "https://api.github.com/users/Anvil-Dev/subscriptions",
229
+ "organizations_url": "https://api.github.com/users/Anvil-Dev/orgs",
230
+ "repos_url": "https://api.github.com/users/Anvil-Dev/repos",
231
+ "events_url": "https://api.github.com/users/Anvil-Dev/events{/privacy}",
232
+ "received_events_url": "https://api.github.com/users/Anvil-Dev/received_events",
233
+ "type": "Organization",
234
+ "user_view_type": "public",
235
+ "site_admin": false
236
+ },
237
+ "html_url": "https://github.com/Anvil-Dev/AnvilCraft",
238
+ "description": "The minecraft mod is an anvil-centric vanilla survival expansion. 这个Minecraft模组是一个以铁砧为中心的原版生存扩展。",
239
+ "fork": false,
240
+ "url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft",
241
+ "forks_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/forks",
242
+ "keys_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/keys{/key_id}",
243
+ "collaborators_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/collaborators{/collaborator}",
244
+ "teams_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/teams",
245
+ "hooks_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/hooks",
246
+ "issue_events_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues/events{/number}",
247
+ "events_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/events",
248
+ "assignees_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/assignees{/user}",
249
+ "branches_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/branches{/branch}",
250
+ "tags_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/tags",
251
+ "blobs_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/git/blobs{/sha}",
252
+ "git_tags_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/git/tags{/sha}",
253
+ "git_refs_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/git/refs{/sha}",
254
+ "trees_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/git/trees{/sha}",
255
+ "statuses_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/statuses/{sha}",
256
+ "languages_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/languages",
257
+ "stargazers_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/stargazers",
258
+ "contributors_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/contributors",
259
+ "subscribers_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/subscribers",
260
+ "subscription_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/subscription",
261
+ "commits_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/commits{/sha}",
262
+ "git_commits_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/git/commits{/sha}",
263
+ "comments_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/comments{/number}",
264
+ "issue_comment_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues/comments{/number}",
265
+ "contents_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/contents/{+path}",
266
+ "compare_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/compare/{base}...{head}",
267
+ "merges_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/merges",
268
+ "archive_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/{archive_format}{/ref}",
269
+ "downloads_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/downloads",
270
+ "issues_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues{/number}",
271
+ "pulls_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls{/number}",
272
+ "milestones_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/milestones{/number}",
273
+ "notifications_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/notifications{?since,all,participating}",
274
+ "labels_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/labels{/name}",
275
+ "releases_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/releases{/id}",
276
+ "deployments_url": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/deployments",
277
+ "created_at": "2024-02-25T08:32:12Z",
278
+ "updated_at": "2026-01-12T12:28:39Z",
279
+ "pushed_at": "2026-01-12T12:28:34Z",
280
+ "git_url": "git://github.com/Anvil-Dev/AnvilCraft.git",
281
+ "ssh_url": "git@github.com:Anvil-Dev/AnvilCraft.git",
282
+ "clone_url": "https://github.com/Anvil-Dev/AnvilCraft.git",
283
+ "svn_url": "https://github.com/Anvil-Dev/AnvilCraft",
284
+ "homepage": "",
285
+ "size": 27231,
286
+ "stargazers_count": 233,
287
+ "watchers_count": 233,
288
+ "language": "Java",
289
+ "has_issues": true,
290
+ "has_projects": true,
291
+ "has_downloads": true,
292
+ "has_wiki": true,
293
+ "has_pages": true,
294
+ "has_discussions": true,
295
+ "forks_count": 65,
296
+ "mirror_url": null,
297
+ "archived": false,
298
+ "disabled": false,
299
+ "open_issues_count": 127,
300
+ "license": {
301
+ "key": "other",
302
+ "name": "Other",
303
+ "spdx_id": "NOASSERTION",
304
+ "url": null,
305
+ "node_id": "MDc6TGljZW5zZTA="
306
+ },
307
+ "allow_forking": true,
308
+ "is_template": false,
309
+ "web_commit_signoff_required": false,
310
+ "topics": [],
311
+ "visibility": "public",
312
+ "forks": 65,
313
+ "open_issues": 127,
314
+ "watchers": 233,
315
+ "default_branch": "dev/1.21/1.6"
316
+ }
317
+ },
318
+ "_links": {
319
+ "self": {
320
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/3213"
321
+ },
322
+ "html": {
323
+ "href": "https://github.com/Anvil-Dev/AnvilCraft/pull/3213"
324
+ },
325
+ "issue": {
326
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues/3213"
327
+ },
328
+ "comments": {
329
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/issues/3213/comments"
330
+ },
331
+ "review_comments": {
332
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/3213/comments"
333
+ },
334
+ "review_comment": {
335
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/comments{/number}"
336
+ },
337
+ "commits": {
338
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/pulls/3213/commits"
339
+ },
340
+ "statuses": {
341
+ "href": "https://api.github.com/repos/Anvil-Dev/AnvilCraft/statuses/8b70150723f609af7d9fd9def43001769012626e"
342
+ }
343
+ },
344
+ "author_association": "CONTRIBUTOR",
345
+ "auto_merge": null,
346
+ "active_lock_reason": null,
347
+ "merged": false,
348
+ "mergeable": true,
349
+ "rebaseable": true,
350
+ "mergeable_state": "blocked",
351
+ "merged_by": null,
352
+ "comments": 0,
353
+ "review_comments": 0,
354
+ "maintainer_can_modify": true,
355
+ "commits": 1,
356
+ "additions": 273,
357
+ "deletions": 4,
358
+ "changed_files": 7
359
+ }