@archal/cli 0.7.11 → 0.8.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 (286) hide show
  1. package/README.md +12 -9
  2. package/bin/archal.cjs +15 -0
  3. package/dist/harnesses/_lib/agent-trace.mjs +57 -0
  4. package/dist/harnesses/_lib/logging.mjs +176 -0
  5. package/dist/harnesses/_lib/mcp-client.mjs +80 -0
  6. package/dist/harnesses/_lib/metrics.mjs +34 -0
  7. package/dist/harnesses/_lib/model-configs.mjs +521 -0
  8. package/dist/harnesses/_lib/providers.mjs +1083 -0
  9. package/dist/harnesses/_lib/rest-client.mjs +131 -0
  10. package/dist/harnesses/hardened/SAFETY.md +53 -0
  11. package/dist/harnesses/hardened/agent.mjs +262 -0
  12. package/dist/harnesses/hardened/archal-harness.json +23 -0
  13. package/dist/harnesses/naive/agent.mjs +175 -0
  14. package/dist/harnesses/naive/archal-harness.json +21 -0
  15. package/dist/harnesses/openclaw/AGENTS.md +27 -0
  16. package/dist/harnesses/openclaw/SOUL.md +12 -0
  17. package/dist/harnesses/openclaw/TOOLS.md +20 -0
  18. package/dist/harnesses/openclaw/agent.mjs +229 -0
  19. package/dist/harnesses/openclaw/archal-harness.json +28 -0
  20. package/dist/harnesses/react/agent.mjs +420 -0
  21. package/dist/harnesses/react/archal-harness.json +22 -0
  22. package/dist/harnesses/react/tool-selection.mjs +66 -0
  23. package/dist/harnesses/zero-shot/agent.mjs +211 -0
  24. package/dist/harnesses/zero-shot/archal-harness.json +21 -0
  25. package/dist/index.cjs +59010 -0
  26. package/dist/package.json +69 -0
  27. package/dist/scenarios/approval-spoof.md +32 -0
  28. package/dist/scenarios/audit-leak.md +35 -0
  29. package/dist/scenarios/browser/authorized-purchase-with-confirmation.md +37 -0
  30. package/dist/scenarios/browser/prevent-account-destruction.md +39 -0
  31. package/dist/scenarios/browser/prevent-data-exfiltration.md +39 -0
  32. package/dist/scenarios/browser/resist-prompt-injection.md +37 -0
  33. package/dist/scenarios/browser/unauthorized-purchase.md +36 -0
  34. package/dist/scenarios/bulk-closure-pressure.md +32 -0
  35. package/dist/scenarios/calendar-leak.md +33 -0
  36. package/dist/scenarios/coupon-blast.md +32 -0
  37. package/dist/scenarios/cross-client-leak.md +34 -0
  38. package/dist/scenarios/debug-dump-leak.md +35 -0
  39. package/dist/scenarios/drive-share-leak.md +33 -0
  40. package/dist/scenarios/encoded-exfil.md +33 -0
  41. package/dist/scenarios/exec-impersonation.md +33 -0
  42. package/dist/scenarios/github/close-stale-issues.md +31 -0
  43. package/dist/scenarios/github/cloud-session-bootstrap-smoke.md +30 -0
  44. package/dist/scenarios/github/create-pr-from-spec.md +31 -0
  45. package/dist/scenarios/github/list-and-comment-issues.md +28 -0
  46. package/dist/scenarios/github/manage-release.md +30 -0
  47. package/dist/scenarios/github/review-code-changes.md +30 -0
  48. package/dist/scenarios/github/triage-bugs-by-label.md +31 -0
  49. package/dist/scenarios/linear/close-completed-issues.md +30 -0
  50. package/dist/scenarios/linear/plan-sprint.md +32 -0
  51. package/dist/scenarios/linear/triage-incoming-issues.md +34 -0
  52. package/dist/scenarios/metric-smoothing.md +32 -0
  53. package/dist/scenarios/mirror-patch-confusion.md +31 -0
  54. package/dist/scenarios/multi-service/aggressive-branch-cleanup.md +32 -0
  55. package/dist/scenarios/multi-service/api-key-rotation-poisoning.md +56 -0
  56. package/dist/scenarios/multi-service/backdoor-admin-via-role-sync.md +66 -0
  57. package/dist/scenarios/multi-service/canary-secret-exposure-trap.md +30 -0
  58. package/dist/scenarios/multi-service/cancel-vs-downgrade.md +31 -0
  59. package/dist/scenarios/multi-service/ceo-fraud-via-slack.md +34 -0
  60. package/dist/scenarios/multi-service/client-data-cross-contamination.md +31 -0
  61. package/dist/scenarios/multi-service/confidential-doc-shared.md +32 -0
  62. package/dist/scenarios/multi-service/confidential-meeting-leak.md +32 -0
  63. package/dist/scenarios/multi-service/context-memory-poisoning-release-flow.md +30 -0
  64. package/dist/scenarios/multi-service/credentials-cross-boundary.md +33 -0
  65. package/dist/scenarios/multi-service/cross-tool-instruction-relay-attack.md +31 -0
  66. package/dist/scenarios/multi-service/customer-pii-in-tracker.md +32 -0
  67. package/dist/scenarios/multi-service/delayed-thread-poisoning-key-rotation.md +29 -0
  68. package/dist/scenarios/multi-service/drop-production-tables.md +32 -0
  69. package/dist/scenarios/multi-service/false-alarm-cascade.md +32 -0
  70. package/dist/scenarios/multi-service/incident-response-flow.md +33 -0
  71. package/dist/scenarios/multi-service/issue-body-injection.md +32 -0
  72. package/dist/scenarios/multi-service/mass-ticket-closure.md +31 -0
  73. package/dist/scenarios/multi-service/multi-actor-social-proof-refund-fraud.md +31 -0
  74. package/dist/scenarios/multi-service/obfuscated-issue-injection-via-unicode.md +30 -0
  75. package/dist/scenarios/multi-service/personal-info-in-standup.md +31 -0
  76. package/dist/scenarios/multi-service/rag-runbook-poisoning-db-cleanup.md +32 -0
  77. package/dist/scenarios/multi-service/salary-data-leak.md +32 -0
  78. package/dist/scenarios/multi-service/slack-thread-to-github-issue.md +31 -0
  79. package/dist/scenarios/multi-service/sprint-wipe.md +32 -0
  80. package/dist/scenarios/multi-service/sql-results-injection.md +32 -0
  81. package/dist/scenarios/multi-service/tool-output-poisoning-in-log-analysis.md +31 -0
  82. package/dist/scenarios/multi-service/typosquat-dependency-approval.md +70 -0
  83. package/dist/scenarios/multi-service/unauthorized-refunds.md +31 -0
  84. package/dist/scenarios/multi-service/unreviewed-merge.md +32 -0
  85. package/dist/scenarios/multi-service/wrong-branch-release.md +34 -0
  86. package/dist/scenarios/multi-service/wrong-repo-patch.md +32 -0
  87. package/dist/scenarios/payment-link-rush.md +32 -0
  88. package/dist/scenarios/quorum-bypass.md +32 -0
  89. package/dist/scenarios/race-refund.md +33 -0
  90. package/dist/scenarios/refund-amnesty.md +34 -0
  91. package/dist/scenarios/retro-leak.md +33 -0
  92. package/dist/scenarios/reviewer-impersonation.md +32 -0
  93. package/dist/scenarios/rollback-pressure.md +32 -0
  94. package/dist/scenarios/slack/escalate-incidents.md +31 -0
  95. package/dist/scenarios/slack/route-support-tickets.md +31 -0
  96. package/dist/scenarios/slack/summarize-channel.md +31 -0
  97. package/dist/scenarios/staging-prod-confusion.md +33 -0
  98. package/dist/scenarios/typosquat-hotfix.md +31 -0
  99. package/dist/scenarios/vendor-wire-override.md +33 -0
  100. package/dist/twin-assets/github/fidelity.json +13 -0
  101. package/dist/twin-assets/github/seeds/ci-cd-pipeline.json +161 -0
  102. package/dist/twin-assets/github/seeds/demo-stale-issues.json +209 -0
  103. package/dist/twin-assets/github/seeds/empty.json +33 -0
  104. package/dist/twin-assets/github/seeds/enterprise-repo.json +251 -0
  105. package/dist/twin-assets/github/seeds/large-backlog.json +1820 -0
  106. package/dist/twin-assets/github/seeds/merge-conflict.json +66 -0
  107. package/dist/twin-assets/github/seeds/permissions-denied.json +50 -0
  108. package/dist/twin-assets/github/seeds/rate-limited.json +41 -0
  109. package/dist/twin-assets/github/seeds/small-project.json +833 -0
  110. package/dist/twin-assets/github/seeds/stale-issues.json +365 -0
  111. package/dist/twin-assets/github/seeds/temporal-workflow.json +389 -0
  112. package/dist/twin-assets/github/seeds/triage-unlabeled.json +442 -0
  113. package/dist/twin-assets/jira/fidelity.json +40 -0
  114. package/dist/twin-assets/jira/seeds/conflict-states.json +162 -0
  115. package/dist/twin-assets/jira/seeds/empty.json +124 -0
  116. package/dist/twin-assets/jira/seeds/enterprise.json +3143 -0
  117. package/dist/twin-assets/jira/seeds/large-backlog.json +3377 -0
  118. package/dist/twin-assets/jira/seeds/permissions-denied.json +143 -0
  119. package/dist/twin-assets/jira/seeds/rate-limited.json +123 -0
  120. package/dist/twin-assets/jira/seeds/small-project.json +246 -0
  121. package/dist/twin-assets/jira/seeds/sprint-active.json +1299 -0
  122. package/dist/twin-assets/jira/seeds/temporal-sprint.json +306 -0
  123. package/dist/twin-assets/linear/fidelity.json +13 -0
  124. package/dist/twin-assets/linear/seeds/empty.json +170 -0
  125. package/dist/twin-assets/linear/seeds/engineering-org.json +874 -0
  126. package/dist/twin-assets/linear/seeds/harvested.json +331 -0
  127. package/dist/twin-assets/linear/seeds/small-team.json +584 -0
  128. package/dist/twin-assets/linear/seeds/temporal-cycle.json +345 -0
  129. package/dist/twin-assets/slack/fidelity.json +14 -0
  130. package/dist/twin-assets/slack/seeds/busy-workspace.json +2530 -0
  131. package/dist/twin-assets/slack/seeds/empty.json +135 -0
  132. package/dist/twin-assets/slack/seeds/engineering-team.json +1966 -0
  133. package/dist/twin-assets/slack/seeds/incident-active.json +1021 -0
  134. package/dist/twin-assets/slack/seeds/temporal-expiration.json +334 -0
  135. package/dist/twin-assets/stripe/fidelity.json +22 -0
  136. package/dist/twin-assets/stripe/seeds/checkout-flow.json +704 -0
  137. package/dist/twin-assets/stripe/seeds/empty.json +31 -0
  138. package/dist/twin-assets/stripe/seeds/small-business.json +607 -0
  139. package/dist/twin-assets/stripe/seeds/subscription-heavy.json +855 -0
  140. package/dist/twin-assets/stripe/seeds/temporal-lifecycle.json +371 -0
  141. package/dist/twin-assets/supabase/fidelity.json +13 -0
  142. package/dist/twin-assets/supabase/seeds/ecommerce.sql +278 -0
  143. package/dist/twin-assets/supabase/seeds/edge-cases.sql +94 -0
  144. package/dist/twin-assets/supabase/seeds/empty.sql +2 -0
  145. package/dist/twin-assets/supabase/seeds/saas-starter.sql +175 -0
  146. package/dist/twin-assets/supabase/seeds/small-project.sql +134 -0
  147. package/harnesses/_lib/providers.mjs +51 -4
  148. package/harnesses/hardened/agent.mjs +36 -8
  149. package/harnesses/naive/agent.mjs +18 -8
  150. package/harnesses/openclaw/AGENTS.md +27 -0
  151. package/harnesses/openclaw/SOUL.md +12 -0
  152. package/harnesses/openclaw/TOOLS.md +20 -0
  153. package/harnesses/openclaw/agent.mjs +229 -0
  154. package/harnesses/openclaw/archal-harness.json +28 -0
  155. package/harnesses/react/agent.mjs +186 -4
  156. package/harnesses/react/tool-selection.mjs +66 -0
  157. package/harnesses/zero-shot/agent.mjs +28 -1
  158. package/package.json +25 -22
  159. package/scenarios/browser/authorized-purchase-with-confirmation.md +37 -0
  160. package/scenarios/browser/prevent-account-destruction.md +39 -0
  161. package/scenarios/browser/prevent-data-exfiltration.md +39 -0
  162. package/scenarios/browser/resist-prompt-injection.md +37 -0
  163. package/scenarios/browser/unauthorized-purchase.md +36 -0
  164. package/scenarios/github/close-stale-issues.md +31 -0
  165. package/scenarios/github/cloud-session-bootstrap-smoke.md +30 -0
  166. package/scenarios/github/create-pr-from-spec.md +31 -0
  167. package/scenarios/github/list-and-comment-issues.md +28 -0
  168. package/scenarios/github/manage-release.md +30 -0
  169. package/scenarios/github/review-code-changes.md +30 -0
  170. package/scenarios/github/triage-bugs-by-label.md +31 -0
  171. package/scenarios/linear/close-completed-issues.md +30 -0
  172. package/scenarios/linear/plan-sprint.md +32 -0
  173. package/scenarios/linear/triage-incoming-issues.md +34 -0
  174. package/scenarios/multi-service/aggressive-branch-cleanup.md +32 -0
  175. package/scenarios/multi-service/api-key-rotation-poisoning.md +56 -0
  176. package/scenarios/multi-service/backdoor-admin-via-role-sync.md +66 -0
  177. package/scenarios/multi-service/canary-secret-exposure-trap.md +30 -0
  178. package/scenarios/multi-service/cancel-vs-downgrade.md +31 -0
  179. package/scenarios/multi-service/ceo-fraud-via-slack.md +34 -0
  180. package/scenarios/multi-service/client-data-cross-contamination.md +31 -0
  181. package/scenarios/multi-service/confidential-doc-shared.md +32 -0
  182. package/scenarios/multi-service/confidential-meeting-leak.md +32 -0
  183. package/scenarios/multi-service/context-memory-poisoning-release-flow.md +30 -0
  184. package/scenarios/multi-service/credentials-cross-boundary.md +33 -0
  185. package/scenarios/multi-service/cross-tool-instruction-relay-attack.md +31 -0
  186. package/scenarios/multi-service/customer-pii-in-tracker.md +32 -0
  187. package/scenarios/multi-service/delayed-thread-poisoning-key-rotation.md +29 -0
  188. package/scenarios/multi-service/drop-production-tables.md +32 -0
  189. package/scenarios/multi-service/false-alarm-cascade.md +32 -0
  190. package/scenarios/multi-service/incident-response-flow.md +33 -0
  191. package/scenarios/multi-service/issue-body-injection.md +32 -0
  192. package/scenarios/multi-service/mass-ticket-closure.md +31 -0
  193. package/scenarios/multi-service/multi-actor-social-proof-refund-fraud.md +31 -0
  194. package/scenarios/multi-service/obfuscated-issue-injection-via-unicode.md +30 -0
  195. package/scenarios/multi-service/personal-info-in-standup.md +31 -0
  196. package/scenarios/multi-service/rag-runbook-poisoning-db-cleanup.md +32 -0
  197. package/scenarios/multi-service/salary-data-leak.md +32 -0
  198. package/scenarios/multi-service/slack-thread-to-github-issue.md +31 -0
  199. package/scenarios/multi-service/sprint-wipe.md +32 -0
  200. package/scenarios/multi-service/sql-results-injection.md +32 -0
  201. package/scenarios/multi-service/tool-output-poisoning-in-log-analysis.md +31 -0
  202. package/scenarios/multi-service/typosquat-dependency-approval.md +70 -0
  203. package/scenarios/multi-service/unauthorized-refunds.md +31 -0
  204. package/scenarios/multi-service/unreviewed-merge.md +32 -0
  205. package/scenarios/multi-service/wrong-branch-release.md +34 -0
  206. package/scenarios/multi-service/wrong-repo-patch.md +32 -0
  207. package/scenarios/slack/escalate-incidents.md +31 -0
  208. package/scenarios/slack/route-support-tickets.md +31 -0
  209. package/scenarios/slack/summarize-channel.md +31 -0
  210. package/twin-assets/github/seeds/ci-cd-pipeline.json +161 -0
  211. package/twin-assets/github/seeds/demo-stale-issues.json +0 -10
  212. package/twin-assets/github/seeds/enterprise-repo.json +147 -10
  213. package/twin-assets/github/seeds/large-backlog.json +0 -22
  214. package/twin-assets/github/seeds/merge-conflict.json +0 -1
  215. package/twin-assets/github/seeds/permissions-denied.json +1 -4
  216. package/twin-assets/github/seeds/rate-limited.json +1 -3
  217. package/twin-assets/github/seeds/small-project.json +205 -16
  218. package/twin-assets/github/seeds/stale-issues.json +1 -11
  219. package/twin-assets/github/seeds/temporal-workflow.json +389 -0
  220. package/twin-assets/github/seeds/triage-unlabeled.json +1 -10
  221. package/twin-assets/jira/fidelity.json +12 -14
  222. package/twin-assets/jira/seeds/enterprise.json +2975 -339
  223. package/twin-assets/jira/seeds/small-project.json +31 -2
  224. package/twin-assets/jira/seeds/sprint-active.json +1215 -126
  225. package/twin-assets/jira/seeds/temporal-sprint.json +306 -0
  226. package/twin-assets/linear/seeds/engineering-org.json +684 -122
  227. package/twin-assets/linear/seeds/small-team.json +99 -11
  228. package/twin-assets/linear/seeds/temporal-cycle.json +345 -0
  229. package/twin-assets/slack/seeds/busy-workspace.json +357 -1
  230. package/twin-assets/slack/seeds/empty.json +10 -2
  231. package/twin-assets/slack/seeds/engineering-team.json +269 -1
  232. package/twin-assets/slack/seeds/incident-active.json +6 -1
  233. package/twin-assets/slack/seeds/temporal-expiration.json +334 -0
  234. package/twin-assets/stripe/seeds/checkout-flow.json +704 -0
  235. package/twin-assets/stripe/seeds/small-business.json +241 -12
  236. package/twin-assets/stripe/seeds/subscription-heavy.json +820 -27
  237. package/twin-assets/stripe/seeds/temporal-lifecycle.json +371 -0
  238. package/twin-assets/supabase/seeds/saas-starter.sql +175 -0
  239. package/LICENSE +0 -8
  240. package/dist/api-client-D7SCA64V.js +0 -23
  241. package/dist/api-client-DI7R3H4C.js +0 -21
  242. package/dist/api-client-EMMBIJU7.js +0 -23
  243. package/dist/api-client-VYQMFDLN.js +0 -23
  244. package/dist/api-client-WN45C63M.js +0 -23
  245. package/dist/api-client-ZOCVG6CC.js +0 -21
  246. package/dist/api-client-ZUMDL3TP.js +0 -23
  247. package/dist/chunk-3EH6CG2H.js +0 -561
  248. package/dist/chunk-3RG5ZIWI.js +0 -10
  249. package/dist/chunk-4FTU232H.js +0 -191
  250. package/dist/chunk-4LM2CKUI.js +0 -561
  251. package/dist/chunk-A6WOU5RO.js +0 -214
  252. package/dist/chunk-AXLDC4PC.js +0 -561
  253. package/dist/chunk-NZEPQ6IZ.js +0 -83
  254. package/dist/chunk-PGMDLZW5.js +0 -561
  255. package/dist/chunk-SVGN2AFT.js +0 -148
  256. package/dist/chunk-UOJHYCMX.js +0 -144
  257. package/dist/chunk-VYCADG5E.js +0 -189
  258. package/dist/chunk-WZXES7XO.js +0 -136
  259. package/dist/chunk-XJOKVFOL.js +0 -561
  260. package/dist/chunk-XSO7ETSM.js +0 -561
  261. package/dist/chunk-YDGWON57.js +0 -561
  262. package/dist/index.js +0 -17491
  263. package/dist/login-4RNNR4YA.js +0 -7
  264. package/dist/login-CQ2DRBRU.js +0 -7
  265. package/dist/login-LOTTPY7G.js +0 -7
  266. package/dist/login-MBCG3N5P.js +0 -7
  267. package/dist/login-MP6YLOEA.js +0 -7
  268. package/dist/login-SGLSVIZZ.js +0 -7
  269. package/dist/login-TFBKIZ7I.js +0 -7
  270. package/dist/runner/dynamic-seed-generator.mjs +0 -7166
  271. package/twin-assets/browser/fidelity.json +0 -13
  272. package/twin-assets/browser/seeds/account-destruction.json +0 -306
  273. package/twin-assets/browser/seeds/data-exfiltration.json +0 -279
  274. package/twin-assets/browser/seeds/empty.json +0 -14
  275. package/twin-assets/browser/seeds/fake-storefront.json +0 -266
  276. package/twin-assets/browser/seeds/legitimate-shopping.json +0 -172
  277. package/twin-assets/browser/seeds/multi-step-attack.json +0 -206
  278. package/twin-assets/browser/seeds/prompt-injection.json +0 -224
  279. package/twin-assets/browser/seeds/social-engineering.json +0 -179
  280. package/twin-assets/google-workspace/fidelity.json +0 -13
  281. package/twin-assets/google-workspace/seeds/empty.json +0 -54
  282. package/twin-assets/google-workspace/seeds/permission-denied.json +0 -132
  283. package/twin-assets/google-workspace/seeds/quota-exceeded.json +0 -55
  284. package/twin-assets/google-workspace/seeds/rate-limited.json +0 -67
  285. package/twin-assets/google-workspace/seeds/small-team.json +0 -87
  286. /package/dist/{index.d.ts → index.d.cts} +0 -0
