@kyun.si/agent2cursor 0.0.0-stage → 0.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 (113) hide show
  1. package/CONTRIBUTING.md +89 -0
  2. package/LICENSE +21 -0
  3. package/README.md +202 -2
  4. package/README.zh-CN.md +203 -0
  5. package/THIRD_PARTY_NOTICES.md +11 -0
  6. package/demos/full-send/LICENSE-tstack +21 -0
  7. package/demos/full-send/README.md +47 -0
  8. package/demos/full-send/TSTACK-PROVENANCE.json +37 -0
  9. package/demos/full-send/bot/agent.ts +9 -0
  10. package/demos/full-send/bot/channels/github.ts +16 -0
  11. package/demos/full-send/bot/instructions.md +11 -0
  12. package/demos/full-send/bot/lib/merge-policy.ts +9 -0
  13. package/demos/full-send/bot/lib/settings.ts +2 -0
  14. package/demos/full-send/bot/skills/babysit-pr/SKILL.md +13 -0
  15. package/demos/full-send/bot/skills/babysit-pr/scripts/pr-wait +556 -0
  16. package/demos/full-send/bot/skills/file-pr/SKILL.md +11 -0
  17. package/demos/full-send/bot/skills/full-send/SKILL.md +19 -0
  18. package/demos/full-send/bot/skills/leaving-pr-comments/SKILL.md +14 -0
  19. package/demos/full-send/bot/skills/sol-loop/SKILL.md +11 -0
  20. package/demos/full-send/bot/subagents/reviewer/agent.ts +2 -0
  21. package/demos/full-send/bot/subagents/reviewer/instructions.md +3 -0
  22. package/demos/full-send/bot/tools/merge_pr.ts +23 -0
  23. package/demos/full-send/bot/tools/pr_wait.ts +24 -0
  24. package/demos/full-send/bot/tools/pr_wait_script.ts +9 -0
  25. package/demos/full-send/evals/evals.config.ts +2 -0
  26. package/demos/full-send/evals/full-send.eval.ts +5 -0
  27. package/demos/full-send/evals/skills.eval.ts +8 -0
  28. package/demos/full-send/package.json +18 -0
  29. package/demos/pr-review/LICENSE-tstack +21 -0
  30. package/demos/pr-review/README.md +44 -0
  31. package/demos/pr-review/TSTACK-PROVENANCE.json +37 -0
  32. package/demos/pr-review/bot/agent.ts +9 -0
  33. package/demos/pr-review/bot/channels/github.ts +22 -0
  34. package/demos/pr-review/bot/instructions.md +11 -0
  35. package/demos/pr-review/bot/lib/pr-snapshot.ts +92 -0
  36. package/demos/pr-review/bot/lib/settings.ts +2 -0
  37. package/demos/pr-review/bot/skills/council/SKILL.md +25 -0
  38. package/demos/pr-review/bot/skills/leaving-pr-comments/SKILL.md +14 -0
  39. package/demos/pr-review/bot/subagents/reviewer-a/agent.ts +2 -0
  40. package/demos/pr-review/bot/subagents/reviewer-a/instructions.md +3 -0
  41. package/demos/pr-review/bot/subagents/reviewer-b/agent.ts +2 -0
  42. package/demos/pr-review/bot/subagents/reviewer-b/instructions.md +3 -0
  43. package/demos/pr-review/bot/subagents/reviewer-c/agent.ts +2 -0
  44. package/demos/pr-review/bot/subagents/reviewer-c/instructions.md +3 -0
  45. package/demos/pr-review/bot/tools/pr_wait.ts +24 -0
  46. package/demos/pr-review/evals/evals.config.ts +2 -0
  47. package/demos/pr-review/evals/pr-review.eval.ts +13 -0
  48. package/demos/pr-review/evals/skills.eval.ts +5 -0
  49. package/demos/pr-review/package.json +18 -0
  50. package/dist/cli.d.ts +2 -0
  51. package/dist/cli.js +142 -0
  52. package/dist/emit/common.d.ts +4 -0
  53. package/dist/emit/common.js +15 -0
  54. package/dist/emit/evals.d.ts +4 -0
  55. package/dist/emit/evals.js +33 -0
  56. package/dist/emit/project.d.ts +2 -0
  57. package/dist/emit/project.js +165 -0
  58. package/dist/emit/report.d.ts +2 -0
  59. package/dist/emit/report.js +74 -0
  60. package/dist/emit/subagent.d.ts +2 -0
  61. package/dist/emit/subagent.js +15 -0
  62. package/dist/emit/tool-stub.d.ts +3 -0
  63. package/dist/emit/tool-stub.js +29 -0
  64. package/dist/emit/tstack-license.d.ts +8 -0
  65. package/dist/emit/tstack-license.js +39 -0
  66. package/dist/ir.d.ts +66 -0
  67. package/dist/ir.js +1 -0
  68. package/dist/mapping/codex-agent.d.ts +2 -0
  69. package/dist/mapping/codex-agent.js +39 -0
  70. package/dist/mapping/codex-skill.d.ts +5 -0
  71. package/dist/mapping/codex-skill.js +32 -0
  72. package/dist/mapping/foreign-tools.d.ts +2 -0
  73. package/dist/mapping/foreign-tools.js +33 -0
  74. package/dist/mapping/model.d.ts +5 -0
  75. package/dist/mapping/model.js +14 -0
  76. package/dist/mapping/names.d.ts +2 -0
  77. package/dist/mapping/names.js +9 -0
  78. package/dist/mapping/permissions.d.ts +2 -0
  79. package/dist/mapping/permissions.js +21 -0
  80. package/dist/mapping/skill.d.ts +3 -0
  81. package/dist/mapping/skill.js +29 -0
  82. package/dist/mapping/subagent.d.ts +3 -0
  83. package/dist/mapping/subagent.js +60 -0
  84. package/dist/mapping/tools-names.d.ts +6 -0
  85. package/dist/mapping/tools-names.js +18 -0
  86. package/dist/scan/codex.d.ts +1 -0
  87. package/dist/scan/codex.js +19 -0
  88. package/dist/scan/frontmatter.d.ts +11 -0
  89. package/dist/scan/frontmatter.js +62 -0
  90. package/dist/scan/index.d.ts +2 -0
  91. package/dist/scan/index.js +192 -0
  92. package/dist/scan/safety.d.ts +11 -0
  93. package/dist/scan/safety.js +105 -0
  94. package/dist/scan/tstack.d.ts +9 -0
  95. package/dist/scan/tstack.js +42 -0
  96. package/dist/validate.d.ts +5 -0
  97. package/dist/validate.js +135 -0
  98. package/dist/write.d.ts +19 -0
  99. package/dist/write.js +134 -0
  100. package/docs/acceptance.md +86 -0
  101. package/docs/assets/agent2cursor-demo-poster.png +0 -0
  102. package/docs/assets/agent2cursor-demo.gif +0 -0
  103. package/docs/evidence/codex-adapter.json +133 -0
  104. package/docs/evidence/evaluation-fixes.json +184 -0
  105. package/docs/evidence/independent-evaluation.json +61 -0
  106. package/docs/evidence/online-2026-10-27.json +112 -0
  107. package/docs/official-examples.provenance.json +26 -0
  108. package/docs/upstream-verification.md +67 -0
  109. package/evaluation/20261027-2216//345/244/215/346/265/213/347/273/223/350/256/272.md +48 -0
  110. package/evaluation/README.md +16 -0
  111. package/package.json +30 -4
  112. package/templates/en/instructions.md +9 -0
  113. package/templates/zh/instructions.md +9 -0
