@tienne/gestalt 0.68.0 → 0.69.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 (114) hide show
  1. package/CLAUDE.md +9 -2
  2. package/README.md +1 -0
  3. package/dist/package.json +2 -1
  4. package/dist/plugin/review-agents/quality-reviewer/AGENT.md +1 -1
  5. package/dist/plugin/review-agents/writing-reviewer/AGENT.md +2 -2
  6. package/dist/plugin/skills/local-pr/SKILL.md +201 -0
  7. package/dist/plugin/skills/pr/SKILL.md +73 -4
  8. package/dist/plugin/skills/review/SKILL.md +190 -18
  9. package/dist/plugin/skills/review-reply/SKILL.md +144 -7
  10. package/dist/src/cli/commands/pr.d.ts +133 -0
  11. package/dist/src/cli/commands/pr.d.ts.map +1 -0
  12. package/dist/src/cli/commands/pr.js +489 -0
  13. package/dist/src/cli/commands/pr.js.map +1 -0
  14. package/dist/src/cli/index.d.ts.map +1 -1
  15. package/dist/src/cli/index.js +85 -0
  16. package/dist/src/cli/index.js.map +1 -1
  17. package/dist/src/core/config.d.ts.map +1 -1
  18. package/dist/src/core/config.js +4 -3
  19. package/dist/src/core/config.js.map +1 -1
  20. package/dist/src/core/home.d.ts +20 -0
  21. package/dist/src/core/home.d.ts.map +1 -0
  22. package/dist/src/core/home.js +52 -0
  23. package/dist/src/core/home.js.map +1 -0
  24. package/dist/src/core/types.d.ts +38 -0
  25. package/dist/src/core/types.d.ts.map +1 -1
  26. package/dist/src/core/version.d.ts.map +1 -1
  27. package/dist/src/core/version.js +4 -7
  28. package/dist/src/core/version.js.map +1 -1
  29. package/dist/src/events/store.d.ts +32 -0
  30. package/dist/src/events/store.d.ts.map +1 -1
  31. package/dist/src/events/store.js +68 -3
  32. package/dist/src/events/store.js.map +1 -1
  33. package/dist/src/local-pr/engine.d.ts +176 -0
  34. package/dist/src/local-pr/engine.d.ts.map +1 -0
  35. package/dist/src/local-pr/engine.js +373 -0
  36. package/dist/src/local-pr/engine.js.map +1 -0
  37. package/dist/src/local-pr/git.d.ts +190 -0
  38. package/dist/src/local-pr/git.d.ts.map +1 -0
  39. package/dist/src/local-pr/git.js +580 -0
  40. package/dist/src/local-pr/git.js.map +1 -0
  41. package/dist/src/local-pr/index.d.ts +6 -0
  42. package/dist/src/local-pr/index.d.ts.map +1 -0
  43. package/dist/src/local-pr/index.js +8 -0
  44. package/dist/src/local-pr/index.js.map +1 -0
  45. package/dist/src/local-pr/policy.d.ts +77 -0
  46. package/dist/src/local-pr/policy.d.ts.map +1 -0
  47. package/dist/src/local-pr/policy.js +80 -0
  48. package/dist/src/local-pr/policy.js.map +1 -0
  49. package/dist/src/local-pr/registry.d.ts +79 -0
  50. package/dist/src/local-pr/registry.d.ts.map +1 -0
  51. package/dist/src/local-pr/registry.js +307 -0
  52. package/dist/src/local-pr/registry.js.map +1 -0
  53. package/dist/src/local-pr/repository.d.ts +67 -0
  54. package/dist/src/local-pr/repository.d.ts.map +1 -0
  55. package/dist/src/local-pr/repository.js +251 -0
  56. package/dist/src/local-pr/repository.js.map +1 -0
  57. package/dist/src/local-pr/types.d.ts +151 -0
  58. package/dist/src/local-pr/types.d.ts.map +1 -0
  59. package/dist/src/local-pr/types.js +9 -0
  60. package/dist/src/local-pr/types.js.map +1 -0
  61. package/dist/src/local-pr-web/engine.d.ts +24 -0
  62. package/dist/src/local-pr-web/engine.d.ts.map +1 -0
  63. package/dist/src/local-pr-web/engine.js +112 -0
  64. package/dist/src/local-pr-web/engine.js.map +1 -0
  65. package/dist/src/local-pr-web/html-generator.d.ts +24 -0
  66. package/dist/src/local-pr-web/html-generator.d.ts.map +1 -0
  67. package/dist/src/local-pr-web/html-generator.js +385 -0
  68. package/dist/src/local-pr-web/html-generator.js.map +1 -0
  69. package/dist/src/local-pr-web/index.d.ts +5 -0
  70. package/dist/src/local-pr-web/index.d.ts.map +1 -0
  71. package/dist/src/local-pr-web/index.js +5 -0
  72. package/dist/src/local-pr-web/index.js.map +1 -0
  73. package/dist/src/local-pr-web/server.d.ts +126 -0
  74. package/dist/src/local-pr-web/server.d.ts.map +1 -0
  75. package/dist/src/local-pr-web/server.js +394 -0
  76. package/dist/src/local-pr-web/server.js.map +1 -0
  77. package/dist/src/local-pr-web/types.d.ts +11 -0
  78. package/dist/src/local-pr-web/types.d.ts.map +1 -0
  79. package/dist/src/local-pr-web/types.js +2 -0
  80. package/dist/src/local-pr-web/types.js.map +1 -0
  81. package/dist/src/mcp/schemas.d.ts +79 -4
  82. package/dist/src/mcp/schemas.d.ts.map +1 -1
  83. package/dist/src/mcp/schemas.js +80 -2
  84. package/dist/src/mcp/schemas.js.map +1 -1
  85. package/dist/src/mcp/server.d.ts.map +1 -1
  86. package/dist/src/mcp/server.js +13 -2
  87. package/dist/src/mcp/server.js.map +1 -1
  88. package/dist/src/mcp/tools/pr.d.ts +5 -0
  89. package/dist/src/mcp/tools/pr.d.ts.map +1 -0
  90. package/dist/src/mcp/tools/pr.js +165 -0
  91. package/dist/src/mcp/tools/pr.js.map +1 -0
  92. package/dist/src/mcp/tools/review-passthrough.d.ts.map +1 -1
  93. package/dist/src/mcp/tools/review-passthrough.js +264 -15
  94. package/dist/src/mcp/tools/review-passthrough.js.map +1 -1
  95. package/dist/src/memory/user-profile-store.d.ts.map +1 -1
  96. package/dist/src/memory/user-profile-store.js +3 -4
  97. package/dist/src/memory/user-profile-store.js.map +1 -1
  98. package/dist/src/review/context-collector.d.ts +1 -1
  99. package/dist/src/review/context-collector.js +1 -1
  100. package/dist/src/review/passthrough-engine.d.ts +1 -0
  101. package/dist/src/review/passthrough-engine.d.ts.map +1 -1
  102. package/dist/src/review/passthrough-engine.js +7 -2
  103. package/dist/src/review/passthrough-engine.js.map +1 -1
  104. package/dist/src/spec/text-based-spec-generator.d.ts.map +1 -1
  105. package/dist/src/spec/text-based-spec-generator.js +5 -2
  106. package/dist/src/spec/text-based-spec-generator.js.map +1 -1
  107. package/package.json +2 -1
  108. package/plugin/.codex-plugin/plugin.json +1 -1
  109. package/plugin/review-agents/quality-reviewer/AGENT.md +1 -1
  110. package/plugin/review-agents/writing-reviewer/AGENT.md +2 -2
  111. package/plugin/skills/local-pr/SKILL.md +201 -0
  112. package/plugin/skills/pr/SKILL.md +73 -4
  113. package/plugin/skills/review/SKILL.md +190 -18
  114. package/plugin/skills/review-reply/SKILL.md +144 -7
