@pome-sh/cli 0.18.0 → 0.19.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.
- package/dist/build-info.json +3 -3
- package/dist/src/capture-server/index.js +1 -1
- package/dist/src/runner/mergeAdapterSignals.d.ts +23 -0
- package/dist/src/runner/mergeAdapterSignals.js +45 -3
- package/dist/src/scaffolds/mcp-loop/loop.js +3 -3
- package/node_modules/@pome-sh/sdk/dist/check-state-path.d.ts +71 -0
- package/node_modules/@pome-sh/sdk/dist/check-state-path.js +200 -0
- package/node_modules/@pome-sh/sdk/dist/check-state-path.js.map +1 -0
- package/node_modules/@pome-sh/sdk/dist/checks.d.ts +2 -0
- package/node_modules/@pome-sh/sdk/dist/checks.js +5 -0
- package/node_modules/@pome-sh/sdk/dist/checks.js.map +1 -1
- package/node_modules/@pome-sh/sdk/dist/recorder.d.ts +10 -1
- package/node_modules/@pome-sh/sdk/dist/recorder.js +11 -2
- package/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -1
- package/node_modules/@pome-sh/sdk/package.json +2 -2
- package/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +111 -24
- package/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +3 -3
- package/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +1 -1
- package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +6 -3
- package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +7 -2
- package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -1
- package/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +1 -1
- package/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +1 -1
- package/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +68 -4
- package/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +19 -5
- package/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +1 -1
- package/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +60 -28
- package/node_modules/@pome-sh/shared-types/dist/recorder-events.js +81 -10
- package/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -1
- package/node_modules/@pome-sh/shared-types/package.json +1 -1
- package/node_modules/@pome-sh/shared-types/trace-contract.json +49 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-issues.js +35 -9
- package/node_modules/@pome-sh/twin-github/dist/src/check-issues.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js +21 -5
- package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js +26 -6
- package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.d.ts +20 -1
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.js +62 -10
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/package.json +3 -3
- package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +29 -0
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-drafts.js +19 -4
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-drafts.js.map +1 -1
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-labels.js +15 -4
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-labels.js.map +1 -1
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-messages.js +19 -3
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-messages.js.map +1 -1
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.d.ts +26 -1
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.js +52 -16
- package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-gmail/package.json +2 -2
- package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +29 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js +15 -3
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js +31 -4
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.d.ts +27 -2
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js +73 -20
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/package.json +2 -2
- package/node_modules/@pome-sh/twin-slack/dist/src/check-messages.js +28 -7
- package/node_modules/@pome-sh/twin-slack/dist/src/check-messages.js.map +1 -1
- package/node_modules/@pome-sh/twin-slack/dist/src/check-secrets.js +16 -3
- package/node_modules/@pome-sh/twin-slack/dist/src/check-secrets.js.map +1 -1
- package/node_modules/@pome-sh/twin-slack/dist/src/check-state.d.ts +26 -1
- package/node_modules/@pome-sh/twin-slack/dist/src/check-state.js +31 -4
- package/node_modules/@pome-sh/twin-slack/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-slack/package.json +3 -3
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.d.ts +1 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.js +16 -0
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-refunds.js +11 -3
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-refunds.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.d.ts +25 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.js +31 -3
- package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/package.json +3 -3
- package/package.json +8 -8
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Declarations only. The grammar rules they all obey are in `checks.ts`, which
|
|
6
6
|
// assembles them; how the exported tree is read is in `check-state.ts`.
|
|
7
|
-
import { defineCheck, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER } from "@pome-sh/sdk/checks";
|
|
7
|
+
import { childStatePath, defineCheck, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER } from "@pome-sh/sdk/checks";
|
|
8
8
|
import { repoRef } from "@pome-sh/sdk/checks";
|
|
9
9
|
import { commentNeedle, issueNumber, issueState, labelName, login, } from "./check-params.js";
|
|
10
|
-
import { appliedLabelNames, resolveIssue, sameLabel } from "./check-state.js";
|
|
10
|
+
import { appliedLabelNames, missOutcome, resolveIssue, sameLabel } from "./check-state.js";
|
|
11
11
|
import { finalWorld, repoState } from "./check-worlds.js";
|
|
12
12
|
export const issueExists = defineCheck({
|
|
13
13
|
id: "github.issue-exists",
|
|
@@ -37,8 +37,14 @@ export const issueExists = defineCheck({
|
|
|
37
37
|
evaluate({ issue, repo }, { final }) {
|
|
38
38
|
const found = resolveIssue(final, repo, issue);
|
|
39
39
|
if ("missing" in found)
|
|
40
|
-
return
|
|
41
|
-
|
|
40
|
+
return missOutcome(found);
|
|
41
|
+
// The ISSUE itself, not a field on it — here the lookup is the assertion, so
|
|
42
|
+
// the row's own address is exactly what produced the verdict (F-1197).
|
|
43
|
+
return {
|
|
44
|
+
passed: true,
|
|
45
|
+
reason: `issue #${issue} exists in ${repo}`,
|
|
46
|
+
evidenceStatePaths: [found.path],
|
|
47
|
+
};
|
|
42
48
|
},
|
|
43
49
|
});
|
|
44
50
|
export const issueStateCheck = defineCheck({
|
|
@@ -84,7 +90,7 @@ export const issueStateCheck = defineCheck({
|
|
|
84
90
|
evaluate({ issue, repo, state }, { final }) {
|
|
85
91
|
const found = resolveIssue(final, repo, issue);
|
|
86
92
|
if ("missing" in found)
|
|
87
|
-
return
|
|
93
|
+
return missOutcome(found);
|
|
88
94
|
// The issue row must carry a state to attest it; a snapshot that omitted it
|
|
89
95
|
// cannot be judged either way → safe-skip rather than false-fail.
|
|
90
96
|
if (found.found.state == null) {
|
|
@@ -92,12 +98,18 @@ export const issueStateCheck = defineCheck({
|
|
|
92
98
|
passed: false,
|
|
93
99
|
status: "skipped",
|
|
94
100
|
reason: `issue #${issue} has no state in state_final (state_incomplete)`,
|
|
101
|
+
// The ROW, not `…/state` — the field this branch exists for is the one
|
|
102
|
+
// that is absent, and a pointer at it would not resolve. Pointing at the
|
|
103
|
+
// row is what lets a reader see the gap for themselves instead of taking
|
|
104
|
+
// the reason's word for it (F-1197).
|
|
105
|
+
evidenceStatePaths: [found.path],
|
|
95
106
|
};
|
|
96
107
|
}
|
|
97
108
|
const actual = found.found.state.toLowerCase();
|
|
98
109
|
return {
|
|
99
110
|
passed: actual === state,
|
|
100
111
|
reason: `issue #${issue} state is "${found.found.state}" (wanted "${state}")`,
|
|
112
|
+
evidenceStatePaths: [childStatePath(found.path, "state")],
|
|
101
113
|
};
|
|
102
114
|
},
|
|
103
115
|
});
|
|
@@ -127,7 +139,7 @@ export const issueHasLabel = defineCheck({
|
|
|
127
139
|
evaluate({ issue, repo, label }, { final }) {
|
|
128
140
|
const found = resolveIssue(final, repo, issue);
|
|
129
141
|
if ("missing" in found)
|
|
130
|
-
return
|
|
142
|
+
return missOutcome(found);
|
|
131
143
|
const applied = appliedLabelNames(found.found);
|
|
132
144
|
const passed = applied.some((name) => sameLabel(name, label));
|
|
133
145
|
return {
|
|
@@ -135,6 +147,10 @@ export const issueHasLabel = defineCheck({
|
|
|
135
147
|
reason: passed
|
|
136
148
|
? `issue #${issue} has label "${label}"`
|
|
137
149
|
: `issue #${issue} labels are [${applied.join(", ")}], missing "${label}"`,
|
|
150
|
+
// The APPLIED set, which is the set this check scanned — not the repo's
|
|
151
|
+
// label definitions, which is the neighbouring set `no-new-labels` reads
|
|
152
|
+
// and the one this check's description exists to keep it distinct from.
|
|
153
|
+
evidenceStatePaths: [childStatePath(found.path, "labels")],
|
|
138
154
|
};
|
|
139
155
|
},
|
|
140
156
|
});
|
|
@@ -159,7 +175,7 @@ export const issueExactlyOneLabel = defineCheck({
|
|
|
159
175
|
evaluate({ issue, repo, label }, { final }) {
|
|
160
176
|
const found = resolveIssue(final, repo, issue);
|
|
161
177
|
if ("missing" in found)
|
|
162
|
-
return
|
|
178
|
+
return missOutcome(found);
|
|
163
179
|
const applied = appliedLabelNames(found.found);
|
|
164
180
|
const passed = applied.length === 1 && sameLabel(applied[0], label);
|
|
165
181
|
return {
|
|
@@ -167,6 +183,9 @@ export const issueExactlyOneLabel = defineCheck({
|
|
|
167
183
|
reason: passed
|
|
168
184
|
? `issue #${issue} has exactly one label ("${label}")`
|
|
169
185
|
: `issue #${issue} has labels [${applied.join(", ")}], expected exactly one label "${label}"`,
|
|
186
|
+
// The same pointer `issue-has-label` cites, because both read the same
|
|
187
|
+
// field — the difference between them is the assertion, not the address.
|
|
188
|
+
evidenceStatePaths: [childStatePath(found.path, "labels")],
|
|
170
189
|
};
|
|
171
190
|
},
|
|
172
191
|
});
|
|
@@ -191,7 +210,7 @@ export const issueAssignee = defineCheck({
|
|
|
191
210
|
evaluate(args, { final }) {
|
|
192
211
|
const found = resolveIssue(final, args.repo, args.issue);
|
|
193
212
|
if ("missing" in found)
|
|
194
|
-
return
|
|
213
|
+
return missOutcome(found);
|
|
195
214
|
const assignees = found.found.assignees ?? [];
|
|
196
215
|
const passed = assignees.includes(args.login);
|
|
197
216
|
return {
|
|
@@ -199,6 +218,7 @@ export const issueAssignee = defineCheck({
|
|
|
199
218
|
reason: passed
|
|
200
219
|
? `issue #${args.issue} is assigned to "${args.login}"`
|
|
201
220
|
: `issue #${args.issue} assignees are [${assignees.join(", ")}], missing "${args.login}"`,
|
|
221
|
+
evidenceStatePaths: [childStatePath(found.path, "assignees")],
|
|
202
222
|
};
|
|
203
223
|
},
|
|
204
224
|
});
|
|
@@ -228,7 +248,7 @@ export const issueCommentContains = defineCheck({
|
|
|
228
248
|
evaluate({ needle, issue, repo }, { final }) {
|
|
229
249
|
const found = resolveIssue(final, repo, issue);
|
|
230
250
|
if ("missing" in found)
|
|
231
|
-
return
|
|
251
|
+
return missOutcome(found);
|
|
232
252
|
const comments = found.found.comments ?? [];
|
|
233
253
|
const passed = comments.some((comment) => (comment.body ?? "").includes(needle));
|
|
234
254
|
return {
|
|
@@ -236,6 +256,12 @@ export const issueCommentContains = defineCheck({
|
|
|
236
256
|
reason: passed
|
|
237
257
|
? `issue #${issue} has a comment containing "${needle}"`
|
|
238
258
|
: `issue #${issue} has no comment containing "${needle}" (${comments.length} comment(s) scanned)`,
|
|
259
|
+
// The whole comment list, not the matching comment. The check scans every
|
|
260
|
+
// body, so the list is what it read — and on the FAILING side there is no
|
|
261
|
+
// matching row to point at, which would leave the citation present on a
|
|
262
|
+
// pass and absent on a fail. A pointer that appears only when the verdict
|
|
263
|
+
// is good is worse than none: its absence would read as a verdict class.
|
|
264
|
+
evidenceStatePaths: [childStatePath(found.path, "comments")],
|
|
239
265
|
};
|
|
240
266
|
},
|
|
241
267
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-issues.js","sourceRoot":"","sources":["../../src/check-issues.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,oEAAoE;AACpE,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-issues.js","sourceRoot":"","sources":["../../src/check-issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Declarations only. The grammar rules they all obey are in `checks.ts`, which
|
|
6
6
|
// assembles them; how the exported tree is read is in `check-state.ts`.
|
|
7
|
-
import { defineCheck, repoRef } from "@pome-sh/sdk/checks";
|
|
7
|
+
import { childStatePath, defineCheck, repoRef } from "@pome-sh/sdk/checks";
|
|
8
8
|
import { prNumber, pullRequestState, reviewState } from "./check-params.js";
|
|
9
|
-
import { isMerged, resolvePullRequest } from "./check-state.js";
|
|
9
|
+
import { isMerged, missOutcome, resolvePullRequest } from "./check-state.js";
|
|
10
10
|
import { finalWorld, repoState } from "./check-worlds.js";
|
|
11
11
|
export const pullRequestStateCheck = defineCheck({
|
|
12
12
|
id: "github.pr-state",
|
|
@@ -48,7 +48,7 @@ export const pullRequestStateCheck = defineCheck({
|
|
|
48
48
|
evaluate({ pr, repo, state }, { final }) {
|
|
49
49
|
const found = resolvePullRequest(final, repo, pr);
|
|
50
50
|
if ("missing" in found)
|
|
51
|
-
return
|
|
51
|
+
return missOutcome(found);
|
|
52
52
|
const pull = found.found;
|
|
53
53
|
const onMergeFlag = state === "merged" || state === "not merged";
|
|
54
54
|
// The field this assertion turns on must be PRESENT. Absent, the safe
|
|
@@ -62,6 +62,9 @@ export const pullRequestStateCheck = defineCheck({
|
|
|
62
62
|
passed: false,
|
|
63
63
|
status: "skipped",
|
|
64
64
|
reason: `pull request #${pr} has no ${onMergeFlag ? "merged" : "state"} field in state_final (state_incomplete)`,
|
|
65
|
+
// The ROW: the field this branch exists for is the absent one, so a
|
|
66
|
+
// pointer at it would resolve to nothing (F-1197).
|
|
67
|
+
evidenceStatePaths: [found.path],
|
|
65
68
|
};
|
|
66
69
|
}
|
|
67
70
|
// Cite only the field the assertion actually turned on. Printing both
|
|
@@ -72,11 +75,17 @@ export const pullRequestStateCheck = defineCheck({
|
|
|
72
75
|
return {
|
|
73
76
|
passed: state === "merged" ? merged : !merged,
|
|
74
77
|
reason: `pull request #${pr}: merged=${merged} (wanted "${state}")`,
|
|
78
|
+
// The SAME discipline the reason above already follows: cite only the
|
|
79
|
+
// field the assertion turned on. `merged` and `state` are different
|
|
80
|
+
// columns, and a citation naming both would offer a reader an absent
|
|
81
|
+
// field as evidence for a verdict that never read it.
|
|
82
|
+
evidenceStatePaths: [childStatePath(found.path, "merged")],
|
|
75
83
|
};
|
|
76
84
|
}
|
|
77
85
|
return {
|
|
78
86
|
passed: pull.state === state,
|
|
79
87
|
reason: `pull request #${pr}: state="${pull.state}" (wanted "${state}")`,
|
|
88
|
+
evidenceStatePaths: [childStatePath(found.path, "state")],
|
|
80
89
|
};
|
|
81
90
|
},
|
|
82
91
|
});
|
|
@@ -149,7 +158,7 @@ export const pullRequestCommentExists = defineCheck({
|
|
|
149
158
|
evaluate({ pr, repo }, { final }) {
|
|
150
159
|
const found = resolvePullRequest(final, repo, pr);
|
|
151
160
|
if ("missing" in found)
|
|
152
|
-
return
|
|
161
|
+
return missOutcome(found);
|
|
153
162
|
// Comments section absent — a snapshot predating PR-comment export. We
|
|
154
163
|
// cannot tell "nobody commented" from "not captured", so safe-skip rather
|
|
155
164
|
// than failing an agent that did comment. An empty array is a real zero and
|
|
@@ -159,6 +168,7 @@ export const pullRequestCommentExists = defineCheck({
|
|
|
159
168
|
passed: false,
|
|
160
169
|
status: "skipped",
|
|
161
170
|
reason: `pull request #${pr} has no comments section in state_final (state_incomplete)`,
|
|
171
|
+
evidenceStatePaths: [found.path],
|
|
162
172
|
};
|
|
163
173
|
}
|
|
164
174
|
const count = found.found.comments.length;
|
|
@@ -170,6 +180,10 @@ export const pullRequestCommentExists = defineCheck({
|
|
|
170
180
|
reason: count > 0
|
|
171
181
|
? `pull request #${pr} has ${count} conversation comment(s)`
|
|
172
182
|
: `pull request #${pr} has no conversation comments (reviews and inline review comments are not counted)`,
|
|
183
|
+
// `comments`, and this pointer is the disambiguation the description
|
|
184
|
+
// spends a paragraph on. Three fields on a PR can be called "a comment";
|
|
185
|
+
// the citation names which one was counted, in a form a reader can open.
|
|
186
|
+
evidenceStatePaths: [childStatePath(found.path, "comments")],
|
|
173
187
|
};
|
|
174
188
|
},
|
|
175
189
|
});
|
|
@@ -196,7 +210,7 @@ export const pullRequestReviewExists = defineCheck({
|
|
|
196
210
|
evaluate({ review, pr, repo }, { final }) {
|
|
197
211
|
const found = resolvePullRequest(final, repo, pr);
|
|
198
212
|
if ("missing" in found)
|
|
199
|
-
return
|
|
213
|
+
return missOutcome(found);
|
|
200
214
|
// Reviews section absent (an older twin snapshot predating review export):
|
|
201
215
|
// we cannot distinguish "no review" from "not captured", so safe-skip
|
|
202
216
|
// rather than vacuously failing a correct agent. An empty array is a real
|
|
@@ -206,6 +220,7 @@ export const pullRequestReviewExists = defineCheck({
|
|
|
206
220
|
passed: false,
|
|
207
221
|
status: "skipped",
|
|
208
222
|
reason: `pull request #${pr} has no reviews section in state_final (state_incomplete)`,
|
|
223
|
+
evidenceStatePaths: [found.path],
|
|
209
224
|
};
|
|
210
225
|
}
|
|
211
226
|
const states = found.found.reviews.map((row) => row.state ?? "");
|
|
@@ -215,6 +230,7 @@ export const pullRequestReviewExists = defineCheck({
|
|
|
215
230
|
reason: passed
|
|
216
231
|
? `pull request #${pr} has a ${review} review`
|
|
217
232
|
: `pull request #${pr} reviews are [${states.join(", ")}], missing a ${review} review`,
|
|
233
|
+
evidenceStatePaths: [childStatePath(found.path, "reviews")],
|
|
218
234
|
};
|
|
219
235
|
},
|
|
220
236
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-pulls.js","sourceRoot":"","sources":["../../src/check-pulls.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-pulls.js","sourceRoot":"","sources":["../../src/check-pulls.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
//
|
|
6
6
|
// Declarations only. The grammar rules they all obey are in `checks.ts`, which
|
|
7
7
|
// assembles them; how the exported tree is read is in `check-state.ts`.
|
|
8
|
-
import { defineCheck, repoRef, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
|
|
8
|
+
import { childStatePath, defineCheck, repoRef, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
|
|
9
9
|
import { commitStatusState, filePath, statusContext } from "./check-params.js";
|
|
10
|
-
import { labelNames, resolveRepo } from "./check-state.js";
|
|
10
|
+
import { labelNames, missOutcome, resolveRepo } from "./check-state.js";
|
|
11
11
|
import { deltaWorld, finalWorld, repoState } from "./check-worlds.js";
|
|
12
12
|
export const noNewLabels = defineCheck({
|
|
13
13
|
id: "github.no-new-labels",
|
|
@@ -53,23 +53,37 @@ export const noNewLabels = defineCheck({
|
|
|
53
53
|
// consumer that forgets gets a named skip rather than a vacuous pass.
|
|
54
54
|
if (seed === null)
|
|
55
55
|
return { passed: false, reason: "seed_missing", status: "skipped" };
|
|
56
|
+
// The SEED-side refusal cites nothing. `missOutcome` carries the pointer the
|
|
57
|
+
// lookup walked, and this one walked the seed — a pointer always addresses
|
|
58
|
+
// `final` (the sdk's `check-state-path.ts` says why), so passing it through
|
|
59
|
+
// would send a reader into the tree the report does not render, at a path
|
|
60
|
+
// that may well resolve to an unrelated repo. The reason still names the miss.
|
|
56
61
|
const seedRepo = resolveRepo(seed, repo, "the seed state");
|
|
57
62
|
if ("missing" in seedRepo)
|
|
58
|
-
return {
|
|
63
|
+
return missOutcome({ ...seedRepo, searched: undefined });
|
|
59
64
|
const finalRepo = resolveRepo(final, repo, "state_final");
|
|
60
65
|
if ("missing" in finalRepo)
|
|
61
|
-
return
|
|
66
|
+
return missOutcome(finalRepo);
|
|
62
67
|
const before = labelNames(seedRepo.found);
|
|
63
68
|
const created = [...labelNames(finalRepo.found)].filter((name) => !before.has(name)).sort();
|
|
69
|
+
// F-1197 — the only seed+final check, and the one that shows why a pointer
|
|
70
|
+
// addresses `final` rather than the substrate the assertion ranges over.
|
|
71
|
+
// The delta is computed from two trees; the reader has ONE on screen. So the
|
|
72
|
+
// citation is the final definition set — the side a reader can look at — and
|
|
73
|
+
// the reason carries the comparison. Pointing into a seed nothing renders
|
|
74
|
+
// would move the dead affordance rather than remove it.
|
|
75
|
+
const definitions = [childStatePath(finalRepo.path, "labels")];
|
|
64
76
|
if (created.length === 0) {
|
|
65
77
|
return {
|
|
66
78
|
passed: true,
|
|
67
79
|
reason: `no labels were created in ${repo} (${before.size} defined at seed, unchanged at finish)`,
|
|
80
|
+
evidenceStatePaths: definitions,
|
|
68
81
|
};
|
|
69
82
|
}
|
|
70
83
|
return {
|
|
71
84
|
passed: false,
|
|
72
85
|
reason: `labels created in ${repo}: ${created.map((name) => `\`${name}\``).join(", ")}`,
|
|
86
|
+
evidenceStatePaths: definitions,
|
|
73
87
|
};
|
|
74
88
|
},
|
|
75
89
|
});
|
|
@@ -93,7 +107,7 @@ export const fileExists = defineCheck({
|
|
|
93
107
|
evaluate({ path, repo }, { final }) {
|
|
94
108
|
const found = resolveRepo(final, repo, "state_final");
|
|
95
109
|
if ("missing" in found)
|
|
96
|
-
return
|
|
110
|
+
return missOutcome(found);
|
|
97
111
|
const files = found.found.files ?? [];
|
|
98
112
|
const passed = files.some((file) => file.path === path);
|
|
99
113
|
return {
|
|
@@ -101,6 +115,7 @@ export const fileExists = defineCheck({
|
|
|
101
115
|
reason: passed
|
|
102
116
|
? `file exists at "${path}" in ${repo}`
|
|
103
117
|
: `no file found at "${path}" in ${repo} (${files.length} file(s) exported)`,
|
|
118
|
+
evidenceStatePaths: [childStatePath(found.path, "files")],
|
|
104
119
|
};
|
|
105
120
|
},
|
|
106
121
|
});
|
|
@@ -136,7 +151,7 @@ export const commitStatus = defineCheck({
|
|
|
136
151
|
evaluate({ context, repo, state }, { final }) {
|
|
137
152
|
const found = resolveRepo(final, repo, "state_final");
|
|
138
153
|
if ("missing" in found)
|
|
139
|
-
return
|
|
154
|
+
return missOutcome(found);
|
|
140
155
|
const candidates = (found.found.commit_statuses ?? []).filter((row) => row.context === context);
|
|
141
156
|
const passed = candidates.some((row) => (row.state ?? "").toLowerCase() === state);
|
|
142
157
|
return {
|
|
@@ -145,6 +160,11 @@ export const commitStatus = defineCheck({
|
|
|
145
160
|
? `commit status "${context}" is "${state}" in ${repo}`
|
|
146
161
|
: `no commit status "${context}" with state "${state}" in ${repo} ` +
|
|
147
162
|
`(found: [${candidates.map((row) => row.state).join(", ")}])`,
|
|
163
|
+
// Every status row, not the filtered candidates. The filter is part of the
|
|
164
|
+
// assertion — "which commit" is explicitly not asserted — and a pointer at
|
|
165
|
+
// a set this check computed rather than a set the tree holds would address
|
|
166
|
+
// nothing a reader could open.
|
|
167
|
+
evidenceStatePaths: [childStatePath(found.path, "commit_statuses")],
|
|
148
168
|
};
|
|
149
169
|
},
|
|
150
170
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-repos.js","sourceRoot":"","sources":["../../src/check-repos.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AAExE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-repos.js","sourceRoot":"","sources":["../../src/check-repos.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CheckOutcome } from "@pome-sh/sdk/checks";
|
|
1
2
|
export interface GitHubCheckStateLabel {
|
|
2
3
|
name?: string;
|
|
3
4
|
}
|
|
@@ -42,13 +43,31 @@ export interface GitHubCheckStateRepo {
|
|
|
42
43
|
export interface GitHubCheckState {
|
|
43
44
|
repositories?: GitHubCheckStateRepo[] | null;
|
|
44
45
|
}
|
|
45
|
-
export declare function findRepo(state: GitHubCheckState, ref: string):
|
|
46
|
+
export declare function findRepo(state: GitHubCheckState, ref: string): {
|
|
47
|
+
repo: GitHubCheckStateRepo;
|
|
48
|
+
index: number;
|
|
49
|
+
} | null;
|
|
46
50
|
export declare function labelNames(repo: GitHubCheckStateRepo): Set<string>;
|
|
47
51
|
export type Resolved<T> = {
|
|
48
52
|
found: T;
|
|
53
|
+
path: string;
|
|
49
54
|
} | {
|
|
50
55
|
missing: string;
|
|
56
|
+
searched?: string;
|
|
51
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* The `failed` outcome a missing entity produces, citing where the lookup
|
|
60
|
+
* looked.
|
|
61
|
+
*
|
|
62
|
+
* One function rather than a conditional spread at every `if ("missing" in …)`
|
|
63
|
+
* site, because the rule it encodes — cite the searched collection, cite nothing
|
|
64
|
+
* when there was none — is one rule, and twelve hand-written copies of it is
|
|
65
|
+
* twelve chances for one to quietly drop the citation.
|
|
66
|
+
*/
|
|
67
|
+
export declare function missOutcome(miss: {
|
|
68
|
+
missing: string;
|
|
69
|
+
searched?: string;
|
|
70
|
+
}): CheckOutcome;
|
|
52
71
|
export declare function resolveRepo(state: GitHubCheckState, ref: string, where: string): Resolved<GitHubCheckStateRepo>;
|
|
53
72
|
export declare function resolveIssue(state: GitHubCheckState, ref: string, number: string): Resolved<GitHubCheckStateIssue>;
|
|
54
73
|
export declare function resolvePullRequest(state: GitHubCheckState, ref: string, number: string): Resolved<GitHubCheckStatePullRequest>;
|
|
@@ -22,16 +22,30 @@
|
|
|
22
22
|
// - `repository.labels` (definitions) and `issue.labels` (applied) are
|
|
23
23
|
// different sets. Confusing them is the defect `github.no-new-labels`'s
|
|
24
24
|
// description exists to prevent.
|
|
25
|
+
//
|
|
26
|
+
// F-1197 — the resolvers below also return the POINTER they walked, so a check
|
|
27
|
+
// can cite where it looked. Nothing else about them changed; the shapes above
|
|
28
|
+
// are still the only thing that decides how the tree is read.
|
|
29
|
+
import { childStatePath, statePath } from "@pome-sh/sdk/checks";
|
|
25
30
|
// `ref` is always `owner/name` — the `repoRef` param type will not parse
|
|
26
31
|
// anything else — so there is deliberately no bare-name branch here. The
|
|
27
32
|
// owner/name fallback is for a state export that somehow omits `full_name`,
|
|
28
33
|
// not for a bare-name reference, which cannot reach this function.
|
|
34
|
+
//
|
|
35
|
+
// F-1197 — it returns the INDEX beside the row. The index is not decoration: a
|
|
36
|
+
// check cites where it looked as a JSON Pointer, and a pointer into an array
|
|
37
|
+
// needs the position the walk actually stopped at. Computing it here, in the
|
|
38
|
+
// same loop that decides which repo matched, is what keeps the citation and the
|
|
39
|
+
// verdict describing the same row — a second `findIndex` at the call site would
|
|
40
|
+
// be a second copy of the `full_name` / `owner+name` fallback, free to drift.
|
|
29
41
|
export function findRepo(state, ref) {
|
|
30
|
-
|
|
42
|
+
const repositories = state.repositories ?? [];
|
|
43
|
+
for (const [index, repo] of repositories.entries()) {
|
|
31
44
|
if (repo.full_name === ref)
|
|
32
|
-
return repo;
|
|
33
|
-
if (repo.owner != null && repo.name != null && `${repo.owner}/${repo.name}` === ref)
|
|
34
|
-
return repo;
|
|
45
|
+
return { repo, index };
|
|
46
|
+
if (repo.owner != null && repo.name != null && `${repo.owner}/${repo.name}` === ref) {
|
|
47
|
+
return { repo, index };
|
|
48
|
+
}
|
|
35
49
|
}
|
|
36
50
|
return null;
|
|
37
51
|
}
|
|
@@ -43,23 +57,61 @@ export function labelNames(repo) {
|
|
|
43
57
|
}
|
|
44
58
|
return names;
|
|
45
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The `failed` outcome a missing entity produces, citing where the lookup
|
|
62
|
+
* looked.
|
|
63
|
+
*
|
|
64
|
+
* One function rather than a conditional spread at every `if ("missing" in …)`
|
|
65
|
+
* site, because the rule it encodes — cite the searched collection, cite nothing
|
|
66
|
+
* when there was none — is one rule, and twelve hand-written copies of it is
|
|
67
|
+
* twelve chances for one to quietly drop the citation.
|
|
68
|
+
*/
|
|
69
|
+
export function missOutcome(miss) {
|
|
70
|
+
if (miss.searched === undefined)
|
|
71
|
+
return { passed: false, reason: miss.missing };
|
|
72
|
+
return { passed: false, reason: miss.missing, evidenceStatePaths: [miss.searched] };
|
|
73
|
+
}
|
|
46
74
|
export function resolveRepo(state, ref, where) {
|
|
47
|
-
const
|
|
48
|
-
|
|
75
|
+
const hit = findRepo(state, ref);
|
|
76
|
+
if (hit)
|
|
77
|
+
return { found: hit.repo, path: statePath("repositories", hit.index) };
|
|
78
|
+
return {
|
|
79
|
+
missing: `repo ${ref} not found in ${where}`,
|
|
80
|
+
// `undefined` — the key absent from the export — is the only case with
|
|
81
|
+
// nothing to point at. A `null` repository list is a citable fact: it says
|
|
82
|
+
// the export carried the field and it was empty.
|
|
83
|
+
searched: state.repositories === undefined ? undefined : statePath("repositories"),
|
|
84
|
+
};
|
|
49
85
|
}
|
|
50
86
|
export function resolveIssue(state, ref, number) {
|
|
51
87
|
const repo = resolveRepo(state, ref, "state_final");
|
|
52
88
|
if ("missing" in repo)
|
|
53
89
|
return repo;
|
|
54
|
-
const
|
|
55
|
-
|
|
90
|
+
const issues = repo.found.issues ?? [];
|
|
91
|
+
const index = issues.findIndex((candidate) => candidate.number === Number(number));
|
|
92
|
+
if (index >= 0) {
|
|
93
|
+
return { found: issues[index], path: childStatePath(repo.path, "issues", index) };
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
missing: `issue #${number} not found in ${ref}`,
|
|
97
|
+
searched: repo.found.issues === undefined ? undefined : childStatePath(repo.path, "issues"),
|
|
98
|
+
};
|
|
56
99
|
}
|
|
57
100
|
export function resolvePullRequest(state, ref, number) {
|
|
58
101
|
const repo = resolveRepo(state, ref, "state_final");
|
|
59
102
|
if ("missing" in repo)
|
|
60
103
|
return repo;
|
|
61
|
-
const
|
|
62
|
-
|
|
104
|
+
const pulls = repo.found.pull_requests ?? [];
|
|
105
|
+
const index = pulls.findIndex((candidate) => candidate.number === Number(number));
|
|
106
|
+
if (index >= 0) {
|
|
107
|
+
return { found: pulls[index], path: childStatePath(repo.path, "pull_requests", index) };
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
missing: `pull request #${number} not found in ${ref}`,
|
|
111
|
+
searched: repo.found.pull_requests === undefined
|
|
112
|
+
? undefined
|
|
113
|
+
: childStatePath(repo.path, "pull_requests"),
|
|
114
|
+
};
|
|
63
115
|
}
|
|
64
116
|
export function isMerged(pull) {
|
|
65
117
|
return pull.merged === 1 || pull.merged === true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,gEAAgE;AAChE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,sDAAsD;AACtD,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,yEAAyE;AACzE,EAAE;AACF,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAC7E,sEAAsE;AACtE,yEAAyE;AACzE,4EAA4E;AAC5E,qCAAqC;
|
|
1
|
+
{"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pome-sh/twin-github",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Deterministic GitHub-shaped twin for agent testing — REST + MCP, SQLite-backed state.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@hono/node-server": "^2.0.10",
|
|
37
|
-
"@pome-sh/sdk": "0.
|
|
38
|
-
"@pome-sh/shared-types": "0.
|
|
37
|
+
"@pome-sh/sdk": "0.11.0",
|
|
38
|
+
"@pome-sh/shared-types": "0.14.0",
|
|
39
39
|
"hono": "^4.12.31",
|
|
40
40
|
"zod": "^4.1.13"
|
|
41
41
|
},
|