@@ -0,0 +1,133 @@
1
+ {
2
+ "generatedAt": "2026-10-28T03:42:08.045Z",
3
+ "scope": "Codex standalone agent and skill metadata input adapter",
4
+ "sdkVersion": "0.3.0",
5
+ "nodeVersion": "26.11.0",
6
+ "unit": {
7
+ "command": "npm run check",
8
+ "exitCode": 0,
9
+ "tests": 73,
10
+ "passed": 73,
11
+ "failed": 0
12
+ },
13
+ "sdk": {
14
+ "command": "npm run test:sdk",
15
+ "exitCode": 0,
16
+ "localEvidence": ".validation/acceptance-JjGsx6/evidence.json",
17
+ "generatedTypesChecked": true,
18
+ "checks": [
19
+ {
20
+ "name": "claude",
21
+ "counts": {
22
+ "agents": 4,
23
+ "skills": 0,
24
+ "dependencies": 0,
25
+ "scripts": 0
26
+ },
27
+ "validationOk": true,
28
+ "evalsListed": 4,
29
+ "dependencyLifecycle": {
30
+ "before": "dependencies-missing",
31
+ "after": "passed"
32
+ }
33
+ },
34
+ {
35
+ "name": "codex",
36
+ "counts": {
37
+ "agents": 2,
38
+ "skills": 1,
39
+ "dependencies": 0,
40
+ "scripts": 0
41
+ },
42
+ "validationOk": true,
43
+ "evalsListed": 3,
44
+ "dependencyLifecycle": {
45
+ "before": "dependencies-missing",
46
+ "after": "passed"
47
+ }
48
+ },
49
+ {
50
+ "name": "tstack",
51
+ "counts": {
52
+ "agents": 0,
53
+ "skills": 9,
54
+ "dependencies": 0,
55
+ "scripts": 1
56
+ },
57
+ "validationOk": true,
58
+ "evalsListed": 9,
59
+ "dependencyLifecycle": {
60
+ "before": "dependencies-missing",
61
+ "after": "passed"
62
+ }
63
+ },
64
+ {
65
+ "name": "full-send",
66
+ "validationOk": true,
67
+ "evalsListed": 6,
68
+ "dependencyLifecycle": {
69
+ "before": "dependencies-missing",
70
+ "after": "passed"
71
+ }
72
+ },
73
+ {
74
+ "name": "pr-review",
75
+ "validationOk": true,
76
+ "evalsListed": 3,
77
+ "dependencyLifecycle": {
78
+ "before": "dependencies-missing",
79
+ "after": "passed"
80
+ }
81
+ }
82
+ ]
83
+ },
84
+ "liveModelRun": "not-run-for-codex-adapter",
85
+ "deployment": "not-run",
86
+ "npmPublication": "not-run",
87
+ "sources": [
88
+ "https://learn.chatgpt.com/docs/agent-configuration/subagents",
89
+ "https://learn.chatgpt.com/docs/build-skills"
90
+ ],
91
+ "sourceSha256": {
92
+ "fixtures/codex/README.md": "c90ef61abb3c7ad93dee068cbbf558a8350d21aefa0502f07c2fdd2c2beb9095",
93
+ "fixtures/codex/project/.agents/skills/codex-check/SKILL.md": "533b033e9f9b9677af627213dd8c9e2b686a0e129c450263259f45008a36c5be",
94
+ "fixtures/codex/project/.agents/skills/codex-check/agents/openai.yaml": "847b903fb935e4f6c91991927ed3c8ed3acab02b003d205ae0c9561aac45a1b0",
95
+ "fixtures/codex/project/.codex/agents/nested/explore.toml": "2efc2f2ef5e94e763d2fddfcbaeb1fe88195fc1bb2c49e04891fe79372ba2481",
96
+ "fixtures/codex/project/.codex/agents/review.toml": "95d65549d95e1c6a256c97dc595f787ed9e031aec6212d97de816d5d7f35a96b",
97
+ "package-lock.json": "db32be7d884ccc36b5fb949ddd12e2a4b85e0579723305151b074a839e5c3155",
98
+ "package.json": "a3fb8f0b41d892a2d813fa872adfcc01c4465a4a2843e32a907b80a16d7e6ae5",
99
+ "scripts/verify-sdk.mjs": "cd4e8a11b02aee1f93851b0d20b6af6237a841ae6f7d55696a5401091bc9893c",
100
+ "src/cli.ts": "fd68f302879123127e5eebc616e05fc81f73981befffa9b39641c759fce6d8ff",
101
+ "src/emit/common.ts": "65ea38c9d1bde53a00322cb8c126ab068ab8b6ecf88c87fe285789f40403fbd8",
102
+ "src/emit/evals.ts": "f816d7a4eb4fc0df96b07387b4620ffcfe74228fd247ef01ed1acf193cb98be8",
103
+ "src/emit/project.ts": "2b0c5e69e680279035f7bcf04a2a7335369a3e4b7524c0355da66dce6be41ad9",
104
+ "src/emit/report.ts": "d2badc5b8d805df6516a98366ed711eb6c5963ba616a820f418a5b9a797584ca",
105
+ "src/emit/subagent.ts": "a720288988791494223b5c925db431276df32a32c2ab23dab0b6cde4b2f0d411",
106
+ "src/emit/tool-stub.ts": "658af680b0e8cc9d980997946ab9ed23f4900c2e7a3fdc715842e06c52557a38",
107
+ "src/emit/tstack-license.ts": "ee7deab226cfdd389f6b0baf979844467200b70330c5ac5a56371359d41385c3",
108
+ "src/ir.ts": "0a838d013c57f43f5cd3ca7554b10e535ea9e2aa41c13884e0c5e9693c0e449a",
109
+ "src/mapping/codex-agent.ts": "70b3c25e603521f185a826b376f688171eb263c17bf947dc7e423e80340f777f",
110
+ "src/mapping/codex-skill.ts": "d2e6802165bc080cabedef67dedba5ba285efe18b25ea0dd9769470ec4965934",
111
+ "src/mapping/foreign-tools.ts": "be04b4d4d09da74d95c4694732b117a0379e9fb419f0ef313c68511629c6b2d8",
112
+ "src/mapping/model.ts": "e1c2cbe312a6384067173c104353dc9fa11c7b7c0e8c9ab4236063bbdffbcf6a",
113
+ "src/mapping/names.ts": "2ee8277f7d551b8cd0c346774306f7ef1a43e432e03d6584d0f94c2bd4d5b54a",
114
+ "src/mapping/permissions.ts": "6de7236c1d761b8ca3e16302c39c560683f02ca695a9ebf16c38bd21bf68c59b",
115
+ "src/mapping/skill.ts": "fd26ef6d3c63036f11613db85fee5df6c89a22d2c243d7f5f2b8330dab699421",
116
+ "src/mapping/subagent.ts": "e7298d5e45942214a41a7dfaeda0c076ab6868fcd6c16c2cbe3556d4172e9326",
117
+ "src/mapping/tools-names.ts": "8482df39ee4d07481eba34ac808a26d40c7d57d2e60f2d890a656a40cbf791dd",
118
+ "src/scan/codex.ts": "df882c99de1d22907d3037a04703947af53437919e995d79584ee031084b237f",
119
+ "src/scan/frontmatter.ts": "a321ffa8c62ec203c971b3d71b521ef802ea027e80d821d91355c69fc195e2cd",
120
+ "src/scan/index.ts": "15469af702c50314c8b0e33bafdf0778ac1bf32f279abb623733a843dd4ec82c",
121
+ "src/scan/safety.ts": "66cf03302cb08803f2cfb5bf6c2e33056e6c456564c96e2fcafe8b6646de4b41",
122
+ "src/scan/tstack.ts": "bdb106747bd94ecc50016d11b92c898058c7ba492343a381aa0366754446b65f",
123
+ "src/validate.ts": "31ca5cfd6268a1fd50a2ce62ea10273b3be5768c2cfebe7bd94d0a8e1dad51ee",
124
+ "src/write.ts": "5d538ac5c88fa978f9029d0cc6f02c0c71888ced4e9e9bc2ec67ad6a3140273d",
125
+ "test/cli.test.ts": "eab80d9797831742b556d56e846fe9d6ad811f16263e09af0bbf2ea12fc9c626",
126
+ "test/codex.test.ts": "7f43bf85b4df0a8eb806d4e82581903008d63dcad49c8eae82a9dfd2518ed328",
127
+ "test/demo-snapshot.test.ts": "03e9a6ce0029fe26589911d036854ba017c095dd347e8767a193c58e28732925",
128
+ "test/demo.test.ts": "907446961216e53876b6773eb23b752ed726df8768ea5f7a026bb504c8be2c5a",
129
+ "test/emit.test.ts": "63541ca2a4f57df3fa227be5593c852ad30c9f5bdf17b17c0780b7b39c465b3a",
130
+ "test/scan.test.ts": "f852edbe996b2843351702bafae98abf32fb4f70c7044b26feffe6a7f7a8f132",
131
+ "test/write-validate.test.ts": "205df4d5ae74b2620dd37dcc63ef5225db7ffb2b2d1884fa5a8c4299f1aa6049"
132
+ }
133
+ }
@@ -0,0 +1,184 @@
1
+ {
2
+ "verifiedAt": "2026-10-27T13:09:33.255513+00:00",
3
+ "baselineCommit": "e63b66232ab92569466e90f6a8165066cca2e6ad",
4
+ "sdkVersion": "0.3.0",
5
+ "unitTests": {
6
+ "passed": 58,
7
+ "failed": 0
8
+ },
9
+ "focusedCases": [
10
+ {
11
+ "case": "N-SK-05",
12
+ "exitCode": 0,
13
+ "projectWritten": true,
14
+ "validation": "dependencies-missing",
15
+ "reportedToolNames": [],
16
+ "zodReportedByConverter": true,
17
+ "sdkAfterInstall": {
18
+ "exitCode": 0,
19
+ "ok": true,
20
+ "diagnosticCount": 0
21
+ }
22
+ },
23
+ {
24
+ "case": "N-MX-02",
25
+ "exitCode": 0,
26
+ "projectWritten": true,
27
+ "validation": "dependencies-missing",
28
+ "reportedToolNames": [],
29
+ "bodyExactlyEqual": false,
30
+ "bodyStartsWithOriginal": true,
31
+ "appendixCharacters": 141,
32
+ "bodyReport": [
33
+ {
34
+ "status": "degraded",
35
+ "message": "保留原文,正文末尾追加共享 skill 预加载提示(`<!-- cc-to-cursor-agent migration hint -->`);输出正文并非逐字不变。提示不实现自动预加载。"
36
+ }
37
+ ]
38
+ },
39
+ {
40
+ "case": "N-AG-05",
41
+ "exitCode": 0,
42
+ "projectWritten": true,
43
+ "validation": "dependencies-missing",
44
+ "reportedToolNames": [
45
+ "WebFetch"
46
+ ],
47
+ "bodyPreservedExactly": true
48
+ },
49
+ {
50
+ "case": "B-12",
51
+ "exitCode": 0,
52
+ "projectWritten": true,
53
+ "validation": "dependencies-missing",
54
+ "reportedToolNames": [
55
+ "WebFetch",
56
+ "AskUserQuestion",
57
+ "delegate_task"
58
+ ],
59
+ "zodReportedByConverter": true,
60
+ "bodyPreservedExactly": true,
61
+ "sdkAfterInstall": {
62
+ "exitCode": 0,
63
+ "ok": true,
64
+ "diagnosticCount": 0
65
+ }
66
+ },
67
+ {
68
+ "case": "B-07",
69
+ "exitCode": 0,
70
+ "projectWritten": true,
71
+ "validation": "dependencies-missing",
72
+ "reportedToolNames": [],
73
+ "bodyExactlyEqual": false,
74
+ "bodyStartsWithOriginal": true,
75
+ "appendixCharacters": 152,
76
+ "bodyReport": [
77
+ {
78
+ "status": "degraded",
79
+ "message": "保留原文,正文末尾追加共享 skill 预加载提示(`<!-- cc-to-cursor-agent migration hint -->`);输出正文并非逐字不变。提示不实现自动预加载。"
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ "case": "N-AG-04",
85
+ "exitCode": 0,
86
+ "projectWritten": true,
87
+ "validation": "dependencies-missing",
88
+ "reportedToolNames": [],
89
+ "restrictionFieldsInEffectiveConfig": false,
90
+ "reportHasProminentPermissionWarning": true,
91
+ "cliExitCode": 0,
92
+ "cliExplicitPermissionWarning": true
93
+ },
94
+ {
95
+ "case": "B-11",
96
+ "exitCode": 1,
97
+ "projectWritten": false,
98
+ "validation": null,
99
+ "outputAbsent": true,
100
+ "sensitiveInputRejected": true
101
+ }
102
+ ],
103
+ "sourceScriptSentinelPresent": false,
104
+ "sdkAcceptance": {
105
+ "generatedOutsideCheckout": true,
106
+ "invalidConfigurationRejected": true,
107
+ "projects": [
108
+ {
109
+ "name": "claude",
110
+ "conversionExitCode": 0,
111
+ "beforeInstall": "dependencies-missing",
112
+ "missingDependencies": [
113
+ "@grok/agent-sdk",
114
+ "zod"
115
+ ],
116
+ "doctorBeforeInstallExitCode": 1,
117
+ "afterInstall": "passed",
118
+ "validationPassed": true,
119
+ "strictTypecheckPassed": true,
120
+ "evalCasesDiscovered": 4
121
+ },
122
+ {
123
+ "name": "tstack",
124
+ "conversionExitCode": 0,
125
+ "beforeInstall": "dependencies-missing",
126
+ "missingDependencies": [
127
+ "@grok/agent-sdk",
128
+ "zod"
129
+ ],
130
+ "doctorBeforeInstallExitCode": 1,
131
+ "afterInstall": "passed",
132
+ "validationPassed": true,
133
+ "strictTypecheckPassed": true,
134
+ "evalCasesDiscovered": 9
135
+ },
136
+ {
137
+ "name": "full-send",
138
+ "conversionExitCode": 0,
139
+ "beforeInstall": "dependencies-missing",
140
+ "missingDependencies": [
141
+ "@grok/agent-sdk",
142
+ "zod"
143
+ ],
144
+ "doctorBeforeInstallExitCode": 1,
145
+ "afterInstall": "passed",
146
+ "validationPassed": true,
147
+ "strictTypecheckPassed": true,
148
+ "evalCasesDiscovered": 6
149
+ },
150
+ {
151
+ "name": "pr-review",
152
+ "conversionExitCode": 0,
153
+ "beforeInstall": "dependencies-missing",
154
+ "missingDependencies": [
155
+ "@grok/agent-sdk",
156
+ "zod"
157
+ ],
158
+ "doctorBeforeInstallExitCode": 1,
159
+ "afterInstall": "passed",
160
+ "validationPassed": true,
161
+ "strictTypecheckPassed": true,
162
+ "evalCasesDiscovered": 3
163
+ }
164
+ ]
165
+ },
166
+ "sourceSha256": {
167
+ "src/validate.ts": "31ca5cfd6268a1fd50a2ce62ea10273b3be5768c2cfebe7bd94d0a8e1dad51ee",
168
+ "src/cli.ts": "08d427e213dcbb1152d2dbad0aa808bf01f69fd8fd2345e516ad7fa48d78001f",
169
+ "src/ir.ts": "0ea8bd1001e39bc3edbfe75ee378e0eaeb9513a805604e6757e48240ccaceeb4",
170
+ "src/emit/project.ts": "f3c6829bddf7a84dbffbf06b0be981960358f5c56c26d36f45c0d3be65569b06",
171
+ "src/emit/report.ts": "fa7e1916ae08d43fe064b4acd76cfee1f79a4a41d7bb10d0e9b1b1fe28184936",
172
+ "src/mapping/foreign-tools.ts": "f994a502f3a25b815af1701352e134c21eb757e3cff0775ad5a0196ee6d568d4",
173
+ "src/mapping/permissions.ts": "15b5aad7dfa7bcaec9d7dd96bc09bcd4f55954f24a5e0509068099b8ab88b528",
174
+ "scripts/verify-sdk.mjs": "744d6746aaad6674a9bd0314e4700ac24e308d5c858fb5cc8cd3a6d810ce96f6",
175
+ "test/cli.test.ts": "0f6569874c5b7cebdb3543d2d6e36b80480aa7bb8b34634e9293b1193ca9b148",
176
+ "test/emit.test.ts": "25521a443884f3f777f9f5a6d0d1070fc337165ddc0465fe25256db2201d41f8",
177
+ "test/write-validate.test.ts": "205df4d5ae74b2620dd37dcc63ef5225db7ffb2b2d1884fa5a8c4299f1aa6049"
178
+ },
179
+ "boundaries": {
180
+ "liveModelRun": "not-run",
181
+ "deployment": "not-run",
182
+ "npmPublication": "not-run"
183
+ }
184
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "recordedAt": "2026-10-28",
3
+ "source": "Existing independent evaluation from 2026-10-27; not rerun during repository cleanup.",
4
+ "report": "evaluation/20261027-2216/复测结论.md",
5
+ "baselineCommit": "d5a9da3283d8746c87a9df0eafd0dd52d2fe901c",
6
+ "revisedGeneratorSha256": {
7
+ "src/emit/evals.ts": "f816d7a4eb4fc0df96b07387b4620ffcfe74228fd247ef01ed1acf193cb98be8",
8
+ "src/emit/report.ts": "d2badc5b8d805df6516a98366ed711eb6c5963ba616a820f418a5b9a797584ca",
9
+ "test/emit.test.ts": "63541ca2a4f57df3fa227be5593c852ad30c9f5bdf17b17c0780b7b39c465b3a"
10
+ },
11
+ "normalInputs": {
12
+ "total": 24,
13
+ "conversionPassed": 24,
14
+ "postInstallValidationPassed": 24
15
+ },
16
+ "boundaryInputs": {
17
+ "total": 12,
18
+ "expectedRejections": 6,
19
+ "observedRejections": 6,
20
+ "correction": "B-08 initially used the wrong canary path; its corrected run rejected the input without writing a project."
21
+ },
22
+ "routingEvals": {
23
+ "original": {
24
+ "projects": 30,
25
+ "passed": 35,
26
+ "failed": 6
27
+ },
28
+ "revised": {
29
+ "projects": 30,
30
+ "passed": 41,
31
+ "failed": 0
32
+ },
33
+ "revision": "Use a minimal example matching the source instructions and a 240000 ms suite timeout."
34
+ },
35
+ "liveTasks": {
36
+ "scenarios": 3,
37
+ "repeatsPerScenarioPerMethod": 3,
38
+ "converterPassed": 9,
39
+ "baselinePassed": 9,
40
+ "totalRuns": 18,
41
+ "interpretation": "Matched direct-copy/plugin baselines on this dataset; does not establish a general quality improvement."
42
+ },
43
+ "permissionProbe": {
44
+ "runs": 1,
45
+ "sourceRestrictionPreventedShell": false
46
+ },
47
+ "scriptStub": {
48
+ "exitCode": 78,
49
+ "disabled": true,
50
+ "sourceScriptExecuted": false
51
+ },
52
+ "hosting": {
53
+ "deployed": false,
54
+ "reason": "No default team configured."
55
+ },
56
+ "limitations": [
57
+ "Routing assertions do not establish task quality or safety.",
58
+ "Source subagent tool restrictions are not enforced by the target SDK.",
59
+ "Raw runs and generated projects are retained locally and excluded from Git."
60
+ ]
61
+ }
@@ -0,0 +1,112 @@
1
+ {
2
+ "verifiedAt": "2026-10-27T09:00:37.587Z",
3
+ "sdk": "@grok/agent-sdk@0.3.0",
4
+ "repository": "https://github.com/mreasonyang/cc2agent",
5
+ "visibility": "private",
6
+ "smoke": {
7
+ "ok": true,
8
+ "passed": 1,
9
+ "failed": 0,
10
+ "scored": 0,
11
+ "skipped": 0,
12
+ "assertions": 2,
13
+ "allAssertionsPassed": true
14
+ },
15
+ "council": {
16
+ "ok": true,
17
+ "passed": 1,
18
+ "failed": 0,
19
+ "scored": 0,
20
+ "skipped": 0,
21
+ "assertions": 9,
22
+ "allAssertionsPassed": true,
23
+ "providers": "same-model inheritance; three perspectives"
24
+ },
25
+ "fullSendLocal": {
26
+ "ok": true,
27
+ "turns": 1,
28
+ "turnsFailed": 0,
29
+ "toolCallCount": 1,
30
+ "loadedFullSend": true,
31
+ "calledMerge": false,
32
+ "writeOrExecCalls": 0,
33
+ "onlySkillReadCalls": true,
34
+ "toolCategories": [
35
+ "other"
36
+ ]
37
+ },
38
+ "github": {
39
+ "pr": "https://github.com/mreasonyang/cc2agent/pull/1",
40
+ "mode": "signed-local-replay",
41
+ "startedAt": "2026-10-27T08:56:18.586Z",
42
+ "finishedAt": "2026-10-27T08:57:05.850Z",
43
+ "deliveries": [
44
+ {
45
+ "status": 202,
46
+ "ok": true
47
+ }
48
+ ],
49
+ "ok": true,
50
+ "terminal": true,
51
+ "turnsFailed": 0,
52
+ "toolCallCount": 8,
53
+ "delegates": [
54
+ {
55
+ "name": "reviewer-a",
56
+ "called": true,
57
+ "tableRow": true
58
+ },
59
+ {
60
+ "name": "reviewer-b",
61
+ "called": true,
62
+ "tableRow": true
63
+ },
64
+ {
65
+ "name": "reviewer-c",
66
+ "called": true,
67
+ "tableRow": true
68
+ }
69
+ ],
70
+ "councilHeading": true,
71
+ "tableDivider": true,
72
+ "degradation": true,
73
+ "chinese": true,
74
+ "mentionsFixture": true,
75
+ "toolErrorCount": 0,
76
+ "writeOrExecCalls": 0,
77
+ "comments": 0,
78
+ "reactions": 0,
79
+ "reviews": 0,
80
+ "testPrState": "closed",
81
+ "merged": false
82
+ },
83
+ "hosting": {
84
+ "attempt": "deploy --dry-run",
85
+ "exitCode": 1,
86
+ "blocker": "no default team",
87
+ "actualDeploy": false,
88
+ "url": null
89
+ },
90
+ "publication": {
91
+ "npm": false,
92
+ "publicRepository": false,
93
+ "social": false
94
+ },
95
+ "sourceSha256": {
96
+ "demos/full-send/bot/agent.ts": "8580641f1047150ba7f940b6c359dae1097aefe0b7e58e7d570a3f2cfd833175",
97
+ "demos/full-send/bot/channels/github.ts": "73d5473ab17bd51be7f4ffbb2fd2e4e5d28c6d1217707b5bb2eea964707cf09b",
98
+ "demos/full-send/bot/skills/full-send/SKILL.md": "235b91709e8895485530e54ea13bcf514a19d438cb2434300683851ce435b5c6",
99
+ "demos/pr-review/bot/channels/github.ts": "8156691f1abb5cbaf6916abcd18a8a035820c9cd13026e7e895e79b9325f2d13",
100
+ "demos/pr-review/bot/lib/pr-snapshot.ts": "4f41b3fc75cfc767f1b5b362887a62b1b9c2bca95a33bb89dc87880e47f780e5",
101
+ "demos/pr-review/evals/pr-review.eval.ts": "b2180bf6b558f938827e45cfb32e06608492047a8e5ba909f7a4c9fe352e6d6d",
102
+ "deployments/pr-review/bot/lib/settings.ts": "d645b8e6f71e419cd94c6916cc18fd89837a8a095260e67514d2e4854b95f205",
103
+ "deployments/pr-review/bot/channels/github.ts": "8156691f1abb5cbaf6916abcd18a8a035820c9cd13026e7e895e79b9325f2d13",
104
+ "deployments/pr-review/bot/lib/pr-snapshot.ts": "4f41b3fc75cfc767f1b5b362887a62b1b9c2bca95a33bb89dc87880e47f780e5"
105
+ },
106
+ "boundaries": [
107
+ "No credentials, session tokens, raw model text, reasoning, tool arguments or provider logs are included.",
108
+ "Signed local replay is not a real hosted webhook delivery.",
109
+ "One successful case does not prove isolation or arbitrary-prompt safety.",
110
+ "Full-send automatic testing, push and PR creation are not implemented."
111
+ ]
112
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "url": "https://code.claude.com/docs/en/sub-agents",
3
+ "date": "2026-10-27",
4
+ "examples": [
5
+ {
6
+ "example": "code-reviewer",
7
+ "bytes": 865,
8
+ "sha256": "61b4954af1d017a0cb3af010a554e8a0b9568d377b5b2565051f3daa17b29110"
9
+ },
10
+ {
11
+ "example": "debugger",
12
+ "bytes": 802,
13
+ "sha256": "717228684bc15d2f333beb2ca4821a4fd99f67080a94b4d03088cf74836d0dbe"
14
+ },
15
+ {
16
+ "example": "data-scientist",
17
+ "bytes": 904,
18
+ "sha256": "e913164943cc9f742004e6f26b5abeda72439033b09b1275a80a17e75844170b"
19
+ },
20
+ {
21
+ "example": "db-reader",
22
+ "bytes": 678,
23
+ "sha256": "6e2a9278bd538f64138c1bdff9c7a4c951271b2a5a401f0d9d3a1d78da1e5682"
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,67 @@
1
+ # Upstream verification — 2026-10-27
2
+
3
+ This record separates package/source inspection from real account execution. SDK documentation was read from the installed dependency under ignored `.validation/`; it is not redistributed here.
4
+
5
+ | Item | Evidence | Scope |
6
+ | --- | --- | --- |
7
+ | SDK package | [Official overview](https://cursor.com/docs/agent-sdk) instructs installing `@grok/agent-sdk`; local dependency is 0.3.0 | Package/API compatibility, not account entitlement |
8
+ | tstack | [Commit 7de017b3fc9d50c03cf3ecb98fb71e0ca65a78bd](https://github.com/t3dotgg/tstack/tree/7de017b3fc9d50c03cf3ecb98fb71e0ca65a78bd), commit date 2026-10-24T19:25:50-07:00 | Current HEAD when fetched 2026-10-27; 9 skills; byte hashes in provenance |
9
+ | tstack license | Upstream LICENSE is MIT, Copyright (c) 2026 Theo Browne | Preserved in snapshot and both demos |
10
+ | GitHub channel | Public `githubChannel` / `defaultGitHubAuth`, deferred `workspaceFiles`, read-scoped `cursorAccount` | Signed local replay of private PR #1 passed; hosted delivery untested |
11
+ | SDK authentication | Official `agent-sdk login` completed successfully | Account authentication confirmed; no credential values retained as evidence |
12
+ | Eval assertions | Public `defineEval`, `defineEvalConfig`, `loadedSkill`, `calledSubagent`, `notCalledTool`, `includes` | Discovery checked; live generated skill and council evals passed the assertions detailed below |
13
+ | Tools | Server tools support `effect`, `dryRunResult`, `needsApproval`; agent script tools do not support these fields | Agent scripts need shell and a manual JSON adapter |
14
+ | Deployment | [Official deployment guide](https://cursor.com/docs/agent-sdk/deployment) deploys a committed, pushed Git ref; hosted `deploy --dry-run` reports no default team for this account | Account/team prerequisite unresolved; no actual deployment and no deployed URL |
15
+
16
+ Demo local validation against the installed SDK on this date:
17
+
18
+ - `full-send`: zero errors; one expected warning that the root excludes shell and therefore cannot run `pr_wait_script`.
19
+ - `pr-review`: no diagnostics.
20
+ - `eval --list`: six cases for full-send and three for pr-review.
21
+ - These are structural checks, separate from the authenticated model evals below. They do not establish real GitHub event delivery, tool-write behavior or deployment.
22
+
23
+ Authenticated model evidence on this date (before the rename from `cc2agent`):
24
+
25
+ The immutable [online evidence](evidence/online-2026-10-27.json) retains its original names and source hashes. Inspect the pre-rename source at commit `f9fc7fe682252b82bce904f6df0d3da0f3d62de5`. Local rename checks do not constitute another authenticated model run.
26
+
27
+ - Generated `migration-smoke`: **PASS**, 1 case and 2 assertions (`t.succeeded()` and `t.loadedSkill("migration-smoke")`). Sanitized local evidence: `.validation/live-evidence-smoke.json`; generated case: `.validation/live-smoke/evals/skills.eval.ts`.
28
+ - [PR-review council case](../demos/pr-review/evals/pr-review.eval.ts): **PASS**, 1 case and 9 assertions (completion, three completed delegates, heading, downgrade marker and three scoring rows). The case supplies an inline PR example. Reviewers inherit the same model; this does not prove three-provider execution or child-agent isolation.
29
+ - Full-send direct `agent-sdk run`: **PASS** for skill loading. The final default template made one successful read of full-send and no write/exec or merge call. Unconfigured channels now use `disableChannel()`; the earlier startup failure came from requesting credentials for the placeholder repository.
30
+ - Private PR #1 signed local replay: **PASS** after fixing the input path. The channel GETs a bounded diff snapshot, checks event/head/base revisions, and seeds it for the sandboxed model. The terminal session completed three delegates, a Chinese Council scoring table and fallback statement, with zero tool errors or write/exec calls. GitHub comments, reactions and reviews remained zero; the PR was closed without merging. This is not an actual hosted webhook delivery.
31
+ - Hosted `deploy --dry-run` reached an account prerequisite failure: no default team. No actual deployment was performed and no deployment URL was obtained.
32
+
33
+ The sanitized evidence files are local, ignored artifacts. They retain pass counts and assertion results, not raw model logs or credentials. The repository remains private, the root package has `private: true`, and npm, public and social releases remain on hold. See [acceptance results](acceptance.md) for the current delivery record.
34
+
35
+ ## Codex input adapter (2026-10-28)
36
+
37
+ The adapter follows the current [standalone custom-agent schema](https://learn.chatgpt.com/docs/agent-configuration/subagents) and [skill metadata documentation](https://learn.chatgpt.com/docs/build-skills), fetched on 2026-10-28. This extends the input formats; the output remains `@grok/agent-sdk@0.3.0`.
38
+
39
+ - Standalone `.codex/agents/*.toml` files declare `name`, `description`, and `developer_instructions`. The converter requires these strings, supports nested agent directories and explicitly selected loose files, and reuses existing subagent emission and model mapping.
40
+ - The current Codex schema allows selected feature and skill restrictions. These are reported as unsupported target semantics, with a terminal/report warning; they are not converted into ineffective child tool allowlists or Claude preload hints. Model reasoning/summary/verbosity settings are reported as dropped.
41
+ - Codex custom agents inherit sandbox, approval, provider, and MCP configuration from their parent. The converter does not read parent session config, credentials, `AGENTS.md`, or legacy `agents.<name>.config_file` declarations. Parent-only fields found inside a standalone file receive explicit explanations.
42
+ - `agents/openai.yaml` has per-field reporting for UI, invocation policy, dependencies, and unknown fields. Only a valid `interface.default_prompt` receives a semantic mapping to the eval trigger. Copied metadata does not enforce explicit-only invocation or install MCP connections.
43
+ - TOML parser errors suppress source excerpts. Required fields, file size, nesting, sensitive-key, symlink, collision, and no-overwrite protections are covered by synthetic tests. The adapter never executes source commands or follows referenced configuration paths.
44
+
45
+ `npm run test:sdk` now includes two synthetic Codex subagents and one Codex skill, with separate dependency installation, SDK validation/discovery, generated TypeScript checking, and listing of three routing cases. Listing these cases is not a live model eval. Earlier Claude/tstack model evidence does not establish Codex execution equivalence. See [acceptance](acceptance.md) for the recorded run result.
46
+
47
+ ## Findings that change the original brief
48
+
49
+ 1. A script cannot safely become a callable tool merely by copying it into a string. The upstream `pr-wait` speaks CLI arguments and event lines, while agent tools require JSON stdin/stdout. Generated stubs therefore remain disabled. The demo uses a separately authored read-only server `pr_wait` for one bounded GitHub snapshot, and retains the upstream script for audit.
50
+ 2. Agent tools require the built-in shell tool. Removing shell also disables those tools; claiming a no-shell agent can execute `pr-wait` would be inaccurate. Full-send defaults to local preparation and a human handoff, with no automated test/git/push workflow.
51
+ 3. The SDK's subagent discovery retains description/instructions/model, ignores nested tools directories and source `tools`, and keeps the harness task-tool toolset. Root allowlists cannot be presented as proven child-agent isolation. The demo prompts request read-only review, but a real sandbox/subagent test remains a release gate.
52
+ 4. `local.sandbox: true` is useful for untrusted input and file-path boundaries, but documented local MCP fail-closed behavior may also block our server tools during a model turn. Direct tool invocation or static discovery does not prove model access. We do not disable sandbox automatically.
53
+ 5. SDK GitHub channels default to automatic reply posting and reactions. Both demos now explicitly set `deliverReplies: false`, `progress.reactions: false`, and ignore mentions. PR review uses `permissions: "read"`; full-send retains its separately gated merge capability. Prompt instructions alone cannot control host-side channel effects.
54
+ 6. PR review fetches its bounded snapshot in the deferred channel handler instead of asking the sandboxed model to call a remote MCP tool. The 120,000-character limit applies to the serialized model input, not a streaming HTTP response byte cap. Partial and unavailable patches remain explicit.
55
+
56
+ ## Still unverified before claiming a production-ready migration
57
+
58
+ - Full account-specific Cursor model catalog; Claude aliases and three-provider routing.
59
+ - Subagent tool isolation and cross-provider routing. The completed skill/council evals verify routing and output markers, not these boundaries.
60
+ - Full-send's complete edit/test/push/PR workflow; only skill loading has passed live execution, and automatic test/push/PR creation is not implemented.
61
+ - `pr_wait` access in a sandboxed model session and credential/environment exposure boundaries.
62
+ - Actual hosted GitHub webhook delivery, score quality beyond the tested fixture, and no unintended writes across all harness paths. Signed local replay passed its narrower acceptance.
63
+ - Hosted deployment, exact effective egress list, GitHub permissions, required plan/roles and stable URL. The dry-run currently reports no default team. Only `api.github.com` is authored because current server tools use GitHub REST; the managed platform supplies additional base egress, which must be inspected on a real deployment.
64
+ - MCP `defineConnection` mapping, Claude WebFetch/WebSearch equivalents and exact permission-mode semantics remain outside the supported conversion scope. Unsupported fields receive report entries.
65
+ - npm publication and project name availability at publication time. Private repository acceptance continues; public and social release are intentionally on hold. The README GIF demonstrates fixture conversion, not deployment or production acceptance.
66
+
67
+ Use metadata-only auth checks. Never save raw model logs, process arguments or credential values as verification evidence.
@@ -0,0 +1,48 @@
1
+ # cc-to-cursor-agent 修复后复测
2
+
3
+ 日期:2026-10-27。提交 `d5a9da3283d8746c87a9df0eafd0dd52d2fe901c`。用例仍是上次那 36 个,没有换题。
4
+
5
+ ## 上次指出的四处
6
+
7
+ | 问题 | 复测 |
8
+ | --- | --- |
9
+ | 带脚本的项目在装依赖前整次失败 | 正常用例 24/24 退出码 0。缺依赖时状态是 `dependencies-missing`,并列出包名。装完依赖后 `agent-sdk validate` 也是 24/24。 |
10
+ | 正文追加提示仍写「原样」 | `N-MX-02` 的子代理正文标成降级,并写明末尾追加了提示。 |
11
+ | `WebFetch` 漏报 | `N-AG-05` 的报告点了这个名字。 |
12
+ | 权限警告不明显 | `N-AG-04` 的终端第一句写明子代理限制没有生效。 |
13
+
14
+ 权限仍然没有迁成。脚本存根仍然禁用。这两件是 SDK 和产品设计的边界,这次修复没有假装它们已经解决。
15
+
16
+ ## 结构
17
+
18
+ 正常 24 个:转换退出码 0 为 24/24,安装后校验 24/24。输入脚本没有执行。
19
+
20
+ 边界 12 个:该拒绝的 6 个都拒绝了(YAML 别名、名称冲突、越界文件、symlink、已有输出、敏感文件)。`B-08` 第一次用错了金丝雀路径,补跑后拒绝了越界输入,没有写出项目。直接复制和 `cursorPlugin()` 仍会把假凭据拷进 `B-11`。
21
+
22
+ ## 真实模型
23
+
24
+ 18 次都解析成功。同一任务 3 次。
25
+
26
+ | 任务 | cc-to-cursor-agent | 对照 |
27
+ | --- | --- | --- |
28
+ | 对账码 | 3/3 | 直接复制 3/3 |
29
+ | 审查(有无缺陷对照) | 3/3,调用 `diff-auditor` | 插件 3/3,调用 `bundle__diff-auditor` |
30
+ | 规格检查 | 3/3,调用 `spec-checker`,结论 FAIL,原因是内部空格 | 插件 3/3,调用 `bundle__spec-checker` |
31
+
32
+ 任务正确率没有高于现成做法。多出来的仍是损失报告、原名,以及不拷贝凭据、不跟随符号链接。
33
+
34
+ ## 补上的三项
35
+
36
+ 生成出来的路由 eval 实际跑了模型,不再只做 `--list`。30 个写出了 eval 的项目,共 41 条。旧提示第一次结果是 **35 通过、6 失败**。提示改成「按职责做一个最小例子」并加长超时后,重新生成再跑,**41/41 通过**,没有超时。输入脚本没有执行。
37
+
38
+ 失败里有 2 条超时(`N-MX-02` 的 `spec-check-rules`、`N-MX-04` 的 `format-clerk`,各跑到 150 秒,没有断言结果)。另外 4 条是行为没命中:`diff-auditor`、`code-architect`、`spec-checker` 没有被按生成用例委派;`beta-note` 没有加载对应 skill。`N-MX-02` 的自定义规格任务仍然是 3/3,和这条更窄的路由用例不是同一件事。
39
+
40
+ 权限探测做了 1 次。源子代理写了禁用 Bash。迁移后的 `diff-auditor` 被调用,同时会话里执行了 `echo perm-probe-ok`,回复里有这条输出。限制没有拦住命令。
41
+
42
+ 脚本存根单独执行时退出码 78,返回 `CC_TO_CURSOR_AGENT_STUB_DISABLED`。原 Python 没有跑,哨兵文件没有出现。宿主直接 `tool call` 调这个工具会被拒绝,因为它是 agent 脚本,不是 server 工具。
43
+
44
+ `agent-sdk deploy --dry-run` 没有部署。账号没有默认团队,命令退出 1,提示要传 `--team`。托管部署仍然没有测成。
45
+
46
+ ## 结论
47
+
48
+ 上次四处修复成立。正常转换 24/24,安装后结构校验 24/24。真实任务 3/3,和现成做法打平。路由 eval 第一次是 35/41。权限没有拦住 shell。脚本不能当原脚本用。云端部署仍停在账号没有团队。
@@ -0,0 +1,16 @@
1
+ # Independent evaluation
2
+
3
+ [2026-10-27 retest conclusion](20261027-2216/复测结论.md) preserves the independent evaluator's findings. The portable counts and source hashes are in [the evaluation summary](../docs/evidence/independent-evaluation.json).
4
+
5
+ The project is now named `agent2cursor`. The original report and hash-bound evidence retain the historical names `cc-to-cursor-agent` and `cc2agent`; they describe the versions actually evaluated.
6
+
7
+ - The structural retest used `d5a9da3283d8746c87a9df0eafd0dd52d2fe901c`: all 24 normal conversions and their post-install SDK validations passed. Six boundary inputs expected to be rejected were rejected.
8
+ - The original generated routing evals passed 35 of 41 cases. The revised prompts and timeout then passed 41 of 41 across the same 30 projects. The summary identifies the revised generator by source hashes; this is a narrow routing result, not a general quality or safety guarantee.
9
+ - Three real tasks were repeated three times per method. The converter and the direct-copy/plugin baselines each passed all nine task runs.
10
+ - The permission probe confirmed that a source subagent restriction did not prevent shell execution. Script adapters remained disabled. Hosted deployment was not completed.
11
+
12
+ The original report's final paragraph refers to the first routing run; its section “补上的三项” also records the subsequent 41/41 result. Neither run is discarded.
13
+
14
+ Raw runs, generated projects, inputs and local evaluation runners remain on disk and are excluded from Git. They can contain machine paths, model traces and dependencies. This directory tracks final conclusions; `docs/evidence/` tracks bounded summaries. Product tests, demo eval suites and source fixtures remain in their existing directories.
15
+
16
+ No model evals or test suites were rerun when preparing this record on 2026-10-28.