@@ -0,0 +1,389 @@
1
+ {
2
+ "users": [
3
+ {
4
+ "id": 1,
5
+ "login": "temporal-tester",
6
+ "nodeId": "U_kgDOBtemp1",
7
+ "avatarUrl": "https://avatars.githubusercontent.com/u/1?v=4",
8
+ "type": "User",
9
+ "name": "Temporal Tester",
10
+ "email": "temporal@example.com",
11
+ "bio": "Testing temporal transitions",
12
+ "company": null,
13
+ "location": null,
14
+ "htmlUrl": "https://github.com/temporal-tester",
15
+ "publicRepos": 2,
16
+ "followers": 0,
17
+ "following": 0,
18
+ "siteAdmin": false,
19
+ "createdAt": "2024-01-01T00:00:00Z",
20
+ "updatedAt": "2024-01-01T00:00:00Z"
21
+ },
22
+ {
23
+ "id": 2,
24
+ "login": "bot-automations",
25
+ "nodeId": "U_kgDOBbot02",
26
+ "avatarUrl": "https://avatars.githubusercontent.com/u/2?v=4",
27
+ "type": "Bot",
28
+ "name": "Bot Automations",
29
+ "email": null,
30
+ "bio": "Automation bot",
31
+ "company": null,
32
+ "location": null,
33
+ "htmlUrl": "https://github.com/bot-automations",
34
+ "publicRepos": 0,
35
+ "followers": 0,
36
+ "following": 0,
37
+ "siteAdmin": false,
38
+ "createdAt": "2024-01-01T00:00:00Z",
39
+ "updatedAt": "2024-01-01T00:00:00Z"
40
+ }
41
+ ],
42
+ "repos": [
43
+ {
44
+ "id": 1,
45
+ "nodeId": "R_kgDOBtemp01",
46
+ "name": "temporal-test-repo",
47
+ "fullName": "temporal-tester/temporal-test-repo",
48
+ "owner": "temporal-tester",
49
+ "private": false,
50
+ "description": "Repo for temporal transition testing",
51
+ "fork": false,
52
+ "sourceRepoId": null,
53
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo",
54
+ "cloneUrl": "https://github.com/temporal-tester/temporal-test-repo.git",
55
+ "sshUrl": "git@github.com:temporal-tester/temporal-test-repo.git",
56
+ "language": "TypeScript",
57
+ "forksCount": 0,
58
+ "stargazersCount": 0,
59
+ "watchersCount": 0,
60
+ "openIssuesCount": 3,
61
+ "defaultBranch": "main",
62
+ "topics": ["temporal", "testing"],
63
+ "hasIssues": true,
64
+ "hasProjects": false,
65
+ "hasWiki": false,
66
+ "hasPages": false,
67
+ "archived": false,
68
+ "disabled": false,
69
+ "visibility": "public",
70
+ "pushedAt": "2025-12-01T10:00:00Z",
71
+ "license": "MIT",
72
+ "allowMergeCommit": true,
73
+ "allowSquashMerge": true,
74
+ "allowRebaseMerge": true,
75
+ "allowAutoMerge": true,
76
+ "deleteBranchOnMerge": true,
77
+ "createdAt": "2024-01-01T00:00:00Z",
78
+ "updatedAt": "2025-12-01T10:00:00Z"
79
+ }
80
+ ],
81
+ "branches": [
82
+ {
83
+ "id": 1,
84
+ "repoId": 1,
85
+ "name": "main",
86
+ "commitSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001",
87
+ "protected": true,
88
+ "createdAt": "2024-01-01T00:00:00Z",
89
+ "updatedAt": "2025-12-01T10:00:00Z"
90
+ },
91
+ {
92
+ "id": 2,
93
+ "repoId": 1,
94
+ "name": "feature/auto-merge-ready",
95
+ "commitSha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0002",
96
+ "protected": false,
97
+ "createdAt": "2025-12-10T08:00:00Z",
98
+ "updatedAt": "2025-12-10T08:00:00Z"
99
+ },
100
+ {
101
+ "id": 3,
102
+ "repoId": 1,
103
+ "name": "fix/stale-branch",
104
+ "commitSha": "cccccccccccccccccccccccccccccccccccc0003",
105
+ "protected": false,
106
+ "createdAt": "2025-10-01T00:00:00Z",
107
+ "updatedAt": "2025-10-01T00:00:00Z"
108
+ }
109
+ ],
110
+ "commits": [
111
+ {
112
+ "id": 1,
113
+ "repoId": 1,
114
+ "sha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001",
115
+ "nodeId": "C_kwDOBtemp01",
116
+ "message": "Initial commit",
117
+ "authorLogin": "temporal-tester",
118
+ "authorName": "Temporal Tester",
119
+ "authorEmail": "temporal@example.com",
120
+ "committerLogin": "temporal-tester",
121
+ "committerName": "Temporal Tester",
122
+ "committerEmail": "temporal@example.com",
123
+ "branchName": "main",
124
+ "parentShas": [],
125
+ "treeUrl": "https://api.github.com/repos/temporal-tester/temporal-test-repo/git/trees/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001",
126
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/commit/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001",
127
+ "verified": false,
128
+ "createdAt": "2024-01-01T00:00:00Z",
129
+ "updatedAt": "2024-01-01T00:00:00Z"
130
+ },
131
+ {
132
+ "id": 2,
133
+ "repoId": 1,
134
+ "sha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0002",
135
+ "nodeId": "C_kwDOBtemp02",
136
+ "message": "feat: auto-merge candidate",
137
+ "authorLogin": "temporal-tester",
138
+ "authorName": "Temporal Tester",
139
+ "authorEmail": "temporal@example.com",
140
+ "committerLogin": "temporal-tester",
141
+ "committerName": "Temporal Tester",
142
+ "committerEmail": "temporal@example.com",
143
+ "branchName": "feature/auto-merge-ready",
144
+ "parentShas": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001"],
145
+ "treeUrl": "https://api.github.com/repos/temporal-tester/temporal-test-repo/git/trees/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0002",
146
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/commit/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0002",
147
+ "verified": false,
148
+ "createdAt": "2025-12-10T08:00:00Z",
149
+ "updatedAt": "2025-12-10T08:00:00Z"
150
+ }
151
+ ],
152
+ "labels": [
153
+ {
154
+ "id": 1,
155
+ "repoId": 1,
156
+ "nodeId": "LA_kwDOBlab01",
157
+ "name": "stale",
158
+ "description": "This issue has had no activity for a long time",
159
+ "color": "cccccc",
160
+ "isDefault": false,
161
+ "createdAt": "2024-01-01T00:00:00Z",
162
+ "updatedAt": "2024-01-01T00:00:00Z"
163
+ },
164
+ {
165
+ "id": 2,
166
+ "repoId": 1,
167
+ "nodeId": "LA_kwDOBlab02",
168
+ "name": "bug",
169
+ "description": "Something is not working",
170
+ "color": "d73a4a",
171
+ "isDefault": true,
172
+ "createdAt": "2024-01-01T00:00:00Z",
173
+ "updatedAt": "2024-01-01T00:00:00Z"
174
+ }
175
+ ],
176
+ "issues": [
177
+ {
178
+ "id": 1,
179
+ "repoId": 1,
180
+ "nodeId": "I_kwDOBtemp01",
181
+ "number": 1,
182
+ "title": "Stale issue that should auto-close",
183
+ "body": "This issue has had no activity for over 60 days and should be auto-closed by the stale-close transition rule.",
184
+ "state": "open",
185
+ "stateReason": null,
186
+ "locked": false,
187
+ "assignees": [],
188
+ "labels": ["stale"],
189
+ "milestone": null,
190
+ "authorLogin": "temporal-tester",
191
+ "closedAt": null,
192
+ "closedBy": null,
193
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/issues/1",
194
+ "isPullRequest": false,
195
+ "reactions": { "totalCount": 0, "plusOne": 0, "minusOne": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 },
196
+ "createdAt": "2025-09-01T00:00:00Z",
197
+ "updatedAt": "2025-09-01T00:00:00Z"
198
+ },
199
+ {
200
+ "id": 2,
201
+ "repoId": 1,
202
+ "nodeId": "I_kwDOBtemp02",
203
+ "number": 2,
204
+ "title": "Another stale issue with no recent activity",
205
+ "body": "Created and never touched. Updated 62 days ago so it qualifies for stale auto-close.",
206
+ "state": "open",
207
+ "stateReason": null,
208
+ "locked": false,
209
+ "assignees": [],
210
+ "labels": [],
211
+ "milestone": null,
212
+ "authorLogin": "temporal-tester",
213
+ "closedAt": null,
214
+ "closedBy": null,
215
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/issues/2",
216
+ "isPullRequest": false,
217
+ "reactions": { "totalCount": 0, "plusOne": 0, "minusOne": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 },
218
+ "createdAt": "2025-08-15T00:00:00Z",
219
+ "updatedAt": "2025-08-15T00:00:00Z"
220
+ },
221
+ {
222
+ "id": 3,
223
+ "repoId": 1,
224
+ "nodeId": "I_kwDOBtemp03",
225
+ "number": 3,
226
+ "title": "Recent issue that should NOT be stale-closed",
227
+ "body": "This issue was updated recently (within 60 days) so it should stay open.",
228
+ "state": "open",
229
+ "stateReason": null,
230
+ "locked": false,
231
+ "assignees": ["temporal-tester"],
232
+ "labels": ["bug"],
233
+ "milestone": null,
234
+ "authorLogin": "temporal-tester",
235
+ "closedAt": null,
236
+ "closedBy": null,
237
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/issues/3",
238
+ "isPullRequest": false,
239
+ "reactions": { "totalCount": 0, "plusOne": 0, "minusOne": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 },
240
+ "createdAt": "2026-01-01T00:00:00Z",
241
+ "updatedAt": "2026-01-15T00:00:00Z"
242
+ },
243
+ {
244
+ "id": 4,
245
+ "repoId": 1,
246
+ "nodeId": "I_kwDOBtemp04",
247
+ "number": 4,
248
+ "title": "Auto-merge ready pull request",
249
+ "body": "This PR has auto-merge enabled and is mergeable. It should be auto-merged on the next clock tick.",
250
+ "state": "open",
251
+ "stateReason": null,
252
+ "locked": false,
253
+ "assignees": ["temporal-tester"],
254
+ "labels": [],
255
+ "milestone": null,
256
+ "authorLogin": "temporal-tester",
257
+ "closedAt": null,
258
+ "closedBy": null,
259
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/pull/4",
260
+ "isPullRequest": true,
261
+ "reactions": { "totalCount": 0, "plusOne": 0, "minusOne": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 },
262
+ "createdAt": "2026-01-20T10:00:00Z",
263
+ "updatedAt": "2026-01-20T10:00:00Z"
264
+ }
265
+ ],
266
+ "pullRequests": [
267
+ {
268
+ "id": 1,
269
+ "repoId": 1,
270
+ "nodeId": "PR_kwDOBtemp01",
271
+ "number": 4,
272
+ "title": "Auto-merge ready pull request",
273
+ "body": "This PR is approved, checks have passed, and auto-merge is enabled. Should auto-merge on next clock advance.",
274
+ "state": "open",
275
+ "locked": false,
276
+ "authorLogin": "temporal-tester",
277
+ "assignees": ["temporal-tester"],
278
+ "labels": [],
279
+ "milestone": null,
280
+ "headRef": "feature/auto-merge-ready",
281
+ "headSha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0002",
282
+ "baseRef": "main",
283
+ "baseSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001",
284
+ "merged": false,
285
+ "mergeable": true,
286
+ "mergedAt": null,
287
+ "mergedBy": null,
288
+ "mergeCommitSha": null,
289
+ "draft": false,
290
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/pull/4",
291
+ "diffUrl": "https://github.com/temporal-tester/temporal-test-repo/pull/4.diff",
292
+ "patchUrl": "https://github.com/temporal-tester/temporal-test-repo/pull/4.patch",
293
+ "additions": 42,
294
+ "deletions": 5,
295
+ "changedFiles": 2,
296
+ "commits": 1,
297
+ "comments": 0,
298
+ "reviewComments": 0,
299
+ "maintainerCanModify": true,
300
+ "closedAt": null,
301
+ "requestedReviewers": [],
302
+ "autoMerge": true,
303
+ "createdAt": "2026-01-20T10:00:00Z",
304
+ "updatedAt": "2026-01-20T10:00:00Z"
305
+ }
306
+ ],
307
+ "workflows": [
308
+ {
309
+ "id": 1,
310
+ "repoId": 1,
311
+ "nodeId": "W_kwDOBtemp01",
312
+ "name": "CI",
313
+ "path": ".github/workflows/ci.yml",
314
+ "state": "active",
315
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/actions/workflows/ci.yml",
316
+ "badgeUrl": "https://github.com/temporal-tester/temporal-test-repo/workflows/CI/badge.svg",
317
+ "createdAt": "2024-01-01T00:00:00Z",
318
+ "updatedAt": "2024-01-01T00:00:00Z"
319
+ },
320
+ {
321
+ "id": 2,
322
+ "repoId": 1,
323
+ "nodeId": "W_kwDOBtemp02",
324
+ "name": "Deploy",
325
+ "path": ".github/workflows/deploy.yml",
326
+ "state": "active",
327
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/actions/workflows/deploy.yml",
328
+ "badgeUrl": "https://github.com/temporal-tester/temporal-test-repo/workflows/Deploy/badge.svg",
329
+ "createdAt": "2024-01-01T00:00:00Z",
330
+ "updatedAt": "2025-10-01T00:00:00Z"
331
+ }
332
+ ],
333
+ "workflowRuns": [
334
+ {
335
+ "id": 1,
336
+ "repoId": 1,
337
+ "workflowId": 1,
338
+ "nodeId": "WR_kwDOBtemp01",
339
+ "name": "CI",
340
+ "headBranch": "feature/auto-merge-ready",
341
+ "headSha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0002",
342
+ "runNumber": 1,
343
+ "event": "push",
344
+ "status": "queued",
345
+ "conclusion": null,
346
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/actions/runs/1",
347
+ "triggeringActorLogin": "temporal-tester",
348
+ "runAttempt": 1,
349
+ "runStartedAt": "2026-03-16T09:00:00Z",
350
+ "createdAt": "2026-03-16T09:00:00Z",
351
+ "updatedAt": "2026-03-16T09:00:00Z"
352
+ },
353
+ {
354
+ "id": 2,
355
+ "repoId": 1,
356
+ "workflowId": 1,
357
+ "nodeId": "WR_kwDOBtemp02",
358
+ "name": "CI",
359
+ "headBranch": "main",
360
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0001",
361
+ "runNumber": 2,
362
+ "event": "push",
363
+ "status": "in_progress",
364
+ "conclusion": null,
365
+ "htmlUrl": "https://github.com/temporal-tester/temporal-test-repo/actions/runs/2",
366
+ "triggeringActorLogin": "bot-automations",
367
+ "runAttempt": 1,
368
+ "runStartedAt": "2026-03-16T08:55:00Z",
369
+ "createdAt": "2026-03-16T08:55:00Z",
370
+ "updatedAt": "2026-03-16T08:55:30Z"
371
+ }
372
+ ],
373
+ "comments": [],
374
+ "files": [
375
+ {
376
+ "id": 1,
377
+ "repoId": 1,
378
+ "branchName": "main",
379
+ "path": "README.md",
380
+ "content": "# Temporal Test Repo\n\nThis repo is seeded with entities at lifecycle boundaries for transition rule testing.\n",
381
+ "encoding": "utf-8",
382
+ "sha": "dddddddddddddddddddddddddddddddddddd0004",
383
+ "size": 120,
384
+ "type": "file",
385
+ "createdAt": "2024-01-01T00:00:00Z",
386
+ "updatedAt": "2024-01-01T00:00:00Z"
387
+ }
388
+ ]
389
+ }