@pome-sh/cli 0.15.0 → 0.17.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/cli/checks-add.d.ts +2 -7
- package/dist/src/cli/checks-add.js +10 -24
- package/dist/src/cli/checks.d.ts +3 -2
- package/dist/src/cli/checks.js +22 -9
- package/dist/src/cli/vocabulary-skew.d.ts +64 -0
- package/dist/src/cli/vocabulary-skew.js +187 -0
- package/dist/src/twin/githubCloneAdapter.d.ts +1 -0
- package/node_modules/@pome-sh/twin-github/FIDELITY.md +14 -0
- package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.d.ts +4 -0
- package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js +93 -0
- 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-state.d.ts +1 -0
- package/node_modules/@pome-sh/twin-github/dist/src/check-state.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +3 -0
- package/node_modules/@pome-sh/twin-github/dist/src/checks.js +2 -1
- package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/db.js +46 -4
- package/node_modules/@pome-sh/twin-github/dist/src/db.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.d.ts +3 -0
- package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.js +49 -1
- package/node_modules/@pome-sh/twin-github/dist/src/domain/github-domain.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.js +15 -5
- package/node_modules/@pome-sh/twin-github/dist/src/domain/issues.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/serializers.d.ts +1 -1
- package/node_modules/@pome-sh/twin-github/dist/src/serializers.js +8 -2
- package/node_modules/@pome-sh/twin-github/dist/src/serializers.js.map +1 -1
- package/node_modules/@pome-sh/twin-github/package.json +1 -1
- package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +142 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.d.ts +10 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js +117 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.d.ts +25 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js +211 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-kind.d.ts +3 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-kind.js +9 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-kind.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-params.d.ts +8 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-params.js +94 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-params.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.d.ts +98 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js +131 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-tape.d.ts +2 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-tape.js +100 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-tape.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-worlds.d.ts +44 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-worlds.js +93 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/check-worlds.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/checks.d.ts +29 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/checks.js +52 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/checks.js.map +1 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/db.d.ts +6 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/db.js +53 -4
- package/node_modules/@pome-sh/twin-linear/dist/src/db.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/agents.d.ts +16 -13
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/agents.js +16 -12
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/agents.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/comments.js +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/comments.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/documents.js +8 -8
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/documents.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/issues.js +20 -17
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/issues.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/labels.js +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/labels.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/linear-domain.d.ts +4 -17
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/linear-domain.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/normalize.d.ts +12 -2
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/normalize.js +28 -5
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/normalize.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/projects-cycles.js +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/projects-cycles.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/rows.d.ts +3 -3
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/rows.js +4 -3
- package/node_modules/@pome-sh/twin-linear/dist/src/domain/rows.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/formatters.js +3 -3
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/formatters.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/mutation-inputs.d.ts +30 -12
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/mutation-inputs.js +33 -28
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/mutation-inputs.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/resolvers.js +2 -2
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/resolvers.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/schema.js +31 -13
- package/node_modules/@pome-sh/twin-linear/dist/src/graphql/schema.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/index.d.ts +2 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/index.js +7 -0
- package/node_modules/@pome-sh/twin-linear/dist/src/index.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/state.js +4 -4
- package/node_modules/@pome-sh/twin-linear/dist/src/state.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/dist/src/types.d.ts +10 -4
- package/node_modules/@pome-sh/twin-linear/dist/src/types.js.map +1 -1
- package/node_modules/@pome-sh/twin-linear/fixtures/README.md +1 -0
- package/node_modules/@pome-sh/twin-linear/fixtures/linear-introspection.json +66 -0
- package/node_modules/@pome-sh/twin-linear/package.json +2 -1
- package/node_modules/@pome-sh/twin-stripe/FIDELITY.md +8 -0
- package/node_modules/@pome-sh/twin-stripe/dist/src/idempotency.d.ts +23 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/idempotency.js +40 -6
- package/node_modules/@pome-sh/twin-stripe/dist/src/idempotency.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.js +5 -0
- package/node_modules/@pome-sh/twin-stripe/dist/src/routes/_helpers.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/twin.js +7 -1
- package/node_modules/@pome-sh/twin-stripe/dist/src/twin.js.map +1 -1
- package/node_modules/@pome-sh/twin-stripe/package.json +1 -1
- package/package.json +4 -4
- package/tasks/14-stripe-refund-retry.md +17 -14
- package/tasks/24-linear-issue-triage.md +2 -2
- package/tasks/25-linear-comment-label-triage.md +3 -3
- package/tasks/26-github-linear-handoff.md +3 -4
package/dist/build-info.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": "pome-sh",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"git_sha": "
|
|
5
|
-
"build_time": "2026-
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"git_sha": "46758262874f65435e8bfcff58f3881be4f731ca",
|
|
5
|
+
"build_time": "2026-08-03T08:56:27.021Z"
|
|
6
6
|
}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import { type InteractiveSeams } from "./agent-resolver.js";
|
|
2
|
-
|
|
2
|
+
import { type RemoteVocabulary } from "./vocabulary-skew.js";
|
|
3
|
+
export interface RemoteChecks extends RemoteVocabulary {
|
|
3
4
|
twin: string;
|
|
4
|
-
digest: string;
|
|
5
|
-
checks: Array<{
|
|
6
|
-
id: string;
|
|
7
|
-
template: string;
|
|
8
|
-
substrate: string;
|
|
9
|
-
}>;
|
|
10
5
|
}
|
|
11
6
|
export type HandshakeResult = {
|
|
12
7
|
kind: "match";
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* the cloud resolves them from a different one. Before writing, ask the cloud
|
|
9
9
|
* for the vocabulary it GRADES against and compare digests.
|
|
10
10
|
* equal → write, silently
|
|
11
|
-
* different → REFUSE, and name
|
|
11
|
+
* different → REFUSE, and name what moved (`vocabulary-skew.ts`, F-1137 —
|
|
12
|
+
* a check, a field of one, or the sdk that compiled it, but
|
|
13
|
+
* never an empty list)
|
|
12
14
|
* unreachable → write from the local pin with a named note on stderr
|
|
13
15
|
* Offline authoring is real, and the degraded path's worst case is bounded: a
|
|
14
16
|
* stale sentence that keeps a template's literal segments fails at finalize as
|
|
@@ -22,6 +24,7 @@ import { resolveSeams } from "./agent-resolver.js";
|
|
|
22
24
|
import { SUBSTRATE_HELP, checksFor, displaySentence, findCheck, localDigest, pinnedVersion, twinOf, } from "./checks.js";
|
|
23
25
|
import { resolveCredentials } from "./credentials.js";
|
|
24
26
|
import { auditCodeCriteria, formatBindingReport } from "./criterion-binding.js";
|
|
27
|
+
import { explainSkew, formatSkewRefusal } from "./vocabulary-skew.js";
|
|
25
28
|
export function parseArgFlags(pairs) {
|
|
26
29
|
const args = {};
|
|
27
30
|
for (const pair of pairs) {
|
|
@@ -47,29 +50,12 @@ export async function handshake(twin, fetchRemote) {
|
|
|
47
50
|
}
|
|
48
51
|
if (localDigest(twin) === remote.digest)
|
|
49
52
|
return { kind: "match" };
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
else if (there.get(id) !== template) {
|
|
57
|
-
moved.push(`${id} — the sentence differs\n here: ${template}\n cloud: ${there.get(id)}`);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
for (const id of there.keys()) {
|
|
61
|
-
if (!here.has(id))
|
|
62
|
-
moved.push(`${id} — the cloud has it, this CLI does not`);
|
|
63
|
-
}
|
|
64
|
-
return {
|
|
65
|
-
kind: "skew",
|
|
66
|
-
message: `Refusing to write: this CLI and the cloud disagree about ${twin}'s vocabulary, so a ` +
|
|
67
|
-
`sentence written here might not be graded there.\n` +
|
|
68
|
-
moved.map((line) => ` - ${line}`).join("\n") +
|
|
69
|
-
`\n\n local @pome-sh/twin-${twin} ${pin}` +
|
|
70
|
-
`\n Update with \`npm i -g @pome-sh/cli@latest\`. If this CLI is already current, the ` +
|
|
71
|
-
`cloud is behind — that is a deploy, not something you can fix here.`,
|
|
72
|
-
};
|
|
53
|
+
// F-1137 — the taxonomy lives in `vocabulary-skew.ts` and is NON-EMPTY by
|
|
54
|
+
// construction, so this refusal cannot name the disagreement and then list
|
|
55
|
+
// nothing. Which is what it did whenever the skew was in `substrate` or in the
|
|
56
|
+
// compiled pattern: the two fields `checksDigest` hashes that the old
|
|
57
|
+
// id-and-template diff never looked at.
|
|
58
|
+
return { kind: "skew", message: formatSkewRefusal(twin, explainSkew(twin, remote)) };
|
|
73
59
|
}
|
|
74
60
|
async function liveFetch(creds, twin) {
|
|
75
61
|
const res = await fetch(`${creds.apiBaseUrl}/v1/checks?twin=${encodeURIComponent(twin)}`, {
|
package/dist/src/cli/checks.d.ts
CHANGED
|
@@ -11,8 +11,9 @@ export declare function twinsWithChecks(): string[];
|
|
|
11
11
|
* assert the behaviour, which is the same defect F-1075 hit with a hard-coded
|
|
12
12
|
* picker index.
|
|
13
13
|
*
|
|
14
|
-
* A3 empties this list
|
|
15
|
-
*
|
|
14
|
+
* A3 empties this list, and F-1129 answered the question that raised: the PATH
|
|
15
|
+
* stays, the LITERAL goes. It is now `MOUNTED_TWINS` minus the registry, so an
|
|
16
|
+
* empty result is a fact about the world rather than a list nobody updated.
|
|
16
17
|
*/
|
|
17
18
|
export declare function twinsWithoutChecks(): string[];
|
|
18
19
|
export declare function checksFor(twin: string): readonly DeclaredCheck[];
|
package/dist/src/cli/checks.js
CHANGED
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
import { readFileSync } from "node:fs";
|
|
12
12
|
import { join } from "node:path";
|
|
13
13
|
import { checksDigest, templateSlots } from "@pome-sh/sdk/checks";
|
|
14
|
+
import { MOUNTED_TWINS } from "@pome-sh/shared-types";
|
|
14
15
|
import { GITHUB_CHECKS } from "@pome-sh/twin-github/checks";
|
|
15
16
|
import { GMAIL_CHECKS } from "@pome-sh/twin-gmail/checks";
|
|
17
|
+
import { LINEAR_CHECKS } from "@pome-sh/twin-linear/checks";
|
|
16
18
|
import { SLACK_CHECKS } from "@pome-sh/twin-slack/checks";
|
|
17
19
|
import { STRIPE_CHECKS } from "@pome-sh/twin-stripe/checks";
|
|
18
20
|
import { resolvePackageRoot } from "./resolve-package-root.js";
|
|
@@ -21,15 +23,25 @@ const REGISTRIES = {
|
|
|
21
23
|
slack: SLACK_CHECKS,
|
|
22
24
|
stripe: STRIPE_CHECKS,
|
|
23
25
|
gmail: GMAIL_CHECKS,
|
|
26
|
+
linear: LINEAR_CHECKS,
|
|
24
27
|
};
|
|
25
|
-
// Twins that EXIST but declare nothing yet
|
|
26
|
-
// linear` answers "not migrated yet" instead of "no such twin" — a typo and an
|
|
27
|
-
// empty vocabulary are different facts. F-1126 removed slack; F-1127 removed
|
|
28
|
-
// stripe; F-1128 removed gmail, which is the first twin whose migration needed
|
|
29
|
-
// a seed loader in pome-cloud before its vocabulary could grade anything.
|
|
28
|
+
// Twins that EXIST but declare nothing yet — DERIVED, not listed.
|
|
30
29
|
//
|
|
31
|
-
//
|
|
32
|
-
|
|
30
|
+
// The distinction is still real: `pome checks <twin>` must answer "not migrated
|
|
31
|
+
// yet" for a twin that exists, and "no such twin" for a typo. What is no longer
|
|
32
|
+
// real is the hand-maintained literal. F-1126 removed slack from it, F-1127
|
|
33
|
+
// stripe, F-1128 gmail, and F-1129 would have emptied it — four tickets each
|
|
34
|
+
// editing one line of a list that `MOUNTED_TWINS` already knows.
|
|
35
|
+
//
|
|
36
|
+
// So it is a set difference instead. Today it is EMPTY, which is A3's whole
|
|
37
|
+
// acceptance criterion. The day a sixth twin mounts, it repopulates itself and
|
|
38
|
+
// the "not migrated yet" path comes back live without anyone remembering to add
|
|
39
|
+
// a literal — which is the failure this project is named for, one level down.
|
|
40
|
+
// Annotated `string[]` on purpose: `MOUNTED_TWINS` is a literal-union tuple, so
|
|
41
|
+
// the filtered result keeps that union and `isKnownTwin` cannot ask it about an
|
|
42
|
+
// arbitrary string. Widening here is what keeps the caller's question — "is this
|
|
43
|
+
// user-typed word a twin?" — expressible.
|
|
44
|
+
const TWINS_WITHOUT_CHECKS = MOUNTED_TWINS.filter((twin) => !(twin in REGISTRIES));
|
|
33
45
|
export function twinsWithChecks() {
|
|
34
46
|
return Object.keys(REGISTRIES).sort();
|
|
35
47
|
}
|
|
@@ -43,8 +55,9 @@ export function twinsWithChecks() {
|
|
|
43
55
|
* assert the behaviour, which is the same defect F-1075 hit with a hard-coded
|
|
44
56
|
* picker index.
|
|
45
57
|
*
|
|
46
|
-
* A3 empties this list
|
|
47
|
-
*
|
|
58
|
+
* A3 empties this list, and F-1129 answered the question that raised: the PATH
|
|
59
|
+
* stays, the LITERAL goes. It is now `MOUNTED_TWINS` minus the registry, so an
|
|
60
|
+
* empty result is a fact about the world rather than a list nobody updated.
|
|
48
61
|
*/
|
|
49
62
|
export function twinsWithoutChecks() {
|
|
50
63
|
return [...TWINS_WITHOUT_CHECKS];
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** One check as `GET /v1/checks` publishes it. */
|
|
2
|
+
export interface RemoteCheck {
|
|
3
|
+
id: string;
|
|
4
|
+
template: string;
|
|
5
|
+
substrate: string;
|
|
6
|
+
/** The compiled regex source. Optional because a control plane that does not
|
|
7
|
+
* publish it must degrade to a named class, never to a crash or to silence. */
|
|
8
|
+
pattern?: string;
|
|
9
|
+
/** Ordered as the template names them — the compiled pattern wraps one group
|
|
10
|
+
* per slot in that order, so the ORDER is part of what the digest sees. */
|
|
11
|
+
params?: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
pattern: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export interface RemoteVocabulary {
|
|
17
|
+
digest: string;
|
|
18
|
+
checks: RemoteCheck[];
|
|
19
|
+
}
|
|
20
|
+
export type SkewFinding = {
|
|
21
|
+
kind: "only_here";
|
|
22
|
+
check: string;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "only_there";
|
|
25
|
+
check: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: "template";
|
|
28
|
+
check: string;
|
|
29
|
+
here: string;
|
|
30
|
+
there: string;
|
|
31
|
+
} | {
|
|
32
|
+
kind: "substrate";
|
|
33
|
+
check: string;
|
|
34
|
+
here: string;
|
|
35
|
+
there: string;
|
|
36
|
+
} | {
|
|
37
|
+
kind: "params";
|
|
38
|
+
check: string;
|
|
39
|
+
here: string;
|
|
40
|
+
there: string;
|
|
41
|
+
} | {
|
|
42
|
+
kind: "pattern";
|
|
43
|
+
check: string;
|
|
44
|
+
here: string;
|
|
45
|
+
there: string;
|
|
46
|
+
paramsCompared: boolean;
|
|
47
|
+
} | {
|
|
48
|
+
kind: "pattern_generation";
|
|
49
|
+
check: null;
|
|
50
|
+
here: string;
|
|
51
|
+
there: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Every way this CLI's vocabulary for `twin` differs from the one the cloud
|
|
55
|
+
* published, as at least one named finding.
|
|
56
|
+
*
|
|
57
|
+
* Ordered by check id, so the readout is a property of the difference rather
|
|
58
|
+
* than of either side's declaration order.
|
|
59
|
+
*/
|
|
60
|
+
export declare function explainSkew(twin: string, remote: RemoteVocabulary): [SkewFinding, ...SkewFinding[]];
|
|
61
|
+
/** The refusal an author reads. Names the twin pin always, and the sdk pin only
|
|
62
|
+
* when the sdk is what the findings implicate — a pin nobody needs is noise in a
|
|
63
|
+
* message someone is reading because they are already blocked. */
|
|
64
|
+
export declare function formatSkewRefusal(twin: string, findings: readonly SkewFinding[]): string;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* F-1137 — WHY do this CLI and the cloud disagree about a twin's vocabulary?
|
|
4
|
+
*
|
|
5
|
+
* `checksDigest` hashes three fields per check: `id`, `substrate`, and the
|
|
6
|
+
* COMPILED pattern (`packages/sdk/src/checks.ts`). The refusal in `checks-add.ts`
|
|
7
|
+
* used to build its "which check moved" list from `id` and `template` — so a skew
|
|
8
|
+
* that moved only `substrate`, or only `buildPattern`'s output while every
|
|
9
|
+
* template was byte-identical, refused correctly and then named NOTHING. A named
|
|
10
|
+
* refusal that names nothing, in exactly the two cases the digest was widened to
|
|
11
|
+
* catch, during a situation that already blocks the author.
|
|
12
|
+
*
|
|
13
|
+
* The fix is a taxonomy with no silent branch: `explainSkew` returns a NON-EMPTY
|
|
14
|
+
* list by construction, and the type says so. The class names are pome-cloud's
|
|
15
|
+
* (`apps/control-plane/src/services/vocabulary-parity.ts`, F-1136) so the two
|
|
16
|
+
* surfaces that explain the same disagreement stay greppable against each other.
|
|
17
|
+
*
|
|
18
|
+
* This side can say more than the cloud-side monitor can. `GET /v1/checks`
|
|
19
|
+
* publishes the compiled `pattern` and the parameter patterns (F-1074 Phase 3),
|
|
20
|
+
* which the CLI's own `checks --json` does not — so a generator-only skew is
|
|
21
|
+
* localisable to a check HERE, and only falls back to the unlocalised
|
|
22
|
+
* `pattern_generation` class when the control plane published nothing to diff.
|
|
23
|
+
*
|
|
24
|
+
* `description` and `params[].example` are compared by nothing here on purpose:
|
|
25
|
+
* `checksDigest` does not hash them, so a difference in either cannot be what
|
|
26
|
+
* moved the digest, and comparing them could only manufacture false findings.
|
|
27
|
+
*/
|
|
28
|
+
import { checkPattern, templateSlots } from "@pome-sh/sdk/checks";
|
|
29
|
+
import { checksFor, localDigest, pinnedVersion } from "./checks.js";
|
|
30
|
+
function paramsHere(def) {
|
|
31
|
+
return templateSlots(def.template)
|
|
32
|
+
.params.map((name) => `${name}=${def.params[name].pattern}`)
|
|
33
|
+
.join(", ");
|
|
34
|
+
}
|
|
35
|
+
function paramsThere(check) {
|
|
36
|
+
return (check.params ?? []).map((p) => `${p.name}=${p.pattern}`).join(", ");
|
|
37
|
+
}
|
|
38
|
+
/** The fields BOTH sides always publish. Returns empty when the declarations
|
|
39
|
+
* agree — which is the precondition for reading anything into the compiled
|
|
40
|
+
* pattern, since a moved template moves the pattern too and reporting both
|
|
41
|
+
* would bury the cause under its own consequence. */
|
|
42
|
+
function declarationSkew(def, check) {
|
|
43
|
+
const findings = [];
|
|
44
|
+
if (def.template !== check.template) {
|
|
45
|
+
findings.push({ kind: "template", check: def.id, here: def.template, there: check.template });
|
|
46
|
+
}
|
|
47
|
+
if (def.substrate !== check.substrate) {
|
|
48
|
+
findings.push({
|
|
49
|
+
kind: "substrate",
|
|
50
|
+
check: def.id,
|
|
51
|
+
here: def.substrate,
|
|
52
|
+
there: check.substrate,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (check.params !== undefined && paramsHere(def) !== paramsThere(check)) {
|
|
56
|
+
findings.push({
|
|
57
|
+
kind: "params",
|
|
58
|
+
check: def.id,
|
|
59
|
+
here: paramsHere(def),
|
|
60
|
+
there: paramsThere(check),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return findings;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Every way this CLI's vocabulary for `twin` differs from the one the cloud
|
|
67
|
+
* published, as at least one named finding.
|
|
68
|
+
*
|
|
69
|
+
* Ordered by check id, so the readout is a property of the difference rather
|
|
70
|
+
* than of either side's declaration order.
|
|
71
|
+
*/
|
|
72
|
+
export function explainSkew(twin, remote) {
|
|
73
|
+
const here = new Map(checksFor(twin).map((def) => [def.id, def]));
|
|
74
|
+
const there = new Map(remote.checks.map((check) => [check.id, check]));
|
|
75
|
+
const findings = [];
|
|
76
|
+
for (const id of [...new Set([...here.keys(), ...there.keys()])].sort()) {
|
|
77
|
+
const def = here.get(id);
|
|
78
|
+
const check = there.get(id);
|
|
79
|
+
if (!check) {
|
|
80
|
+
findings.push({ kind: "only_here", check: id });
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (!def) {
|
|
84
|
+
findings.push({ kind: "only_there", check: id });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const declaration = declarationSkew(def, check);
|
|
88
|
+
if (declaration.length > 0) {
|
|
89
|
+
findings.push(...declaration);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const compiled = checkPattern(def).source;
|
|
93
|
+
if (check.pattern !== undefined && check.pattern !== compiled) {
|
|
94
|
+
findings.push({
|
|
95
|
+
kind: "pattern",
|
|
96
|
+
check: id,
|
|
97
|
+
here: compiled,
|
|
98
|
+
there: check.pattern,
|
|
99
|
+
paramsCompared: check.params !== undefined,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const [first, ...rest] = findings;
|
|
104
|
+
if (!first) {
|
|
105
|
+
return [
|
|
106
|
+
{
|
|
107
|
+
kind: "pattern_generation",
|
|
108
|
+
check: null,
|
|
109
|
+
here: localDigest(twin),
|
|
110
|
+
there: remote.digest,
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
}
|
|
114
|
+
return [first, ...rest];
|
|
115
|
+
}
|
|
116
|
+
function pair(here, there) {
|
|
117
|
+
return [` here: ${here}`, ` cloud: ${there}`];
|
|
118
|
+
}
|
|
119
|
+
// One bullet per class, and the compiler holds the line: the annotated return
|
|
120
|
+
// type plus an exhaustive switch means a class added without a bullet is
|
|
121
|
+
// `error TS2366`, not a line that renders `undefined`. Do NOT add a `default:` —
|
|
122
|
+
// it would buy back the silence this module exists to remove.
|
|
123
|
+
function bullet(finding) {
|
|
124
|
+
switch (finding.kind) {
|
|
125
|
+
case "only_here":
|
|
126
|
+
return [` - ${finding.check} — this CLI has it, the cloud does not`];
|
|
127
|
+
case "only_there":
|
|
128
|
+
return [` - ${finding.check} — the cloud has it, this CLI does not`];
|
|
129
|
+
case "template":
|
|
130
|
+
return [
|
|
131
|
+
` - ${finding.check} — the sentence differs`,
|
|
132
|
+
...pair(finding.here, finding.there),
|
|
133
|
+
];
|
|
134
|
+
case "substrate":
|
|
135
|
+
return [
|
|
136
|
+
` - ${finding.check} — the substrate differs, so the two sides grade it against`,
|
|
137
|
+
` different evidence`,
|
|
138
|
+
...pair(finding.here, finding.there),
|
|
139
|
+
];
|
|
140
|
+
case "params":
|
|
141
|
+
return [
|
|
142
|
+
` - ${finding.check} — the parameters differ`,
|
|
143
|
+
...pair(`[${finding.here}]`, `[${finding.there}]`),
|
|
144
|
+
];
|
|
145
|
+
case "pattern":
|
|
146
|
+
return [
|
|
147
|
+
...(finding.paramsCompared
|
|
148
|
+
? [
|
|
149
|
+
` - ${finding.check} — same sentence and parameters, different compiled`,
|
|
150
|
+
` pattern: the two sides' @pome-sh/sdk compile one declaration differently,`,
|
|
151
|
+
` which is a buildPattern change and not a vocabulary change`,
|
|
152
|
+
]
|
|
153
|
+
: [
|
|
154
|
+
` - ${finding.check} — same sentence, different compiled pattern, and no`,
|
|
155
|
+
` parameter patterns published: either a parameter type or @pome-sh/sdk`,
|
|
156
|
+
` buildPattern moved`,
|
|
157
|
+
]),
|
|
158
|
+
...pair(finding.here, finding.there),
|
|
159
|
+
];
|
|
160
|
+
case "pattern_generation":
|
|
161
|
+
return [
|
|
162
|
+
` - the digests differ, but every field the cloud published matches this CLI's`,
|
|
163
|
+
` declarations. That makes it an @pome-sh/sdk difference — buildPattern, or what`,
|
|
164
|
+
` checksDigest hashes — rather than a vocabulary change`,
|
|
165
|
+
...pair(finding.here, finding.there),
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/** The refusal an author reads. Names the twin pin always, and the sdk pin only
|
|
170
|
+
* when the sdk is what the findings implicate — a pin nobody needs is noise in a
|
|
171
|
+
* message someone is reading because they are already blocked. */
|
|
172
|
+
export function formatSkewRefusal(twin, findings) {
|
|
173
|
+
const sdkImplicated = findings.some((f) => f.kind === "pattern" || f.kind === "pattern_generation");
|
|
174
|
+
return [
|
|
175
|
+
`Refusing to write: this CLI and the cloud disagree about ${twin}'s vocabulary, so a ` +
|
|
176
|
+
`sentence written here might not be graded there.`,
|
|
177
|
+
...findings.flatMap(bullet),
|
|
178
|
+
"",
|
|
179
|
+
` local @pome-sh/twin-${twin} ${pinnedVersion(`@pome-sh/twin-${twin}`)}` +
|
|
180
|
+
(sdkImplicated ? `, @pome-sh/sdk ${pinnedVersion("@pome-sh/sdk")}` : ""),
|
|
181
|
+
...(sdkImplicated
|
|
182
|
+
? [` The cloud publishes no sdk version here, so that is the only pin this CLI can name.`]
|
|
183
|
+
: []),
|
|
184
|
+
` Update with \`npm i -g @pome-sh/cli@latest\`. If this CLI is already current, the ` +
|
|
185
|
+
`cloud is behind — that is a deploy, not something you can fix here.`,
|
|
186
|
+
].join("\n");
|
|
187
|
+
}
|
|
@@ -287,6 +287,20 @@ upstream so a divergence that upstream "heals" becomes a tier-upgrade signal.
|
|
|
287
287
|
out of scope, but the array-aware oracle (FDRS-455) now SEES the item-count
|
|
288
288
|
divergence: registered as accepted on the collection root so this L1 read surface is
|
|
289
289
|
INFO, not drift, and flagged as a genuine twin-fidelity gap for follow-up.
|
|
290
|
+
|
|
291
|
+
**Narrowed by F-1151: the COMMENT routes now honour the rule.**
|
|
292
|
+
`GET|POST /repos/:o/:r/issues/:number/comments` accept a pull-request number, which is
|
|
293
|
+
how real GitHub documents commenting on a PR's conversation. Until F-1151 they did
|
|
294
|
+
not — `issue_comments` carried a foreign key to `issues(repo_id, number)` and a PR has
|
|
295
|
+
no row there, so every PR comment failed the constraint and the route answered
|
|
296
|
+
`404 Issue not found`. That was this bullet's write-side face, and it was recorded
|
|
297
|
+
nowhere: the matrix listed the route as `hot`/`semantic` with no caveat, and the only
|
|
298
|
+
comment tool the bundled `pr-summary-*` examples expose 404'd on every run. What
|
|
299
|
+
remains open is the READ half above — the `/issues` COLLECTION still lists issues
|
|
300
|
+
only, and PRs still carry no `pull_request` member — so the divergence stands and
|
|
301
|
+
keeps its registry entry. The number space was never the obstacle: `nextNumber()`
|
|
302
|
+
already draws issue and PR numbers from one per-repo counter, so a number names one
|
|
303
|
+
entity or the other, never both.
|
|
290
304
|
17. **Issue `assignees`/`labels` arrays reflect the controlled-sandbox seed, not real GitHub.**
|
|
291
305
|
The plural `assignees` and the `labels` arrays are non-empty on the twin (its seeded
|
|
292
306
|
fictional assignee/label) but empty on real GitHub for the seeded sandbox — the same
|
|
@@ -4,6 +4,10 @@ export declare const pullRequestStateCheck: Check<{
|
|
|
4
4
|
repo: string;
|
|
5
5
|
state: string;
|
|
6
6
|
}>;
|
|
7
|
+
export declare const pullRequestCommentExists: Check<{
|
|
8
|
+
pr: string;
|
|
9
|
+
repo: string;
|
|
10
|
+
}>;
|
|
7
11
|
export declare const pullRequestReviewExists: Check<{
|
|
8
12
|
review: string;
|
|
9
13
|
pr: string;
|
|
@@ -80,6 +80,99 @@ export const pullRequestStateCheck = defineCheck({
|
|
|
80
80
|
};
|
|
81
81
|
},
|
|
82
82
|
});
|
|
83
|
+
// F-1151 — the fourteenth declaration, and the one whose whole difficulty was
|
|
84
|
+
// deciding WHICH question it answers.
|
|
85
|
+
//
|
|
86
|
+
// Three things on a pull request can be called "a comment", the twin exports all
|
|
87
|
+
// three separately, and F-1075 declined to bind this sentence rather than guess
|
|
88
|
+
// between them:
|
|
89
|
+
//
|
|
90
|
+
// 1. a CONVERSATION comment — `pull_requests[].comments[]` ← this check
|
|
91
|
+
// 2. a REVIEW BODY — `pull_requests[].reviews[].body`
|
|
92
|
+
// 3. an INLINE REVIEW COMMENT — `pull_requests[].review_comments[]`
|
|
93
|
+
//
|
|
94
|
+
// Reading 1, for three reasons that agree. It is what GitHub itself means by a
|
|
95
|
+
// comment on a pull request: its API routes these through the Issue Comments
|
|
96
|
+
// endpoints and names the other two "review comments" and "a review". It is what
|
|
97
|
+
// a summarising agent produces — the `pr-summary-*` tasks that ship these six
|
|
98
|
+
// criteria post a summary to the conversation, they do not open a review to carry
|
|
99
|
+
// it. And it is the only reading whose sentence needs no qualifier: the other two
|
|
100
|
+
// have to say "review" out loud to be true, so they belong in templates that do.
|
|
101
|
+
//
|
|
102
|
+
// The other two are NOT covered here and are not silently folded in. Reading 2
|
|
103
|
+
// already has a neighbour — `github.pr-review-exists` with `COMMENTED` asserts a
|
|
104
|
+
// review exists, and a body check would be a strictly narrower sibling of it.
|
|
105
|
+
// Reading 3 has no declaration at all yet; when something asserts it, it gets its
|
|
106
|
+
// own sentence naming the file it is anchored to.
|
|
107
|
+
//
|
|
108
|
+
// The sentence is deliberately UNCHANGED from the six criteria already written
|
|
109
|
+
// in `examples/pr-summary-agent` and `examples/pr-summary-review`. It could have
|
|
110
|
+
// been re-rendered to say "conversation comment" and remove all doubt from the
|
|
111
|
+
// sentence itself, and that was weighed: the words "a comment on pull request #1" are
|
|
112
|
+
// GitHub's own for this surface, so a template that says them is accurate, and
|
|
113
|
+
// keeping it byte-identical means the corpus binds without six file edits and
|
|
114
|
+
// without moving `CORPUS_SHAPE_BASELINE`. What carries the disambiguation is the
|
|
115
|
+
// `description`, which is what an author reads before picking.
|
|
116
|
+
export const pullRequestCommentExists = defineCheck({
|
|
117
|
+
id: "github.pr-comment-exists",
|
|
118
|
+
description: "Asserts the pull request's CONVERSATION timeline carries at least one comment — the " +
|
|
119
|
+
"surface GitHub's issue-comment endpoints write to. It is not the other two things a " +
|
|
120
|
+
"reader may call a comment on a PR: a review's body is not one (assert that with " +
|
|
121
|
+
"`github.pr-review-exists`), and an inline review comment anchored to a file and line is " +
|
|
122
|
+
"not one either. It says nothing about who commented, how many did, or what any of them " +
|
|
123
|
+
"say — and no declaration reads the TEXT of a pull request's comment yet. " +
|
|
124
|
+
"`github.issue-comment-contains` is the issue-side counterpart and does NOT reach a pull " +
|
|
125
|
+
"request: it resolves its subject among the repository's issues, so pointing it at a PR " +
|
|
126
|
+
"number fails as `issue #N not found`. A pull request whose export carries no comments " +
|
|
127
|
+
"section at all is SKIPPED, because absent is not the same as none.",
|
|
128
|
+
template: "Pull request #{pr} in `{repo}` has at least one comment",
|
|
129
|
+
params: { pr: prNumber, repo: repoRef },
|
|
130
|
+
substrate: "final",
|
|
131
|
+
polarity: () => "positive",
|
|
132
|
+
// A count, not a literal hunted inside prose: no redaction rule can destroy
|
|
133
|
+
// the thing this check compares, so there is no subject to declare.
|
|
134
|
+
subject: () => null,
|
|
135
|
+
// No falsifiable trigger. The PR number only RESOLVES — mutating it
|
|
136
|
+
// early-returns "not found", which moves the verdict on every seed for a reason
|
|
137
|
+
// that never reaches the comment count — and there is no second slot to
|
|
138
|
+
// falsify. Same shape as `pr-review-exists`, and admitted as `no_trigger`
|
|
139
|
+
// rather than buying a false clean bill.
|
|
140
|
+
vacuityMutant: () => null,
|
|
141
|
+
// The failing world names `comments: []`, NOT an absent section: absent SKIPS,
|
|
142
|
+
// because absent is not none — and a skip satisfies no arm.
|
|
143
|
+
discriminatingWorlds: ({ pr }) => ({
|
|
144
|
+
passing: finalWorld(repoState({
|
|
145
|
+
pull_requests: [{ number: Number(pr), comments: [{ body: "Summary: adds an optional discount." }] }],
|
|
146
|
+
})),
|
|
147
|
+
failing: finalWorld(repoState({ pull_requests: [{ number: Number(pr), comments: [] }] })),
|
|
148
|
+
}),
|
|
149
|
+
evaluate({ pr, repo }, { final }) {
|
|
150
|
+
const found = resolvePullRequest(final, repo, pr);
|
|
151
|
+
if ("missing" in found)
|
|
152
|
+
return { passed: false, reason: found.missing };
|
|
153
|
+
// Comments section absent — a snapshot predating PR-comment export. We
|
|
154
|
+
// cannot tell "nobody commented" from "not captured", so safe-skip rather
|
|
155
|
+
// than failing an agent that did comment. An empty array is a real zero and
|
|
156
|
+
// falls through to failed.
|
|
157
|
+
if (found.found.comments == null) {
|
|
158
|
+
return {
|
|
159
|
+
passed: false,
|
|
160
|
+
status: "skipped",
|
|
161
|
+
reason: `pull request #${pr} has no comments section in state_final (state_incomplete)`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const count = found.found.comments.length;
|
|
165
|
+
return {
|
|
166
|
+
passed: count > 0,
|
|
167
|
+
// Names the surface, so a failure cannot be misread as "the agent left a
|
|
168
|
+
// review body and this check refused to see it" — which is exactly the
|
|
169
|
+
// wrong-match complaint the three readings invite.
|
|
170
|
+
reason: count > 0
|
|
171
|
+
? `pull request #${pr} has ${count} conversation comment(s)`
|
|
172
|
+
: `pull request #${pr} has no conversation comments (reviews and inline review comments are not counted)`,
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
});
|
|
83
176
|
export const pullRequestReviewExists = defineCheck({
|
|
84
177
|
id: "github.pr-review-exists",
|
|
85
178
|
description: "Asserts at least one submitted review on the pull request carries this state. It does " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-pulls.js","sourceRoot":"","sources":["../../src/check-pulls.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check-pulls.js","sourceRoot":"","sources":["../../src/check-pulls.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export interface GitHubCheckStatePullRequest {
|
|
|
19
19
|
state?: string | null;
|
|
20
20
|
merged?: number | boolean | null;
|
|
21
21
|
reviews?: GitHubCheckStateReview[] | null;
|
|
22
|
+
comments?: GitHubCheckStateComment[] | null;
|
|
22
23
|
}
|
|
23
24
|
export interface GitHubCheckStateCommitStatus {
|
|
24
25
|
context?: string;
|
|
@@ -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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"}
|
|
@@ -29,6 +29,9 @@ export declare const GITHUB_CHECKS: readonly [import("./check-kind.js").Check<{
|
|
|
29
29
|
pr: string;
|
|
30
30
|
repo: string;
|
|
31
31
|
state: string;
|
|
32
|
+
}>, import("./check-kind.js").Check<{
|
|
33
|
+
pr: string;
|
|
34
|
+
repo: string;
|
|
32
35
|
}>, import("./check-kind.js").Check<{
|
|
33
36
|
review: string;
|
|
34
37
|
pr: string;
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
//
|
|
46
46
|
// So github now has no hand-written predicate left anywhere.
|
|
47
47
|
import { issueAssignee, issueCommentContains, issueExactlyOneLabel, issueExists, issueHasLabel, issueStateCheck, } from "./check-issues.js";
|
|
48
|
-
import { pullRequestReviewExists, pullRequestStateCheck } from "./check-pulls.js";
|
|
48
|
+
import { pullRequestCommentExists, pullRequestReviewExists, pullRequestStateCheck, } from "./check-pulls.js";
|
|
49
49
|
import { commitStatus, fileExists, noNewLabels } from "./check-repos.js";
|
|
50
50
|
import { noUnsupportedEndpoint, toolNeverCalled } from "./check-tape.js";
|
|
51
51
|
// Order is not first-match-wins here — the generated patterns are anchored and
|
|
@@ -62,6 +62,7 @@ export const GITHUB_CHECKS = [
|
|
|
62
62
|
issueCommentContains,
|
|
63
63
|
noNewLabels,
|
|
64
64
|
pullRequestStateCheck,
|
|
65
|
+
pullRequestCommentExists,
|
|
65
66
|
pullRequestReviewExists,
|
|
66
67
|
fileExists,
|
|
67
68
|
commitStatus,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/checks.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,mBAAmB;AACnB,EAAE;AACF,4EAA4E;AAC5E,kEAAkE;AAClE,+EAA+E;AAC/E,4CAA4C;AAC5C,EAAE;AACF,6DAA6D;AAC7D,6EAA6E;AAC7E,8DAA8D;AAC9D,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,6DAA6D;AAE7D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/checks.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,4EAA4E;AAC5E,mBAAmB;AACnB,EAAE;AACF,4EAA4E;AAC5E,kEAAkE;AAClE,+EAA+E;AAC/E,4CAA4C;AAC5C,EAAE;AACF,6DAA6D;AAC7D,6EAA6E;AAC7E,8DAA8D;AAC9D,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,EAAE;AACF,+EAA+E;AAC/E,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,wEAAwE;AACxE,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,EAAE;AACF,6DAA6D;AAE7D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAezE,+EAA+E;AAC/E,0EAA0E;AAC1E,gFAAgF;AAChF,uEAAuE;AACvE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW;IACX,eAAe;IACf,aAAa;IACb,oBAAoB;IACpB,aAAa;IACb,oBAAoB;IACpB,WAAW;IACX,qBAAqB;IACrB,wBAAwB;IACxB,uBAAuB;IACvB,UAAU;IACV,YAAY;IACZ,4EAA4E;IAC5E,+EAA+E;IAC/E,kEAAkE;IAClE,qBAAqB;IACrB,eAAe;CACP,CAAC"}
|