@@ -10,6 +10,16 @@ const require = createRequire(import.meta.url);
10
10
  export class EventStore {
11
11
  db = null;
12
12
  jsonlPath = null;
13
+ /**
14
+ * append가 쓰는 INSERT. 한 번만 컴파일한다.
15
+ *
16
+ * 호출마다 `prepare`하면 같은 SQL을 매번 다시 파싱하고 계획을 다시 세운다. 코멘트
17
+ * 수백 개를 한 번에 옮기는 흐름(`commentMany`)이 이 자리를 그대로 밟는다.
18
+ *
19
+ * 트랜잭션으로 묶지는 않는다. `commentMany`는 중간에 던져도 그때까지 쓴 건 남아
20
+ * 있어야 재시도가 이어 붙는다 — 한 트랜잭션이면 그게 통째로 사라진다.
21
+ */
22
+ appendStmt = null;
13
23
  constructor(dbPath, options = {}) {
14
24
  if (!options.forceJsonl) {
15
25
  try {
@@ -66,11 +76,11 @@ export class EventStore {
66
76
  };
67
77
  try {
68
78
  if (this.db) {
69
- const stmt = this.db.prepare(`
79
+ this.appendStmt ??= this.db.prepare(`
70
80
  INSERT INTO events (id, aggregate_type, aggregate_id, event_type, payload, timestamp)
71
81
  VALUES (?, ?, ?, ?, ?, ?)
72
82
  `);
73
- stmt.run(event.id, event.aggregateType, event.aggregateId, event.eventType, JSON.stringify(event.payload), event.timestamp);
83
+ this.appendStmt.run(event.id, event.aggregateType, event.aggregateId, event.eventType, JSON.stringify(event.payload), event.timestamp);
74
84
  }
75
85
  else {
76
86
  this.appendJsonl(event);
@@ -104,14 +114,66 @@ export class EventStore {
104
114
  if (!this.db) {
105
115
  return this.readJsonlEvents().filter((event) => event.aggregateType === aggregateType && event.aggregateId === aggregateId);
106
116
  }
117
+ // rowid로 정렬한다. timestamp로 안 하는 건 그게 밀리초 ISO 문자열이라 같은 ms에
118
+ // 여러 건이 들어가서다 — 코멘트를 연속으로 붙이는 흐름은 그 자리를 통상적으로
119
+ // 밟는다. 그러면 timestamp만으로는 순서가 안 정해진다. tiebreaker로 rowid를
120
+ // 얹으면 정렬 기준이 둘이 된다.
121
+ //
122
+ // rowid 하나로 충분하다. append는 INSERT 한 번이고 sqlite의 rowid는 그때마다
123
+ // 단조 증가한다 — 이건 문서화된 성질이다. 삽입 순서가 곧 재생 순서다. 이 테이블은
124
+ // 붙이기만 하고 지우는 자리가 없어서 최대 rowid가 재사용되는 갈래도 안 열린다.
125
+ //
126
+ // 겸사겸사 이 쿼리에서는 정렬이 사라진다. timestamp를 앞에 두면 이 절을 받쳐 줄
127
+ // 인덱스가 없어 sqlite가 매번 임시 b-tree를 세웠다. rowid만 남기면
128
+ // idx_events_aggregate로 좁힌 뒤 rowid 순서로 훑고 끝난다. 여기 얘기지
129
+ // `getAllByAggregateType` 얘기가 아니다 — 거기는 사정이 다르고 그 자리에 적었다.
130
+ //
131
+ // 재생 순서는 이 도메인이 상태를 만드는 근거라 저장 엔진의 문서화되지 않은
132
+ // 성질에 기대고 싶지 않았다. 그 취지가 rowid 쪽에 더 맞는다
107
133
  const stmt = this.db.prepare(`
108
134
  SELECT * FROM events
109
135
  WHERE aggregate_type = ? AND aggregate_id = ?
110
- ORDER BY timestamp ASC
136
+ ORDER BY rowid ASC
111
137
  `);
112
138
  const rows = stmt.all(aggregateType, aggregateId);
113
139
  return rows.map(parseRow);
114
140
  }
141
+ /**
142
+ * 이 타입의 모든 이벤트를 aggregate별로 묶어 한 번에 돌려준다.
143
+ *
144
+ * aggregate마다 replay를 부르면 PR 수만큼 쿼리가 나간다. sqlite가 없어 JSONL로
145
+ * 떨어진 런타임에서는 파일 전체를 PR 수만큼 다시 읽는다. 목록 화면과 CLI list가
146
+ * 부르는 가장 뜨거운 자리라 그 비용이 그대로 보인다.
147
+ *
148
+ * 정렬은 rowid만 본다. 결과를 aggregate별로 다시 묶으므로 전역 시간 순서는 쓸
149
+ * 데가 없다. 필요한 건 묶음 안의 상대 순서뿐이다. 순서를 rowid로 정하는 근거는
150
+ * `getByAggregate`에 적었다.
151
+ *
152
+ * 다만 임시 b-tree는 여기서 안 없어진다. 플래너가 `aggregate_type = ?` 하나만 보고도
153
+ * idx_events_aggregate를 고르는데, 그 인덱스 순서는 rowid 순서가 아니라 정렬이 또
154
+ * 필요하다. 어느 플랜을 고를지는 통계를 탄다 — `ANALYZE`를 돌려 sqlite_stat1이
155
+ * 있으면 `SCAN events`로 붙어 정렬이 사라진다. 없으면 인덱스를 골라 임시 b-tree가
156
+ * 남는다. 이 스토어는 ANALYZE를 안 돌리므로 실물은 후자다.
157
+ *
158
+ * 그래도 빨라지는 건 정렬 키가 ISO 문자열 비교에서 정수 비교로 바뀌어서다. 이벤트
159
+ * 2만 건에 aggregate 200개로 20회 평균 23.1 → 20.7 ms였다(sqlite 3.53.4, macOS).
160
+ */
161
+ getAllByAggregateType(aggregateType) {
162
+ const grouped = new Map();
163
+ const events = this.db
164
+ ? this.db
165
+ .prepare(`SELECT * FROM events WHERE aggregate_type = ? ORDER BY rowid ASC`)
166
+ .all(aggregateType).map(parseRow)
167
+ : this.readJsonlEvents().filter((e) => e.aggregateType === aggregateType);
168
+ for (const event of events) {
169
+ const list = grouped.get(event.aggregateId);
170
+ if (list)
171
+ list.push(event);
172
+ else
173
+ grouped.set(event.aggregateId, [event]);
174
+ }
175
+ return grouped;
176
+ }
115
177
  getByType(eventType, limit = 100) {
116
178
  if (!this.db) {
117
179
  return this.readJsonlEvents()
@@ -206,6 +268,9 @@ export class EventStore {
206
268
  return counts;
207
269
  }
208
270
  close() {
271
+ // 캐시한 statement는 닫힌 db를 붙잡고 있다. 먼저 놓아야 닫은 뒤에 잘못 쓰는 길이
272
+ // 안 남는다
273
+ this.appendStmt = null;
209
274
  this.db?.close();
210
275
  }
211
276
  appendJsonl(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/events/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AA4C/C,MAAM,OAAO,UAAU;IACb,EAAE,GAA0B,IAAI,CAAC;IACjC,SAAS,GAAkB,IAAI,CAAC;IAExC,YAAY,MAAc,EAAE,UAA6B,EAAE;QACzD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;gBACtC,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACrC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,sBAAsB,EAAE,CAAC,CAAC;gBAC3D,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzB,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;oBACxD,MAAM,EAAE,cAAc;oBACtB,MAAM;oBACN,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;iBAClD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,UAAU,CAAC,EAAkB;QACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;KAgBP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CACJ,aAAqB,EACrB,WAAmB,EACnB,SAAiB,EACjB,OAAU;QAEV,MAAM,KAAK,GAAmB;YAC5B,EAAE,EAAE,UAAU,EAAE;YAChB,aAAa;YACb,WAAW;YACX,SAAS;YACT,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAG5B,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,EACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAC7B,KAAK,CAAC,SAAS,CAChB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxE,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,IAAI,CACF,aAAqB,EACrB,WAAmB,EACnB,SAAiB,EACjB,OAAU;QAEV,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,MAAM,EAAE,cAAc;gBACtB,aAAa;gBACb,WAAW;gBACX,SAAS;gBACT,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,cAAc,CAAC,aAAqB,EAAE,WAAmB;QACvD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,KAAK,aAAa,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;KAI5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAkB,CAAC;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE,KAAK,GAAG,GAAG;QACtC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,EAAE;iBAC1B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;iBAChD,IAAI,CAAC,eAAe,CAAC;iBACrB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAkB,CAAC;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,aAAqB,EAAE,WAAmB,EAAE,SAAiB;QACrE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAC3C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,aAAa,KAAK,aAAa;gBACrC,KAAK,CAAC,WAAW,KAAK,WAAW;gBACjC,KAAK,CAAC,SAAS,KAAK,SAAS,CAChC,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAA4B,CAAC;QACvF,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAqB,EAAE,WAAmB;QAC/C,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,aAAqB;QAClC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;YACtD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3C,IAAI,KAAK,CAAC,aAAa,KAAK,aAAa;oBAAE,SAAS;gBACpD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChD,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC;iBACtC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAA+B,CAAC;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,GAAG;QAChB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAkB,CAAC;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAE5B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAA6C,CAAC;QACnE,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAEO,WAAW,CAAI,KAAqB;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,eAAe,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAEO,sBAAsB,CAAC,MAAc;QAC3C,MAAM,UAAU,GAAG;YACjB,MAAM;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC;SACvC,CAAC;QAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,GAAG,SAAS,QAAQ,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,cAAc,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;wBAC7C,MAAM,EAAE,cAAc;wBACtB,aAAa,EAAE,MAAM;wBACrB,SAAS;qBACV,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,MAAM,IAAI,eAAe,CACvB,qDAAqD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9D,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE;oBACrD,MAAM,EAAE,cAAc;oBACtB,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAYD,SAAS,QAAQ,CAAC,GAAgB;IAChC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAwD,CAAC;IAClG,IAAI,OAAO,QAAQ,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IACpD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IACpE,MAAM,IAAI,eAAe,CAAC,sDAAsD,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe,CAAC,CAAc,EAAE,CAAc;IACrD,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/events/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ import type { IEventStore } from '../events/store.js';
2
+ import * as git from './git.js';
3
+ import type { Actor, PullRequest, ReviewVerdict } from './types.js';
4
+ /**
5
+ * 로컬 PR을 만들고 굴린다.
6
+ *
7
+ * 상태 전이 규칙이 여기 산다. 승인 게이트는 없어서 승인 없이 머지할 수 있다.
8
+ * 대신 그 시점의 미해결 스레드 수를 이벤트에 남겨 나중에 되짚게 한다.
9
+ */
10
+ export declare class LocalPrEngine {
11
+ private repoRoot;
12
+ private store;
13
+ private repo;
14
+ constructor(repoRoot: string, store?: IEventStore);
15
+ /** 저장소를 닫는다. PR을 닫는 closePr과 헷갈리지 않게 이름을 갈라뒀다 */
16
+ dispose(): void;
17
+ get(prId: string): PullRequest | null;
18
+ list(status?: PullRequest['status']): PullRequest[];
19
+ /**
20
+ * 상태별 PR 개수.
21
+ *
22
+ * 개수만 필요한 자리가 PR을 다 접지 않게 한다 — 웹 UI의 레포 배지가 레포마다
23
+ * `list('open')`을 부르느라 화면 한 번에 전체 재생이 레포 수만큼 돌았다.
24
+ */
25
+ countByStatus(): Record<PullRequest['status'], number>;
26
+ diff(prId: string): string;
27
+ changedFiles(prId: string): string[];
28
+ /**
29
+ * PR head를 임시 워크트리로 떼어 놓고 그 경로를 준다.
30
+ *
31
+ * 리뷰어가 코드를 깨서 테스트가 잡는지 보려면 실물 파일이 필요하다. diff만으로는
32
+ * 못 하는 검증이다. 닫히거나 머지된 PR도 떼어낼 수 있게 열림 여부는 안 본다 —
33
+ * 머지된 뒤에 "그때 그 코드가 맞았나"를 되짚는 자리가 있다.
34
+ */
35
+ checkout(prId: string): git.PrCheckout;
36
+ /**
37
+ * 떼어 놓은 워크트리를 지운다.
38
+ *
39
+ * 지킬 변경이 있으면 지우지 않고 그 사실을 돌려준다. 부르는 쪽은 결과의 `status`로
40
+ * 갈래를 탄다. PR head를 함께 넘겨야 그 자리에서 쌓은 커밋을 가려낼 수 있다.
41
+ */
42
+ removeCheckout(prId: string, options?: {
43
+ force?: boolean;
44
+ }): git.CheckoutRemoval;
45
+ create(input: {
46
+ title: string;
47
+ body?: string;
48
+ author: Actor;
49
+ base?: string;
50
+ head?: string;
51
+ }): PullRequest;
52
+ /** head를 지금 커밋으로 옮긴다. 코멘트는 그대로 붙어 있다. 본문만 고치려면 `edit`이다 */
53
+ update(prId: string, head?: string): PullRequest;
54
+ /**
55
+ * 제목과 본문을 고친다. head는 그대로다.
56
+ *
57
+ * `update`와 갈라 둔 자리다. `update`는 "고쳐서 다시 올렸다"라 head가 안 움직이면
58
+ * 거절하고 움직이면 `changes_requested`를 `open`으로 되돌린다. 본문 오타 수정은
59
+ * 둘 다 틀리다 — 옮길 head가 없어서 거절당하고 억지로 태우면 리뷰어가 내린 판정이
60
+ * 글자 하나 고쳤다고 풀린다. 그래서 `pr.edited`를 따로 낸다.
61
+ *
62
+ * 라운드도 안 는다. 새 라운드를 여는 건 `request_changes` 판정 하나뿐이다.
63
+ *
64
+ * 고칠 것을 안 주거나 지금 값과 같으면 던진다. 아무 일도 안 하는 이벤트를 남기면
65
+ * 이력에 "누가 뭘 고쳤다"는 줄이 서는데 정작 달라진 게 없다.
66
+ *
67
+ * 머지되거나 닫힌 PR은 못 고친다. 리뷰가 끝난 기록이라 그 시점 본문이 그대로
68
+ * 남아야 판단을 되짚을 수 있다.
69
+ */
70
+ edit(prId: string, changes: {
71
+ title?: string;
72
+ body?: string;
73
+ }, by: Actor): PullRequest;
74
+ /**
75
+ * 코멘트 여러 개를 한 번에 붙인다.
76
+ *
77
+ * `comment`를 N번 부르면 하나마다 PR 전체를 두 번 재생한다 — 앞에서 상태를 얻고
78
+ * 뒤에서 돌려주느라 그렇다. 재생 대상 이벤트도 붙일수록 늘어서 총 비용이 개수의
79
+ * 제곱으로 커진다. 리뷰 합의를 옮기는 자리는 수십에서 수백 개라 그 자리를 밟는다.
80
+ *
81
+ * 상태는 한 번만 접고 이벤트만 이어 붙인다. `onPosted`는 하나 쓸 때마다 그 입력의
82
+ * 인덱스로 부른다 — 중간에 던져도 어디까지 썼는지가 부르는 쪽에 남아야 재시도가
83
+ * 다시 안 쓴다. 부르는 쪽은 이 인덱스로 재개 지점을 잡는다. 자기 카운터를 따로
84
+ * 올리면 두 계산이 갈릴 때 재개 지점이 밀려 코멘트가 겹치거나 빠진다.
85
+ */
86
+ commentMany(prId: string, inputs: {
87
+ author: Actor;
88
+ path: string;
89
+ line?: number;
90
+ body: string;
91
+ marker?: string;
92
+ }[], onPosted?: (index: number) => void): PullRequest;
93
+ comment(prId: string, input: {
94
+ author: Actor;
95
+ path: string;
96
+ line?: number;
97
+ body: string;
98
+ replyTo?: string;
99
+ marker?: string;
100
+ }): PullRequest;
101
+ resolve(prId: string, commentId: string, by: Actor): PullRequest;
102
+ review(prId: string, input: {
103
+ reviewer: Actor;
104
+ verdict: ReviewVerdict;
105
+ summary: string;
106
+ }): PullRequest;
107
+ merge(prId: string, by: Actor, options?: {
108
+ deleteBranch?: boolean;
109
+ }): PullRequest;
110
+ /**
111
+ * 붙잡아 둘 이유가 끝난 ref를 놓는다.
112
+ *
113
+ * `refs/gestalt/` 아래는 지금까지 단조 증가만 했다. 머지된 PR도 base와 head를
114
+ * 영구 보유한다. `--force` 한 바퀴마다 체크아웃 자국도 한 칸씩 더 쌓인다. 지우는
115
+ * 명령도 만료도 없어서 오래 쓴 레포일수록 `for-each-ref`가 느려지고 `git gc`가
116
+ * 놓지 못하는 객체가 늘어난다.
117
+ *
118
+ * 무엇을 놓는지는 "놓아도 커밋이 안 사라지는가"로 가른다.
119
+ *
120
+ * - **머지된 PR의 base와 head**를 놓는다. 머지 커밋이 base 브랜치 이력에 둘을
121
+ * 모두 넣었으므로 ref를 놓아도 되짚을 수 있다. `unpinRefs`가 닫힌 PR의 base에
122
+ * 대해 이미 쓰는 근거와 같다. 그래도 놓기 전에 head가 정말 base 이력에 있는지
123
+ * 확인한다 — 머지 뒤 누가 base를 되돌렸으면 그 근거가 깨진다. 그때는 안 놓고
124
+ * 이유를 돌려준다.
125
+ * - **닫힌 PR은 아무것도 안 놓는다.** head를 붙잡아 두기로 한 결정이 그대로다.
126
+ * 닫힌 PR도 `checkout`으로 떼어낸다고 약속했다.
127
+ * - **체크아웃 자국(`refs/gestalt/pr-checkout/...`)은 기본으로 안 놓는다.** 그건
128
+ * 어느 이력에도 안 들어간 워크트리 전용 커밋이라 놓으면 영영 사라진다.
129
+ * `checkouts`로 뜻을 밝혔을 때, 그리고 그 PR이 이미 머지되거나 닫혀 리뷰가
130
+ * 끝났을 때만 놓는다.
131
+ *
132
+ * `dryRun`이면 무엇을 놓을지만 돌려주고 손대지 않는다.
133
+ *
134
+ * 지금 붙어 있는 ref를 먼저 한 번에 모아 놓고 PR을 훑는다. 붙어 있지도 않은 ref를
135
+ * 놓았다고 세지 않으려는 게 첫째 이유고 — 머지 PR의 base는 close 경로에서 이미
136
+ * 놓였을 수 있다 — 그 집합을 게이트로 쓰면 버려질 PR에 프로세스를 안 태우는 게
137
+ * 둘째다. 뒤에서 거르면 결과만 같고 스폰은 다 나간다. 놓을 게 하나도 없는 두 번째
138
+ * prune이 첫 번째와 똑같이 비쌌던 이유다.
139
+ *
140
+ * 체크아웃 자국도 이 집합에서 접두사로 걸러 낸다. PR마다 `for-each-ref`를 띄우면
141
+ * 이미 뽑아 둔 목록을 PR 수만큼 다시 뽑는 셈이다.
142
+ *
143
+ * 붙은 ref가 하나도 없는 머지 PR은 `kept`에도 안 올린다. 놓을 게 없으면 근거가
144
+ * 깨졌는지 물을 일도 없다 — "놓을 만했지만 남긴 PR"에 남길 것 자체가 없다.
145
+ */
146
+ prune(options?: {
147
+ checkouts?: boolean;
148
+ dryRun?: boolean;
149
+ }): PruneResult;
150
+ closePr(prId: string, by: Actor, reason?: string): PullRequest;
151
+ private require;
152
+ private requireOpen;
153
+ }
154
+ /** `prune`이 무엇을 놓았고 무엇을 왜 남겼는지 */
155
+ export interface PruneResult {
156
+ /** 놓은 ref 이름 */
157
+ released: string[];
158
+ /** 놓을 만했지만 근거가 깨져 남긴 PR */
159
+ kept: {
160
+ prId: string;
161
+ reason: string;
162
+ }[];
163
+ /** true면 아무것도 안 놓고 목록만 돌려줬다 */
164
+ dryRun: boolean;
165
+ }
166
+ /**
167
+ * 종료 코드를 달고 다니는 오류.
168
+ *
169
+ * 부르는 쪽이 에이전트라 stdout을 안 읽고도 갈래를 타야 한다.
170
+ * 3은 못 찾음, 4는 상태 충돌이다.
171
+ */
172
+ export declare class PrError extends Error {
173
+ readonly exitCode: number;
174
+ constructor(message: string, exitCode: number);
175
+ }
176
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/local-pr/engine.ts"],"names":[],"mappings":"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"}