@pome-sh/checks 0.1.1 → 0.1.3
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/CHANGELOG.md +38 -0
- package/dist/_types/sdk/check-redaction.d.ts +53 -0
- package/dist/_types/sdk/checks.d.ts +1 -0
- package/dist/_types/twin-github/src/seed.d.ts +1 -1
- package/dist/_types/twin-linear/src/types.d.ts +46 -4
- package/dist/{chunk-SJ6SVRAA.js → chunk-5PDF3GCK.js} +18 -2
- package/dist/{chunk-GYFGMULG.js → chunk-SA23X6PB.js} +7 -2
- package/dist/{chunk-NORTPYDQ.js → chunk-THOSO63W.js} +1 -1
- package/dist/{chunk-5SJ4PVO5.js → chunk-UCV6YLN2.js} +1 -1
- package/dist/{chunk-4WXX5VPA.js → chunk-W2JNYULF.js} +98 -1
- package/dist/{chunk-IVENH4KX.js → chunk-XOUAZPNB.js} +1 -1
- package/dist/dsl.js +1 -1
- package/dist/github.js +2 -2
- package/dist/gmail.js +2 -2
- package/dist/index.js +11 -11
- package/dist/linear.js +2 -2
- package/dist/slack.js +2 -2
- package/dist/stripe.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @pome-sh/checks
|
|
2
2
|
|
|
3
|
+
## 0.1.3
|
|
4
|
+
|
|
5
|
+
No change to the published surface — `dist/` is byte-identical to 0.1.2, so no
|
|
6
|
+
declaration moved and no consumer's verdict changes. The declaration layer has
|
|
7
|
+
not been touched since 0.1.2 was cut (`38acaf9`), which is the version-bump
|
|
8
|
+
gate doing its job rather than an absence of work.
|
|
9
|
+
|
|
10
|
+
What this version is for: it is the first release cut by following
|
|
11
|
+
[`RELEASING.md`](../../RELEASING.md) end to end since the `packages-v*` batch
|
|
12
|
+
flow was replaced by version-diff-on-push, and it exists to prove that runbook
|
|
13
|
+
is followable — bump, merge, `release.yml` publishes, pome-cloud pins. The
|
|
14
|
+
consumer half is the part that was actually owed: pome-cloud has been pinned at
|
|
15
|
+
0.1.1 since before 0.1.2 shipped, so F-1157's redaction-survival vocabulary has
|
|
16
|
+
not reached the grader.
|
|
17
|
+
|
|
18
|
+
Version-only bumps are accepted here rather than carrying an exception list,
|
|
19
|
+
per `cli/CHANGELOG.md` 0.21.7.
|
|
20
|
+
|
|
21
|
+
## 0.1.2
|
|
22
|
+
|
|
23
|
+
Carries F-1157 to the grader. Three things move in `dist/`:
|
|
24
|
+
|
|
25
|
+
- `@pome-sh/checks/dsl` gains `probeRedactionSurvival`, `REDACTION_PLACEHOLDER`
|
|
26
|
+
and `isRedacted` — the measurement of what protects a criterion whose
|
|
27
|
+
redaction-destroyed literal is NOT its declared `subject`. `REDACTION_PLACEHOLDER`
|
|
28
|
+
is the check-side half of a cross-repo contract: the token pome-cloud's state
|
|
29
|
+
redactor writes is the token these predicates recognise, and it is declared
|
|
30
|
+
once here rather than spelled twice.
|
|
31
|
+
- `@pome-sh/checks/gmail` — `gmail.mailbox-label-count` answers
|
|
32
|
+
`mailbox_redacted ("…")` where the mailbox row survived with its address
|
|
33
|
+
masked, and keeps `mailbox_not_found ("…")` for an export that lists real
|
|
34
|
+
addresses and not this one. Same `skipped` status either way; only the reason
|
|
35
|
+
a report renders changes.
|
|
36
|
+
- `@pome-sh/checks/slack` — `slack.no-reaction-added` declares its reaction name
|
|
37
|
+
as its `subject`, so the engine's redaction-survival arm skips such a
|
|
38
|
+
criterion at the door instead of letting a masked `reactions[].name` satisfy
|
|
39
|
+
a negative assertion.
|
|
40
|
+
|
|
3
41
|
## 0.1.1
|
|
4
42
|
|
|
5
43
|
No change to the published surface — `dist/` is byte-identical to 0.1.0, so no
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { CheckDefinition } from "./checks.js";
|
|
2
|
+
/**
|
|
3
|
+
* The token a scoring redactor leaves in place of a value it masked.
|
|
4
|
+
*
|
|
5
|
+
* Declared HERE rather than imported from `@pome-sh/wire`, and the distinction
|
|
6
|
+
* is not pedantic. Wire's redactor scrubs secrets out of a recorded TRACE on the
|
|
7
|
+
* way to disk; the redactor that eats a check's literal is the consuming
|
|
8
|
+
* engine's STATE redactor, which runs in pome-cloud against a team's own config.
|
|
9
|
+
* Two producers, two lifetimes — they agree on the bytes today, and making one
|
|
10
|
+
* import the other's constant would assert a shared fact neither repo checks.
|
|
11
|
+
*
|
|
12
|
+
* So this is the check-side half of that contract, published on
|
|
13
|
+
* `@pome-sh/checks/dsl` so the engine writing the token and the predicates
|
|
14
|
+
* recognising it can read it from one place.
|
|
15
|
+
*/
|
|
16
|
+
export declare const REDACTION_PLACEHOLDER = "[REDACTED]";
|
|
17
|
+
/**
|
|
18
|
+
* Did a redactor eat this value?
|
|
19
|
+
*
|
|
20
|
+
* A recogniser, not a proof: a team whose config writes some other placeholder
|
|
21
|
+
* gets `false` here, and the predicate that asked falls back to whatever it said
|
|
22
|
+
* before — the status quo, never a wrong verdict. Which is why the vacuous-pass
|
|
23
|
+
* gate below does not depend on this function at all: it destroys the literal
|
|
24
|
+
* itself and reads the verdict, so a check that never calls `isRedacted` is
|
|
25
|
+
* measured exactly as strictly as one that does.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isRedacted(value: string | null | undefined): boolean;
|
|
28
|
+
export type RedactionGuard = "declared_subject" | "vacuous_pass" | "abstains" | "false_fail" | "discriminates_anyway" | "absent_from_world" | "throws";
|
|
29
|
+
export interface RedactionSurvivalRow {
|
|
30
|
+
readonly param: string;
|
|
31
|
+
readonly guard: RedactionGuard;
|
|
32
|
+
readonly detail: string;
|
|
33
|
+
}
|
|
34
|
+
export type RedactionSurvivalVerdict = {
|
|
35
|
+
kind: "measured";
|
|
36
|
+
rows: readonly RedactionSurvivalRow[];
|
|
37
|
+
} | {
|
|
38
|
+
kind: "declined";
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* For every slot this check declares, what stands between a redactor that eats
|
|
42
|
+
* that slot's literal and a vacuous pass.
|
|
43
|
+
*
|
|
44
|
+
* The subject arm is credited without evaluating: when the destroyed literal IS
|
|
45
|
+
* (or is inside) the declared subject, the engine never calls `evaluate`, so
|
|
46
|
+
* running the predicate anyway would measure a code path production cannot
|
|
47
|
+
* reach and file its answer under this check's name.
|
|
48
|
+
*
|
|
49
|
+
* `includes`, not equality, on that comparison. A subject is usually one arg
|
|
50
|
+
* verbatim, but a declaration may compose one, and a redactor that masks a
|
|
51
|
+
* component masks the composed string too.
|
|
52
|
+
*/
|
|
53
|
+
export declare function probeRedactionSurvival<TState, TArgs extends Record<string, string>>(def: CheckDefinition<TState, TArgs>, args: TArgs): RedactionSurvivalVerdict;
|
|
@@ -91,3 +91,4 @@ export declare function checkNearMissPattern(def: CheckBindingShape): RegExp;
|
|
|
91
91
|
export declare function parseCheck<TState, TArgs extends Record<string, string>>(def: CheckDefinition<TState, TArgs>, text: string): TArgs | null;
|
|
92
92
|
export { probeDiscrimination } from "./check-discrimination.js";
|
|
93
93
|
export { statePath, childStatePath, resolveStatePath, probeStateCitation, type StateCitationArm, type StateCitationVerdict, } from "./check-state-path.js";
|
|
94
|
+
export { REDACTION_PLACEHOLDER, isRedacted, probeRedactionSurvival, type RedactionGuard, type RedactionSurvivalRow, type RedactionSurvivalVerdict, } from "./check-redaction.js";
|
|
@@ -61,9 +61,9 @@ export declare const seedSchema: z.ZodObject<{
|
|
|
61
61
|
context: z.ZodDefault<z.ZodString>;
|
|
62
62
|
state: z.ZodDefault<z.ZodEnum<{
|
|
63
63
|
error: "error";
|
|
64
|
+
success: "success";
|
|
64
65
|
failure: "failure";
|
|
65
66
|
pending: "pending";
|
|
66
|
-
success: "success";
|
|
67
67
|
}>>;
|
|
68
68
|
description: z.ZodDefault<z.ZodString>;
|
|
69
69
|
}, z.core.$strip>>>;
|
|
@@ -4,7 +4,44 @@ export type LinearWorkflowStateType = "backlog" | "unstarted" | "started" | "com
|
|
|
4
4
|
export type LinearTokenType = "personal" | "oauth_access" | "oauth_refresh" | "client_credentials";
|
|
5
5
|
export type LinearTokenActorType = "user" | "app";
|
|
6
6
|
export type LinearIssuePriority = 0 | 1 | 2 | 3 | 4;
|
|
7
|
+
/** Linear's `AgentActivityType` enum, member-for-member — the `content` discriminator. */
|
|
7
8
|
export type LinearAgentActivityType = "thought" | "elicitation" | "action" | "response" | "error" | "prompt";
|
|
9
|
+
/** Linear's `AgentActivitySignal` enum, member-for-member (F-1176). */
|
|
10
|
+
export type LinearAgentActivitySignal = "stop" | "continue" | "auth" | "select";
|
|
11
|
+
/**
|
|
12
|
+
* Linear's `AgentActivityContent` union, member-for-member (F-1176).
|
|
13
|
+
*
|
|
14
|
+
* Upstream this is a real GraphQL union discriminated on `type`, whose six
|
|
15
|
+
* members are `AgentActivity{Thought,Action,Response,Elicitation,Error,Prompt}
|
|
16
|
+
* Content`. Five of the six carry `body`; `action` carries `action` /
|
|
17
|
+
* `parameter` / `result` instead, which is why an activity's payload cannot be
|
|
18
|
+
* flattened back to the `{ type, body }` pair the twin used to accept.
|
|
19
|
+
*
|
|
20
|
+
* `bodyData` / `resultData` are upstream's structured companions to the text
|
|
21
|
+
* fields. The twin does not derive them, but it accepts and stores them rather
|
|
22
|
+
* than refusing an agent that was written against real Linear and sends them.
|
|
23
|
+
*/
|
|
24
|
+
export type LinearAgentActivityContent = {
|
|
25
|
+
type: "thought" | "response" | "elicitation";
|
|
26
|
+
body: string;
|
|
27
|
+
bodyData?: unknown;
|
|
28
|
+
} | {
|
|
29
|
+
type: "prompt";
|
|
30
|
+
body: string;
|
|
31
|
+
title?: string | null;
|
|
32
|
+
bodyData?: unknown;
|
|
33
|
+
} | {
|
|
34
|
+
type: "error";
|
|
35
|
+
body: string;
|
|
36
|
+
reasonCode?: string | null;
|
|
37
|
+
bodyData?: unknown;
|
|
38
|
+
} | {
|
|
39
|
+
type: "action";
|
|
40
|
+
action: string;
|
|
41
|
+
parameter: string;
|
|
42
|
+
result?: string | null;
|
|
43
|
+
resultData?: unknown;
|
|
44
|
+
};
|
|
8
45
|
/** Linear's `AgentSessionStatus` enum, member-for-member (F-1172). */
|
|
9
46
|
export type LinearAgentSessionStatus = "pending" | "active" | "awaitingInput" | "complete" | "error" | "stale";
|
|
10
47
|
/** One entry of Linear's `AgentSession.externalUrls` JSON payload. */
|
|
@@ -208,10 +245,15 @@ export type LinearAgentSession = {
|
|
|
208
245
|
};
|
|
209
246
|
export type LinearAgentActivity = {
|
|
210
247
|
id: string;
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
248
|
+
agentSessionId: string;
|
|
249
|
+
/**
|
|
250
|
+
* Non-null, matching Linear's `AgentActivity.user: User!`. The column is
|
|
251
|
+
* still nullable — its FK is `ON DELETE SET NULL` — so this is enforced at
|
|
252
|
+
* the read boundary, next to the status check, rather than assumed.
|
|
253
|
+
*/
|
|
254
|
+
userId: string;
|
|
255
|
+
content: LinearAgentActivityContent;
|
|
256
|
+
signal: LinearAgentActivitySignal | null;
|
|
215
257
|
ephemeral: boolean;
|
|
216
258
|
createdAt: string;
|
|
217
259
|
updatedAt: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { oneOf, statePath, defineCheck, VACUITY_SENTINEL, childStatePath } from './chunk-
|
|
1
|
+
import { oneOf, statePath, defineCheck, VACUITY_SENTINEL, childStatePath } from './chunk-W2JNYULF.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
// ../twin-slack/dist/src/check-params.js
|
|
@@ -178,7 +178,23 @@ var noReactionAdded = defineCheck({
|
|
|
178
178
|
params: { reaction: emojiName, channel: channelName },
|
|
179
179
|
substrate: "final",
|
|
180
180
|
polarity: () => "negative",
|
|
181
|
-
|
|
181
|
+
// The reaction name, because that is the literal this predicate compares
|
|
182
|
+
// against `reactions[].name` — the line below has said so since the check
|
|
183
|
+
// shipped, and this field said `null` anyway (F-1157).
|
|
184
|
+
//
|
|
185
|
+
// It is the sharpest case in the vocabulary for why that mattered. A NEGATIVE
|
|
186
|
+
// criterion asserting a scanned literal is absent reads a redactor's work as
|
|
187
|
+
// its own verdict: mask `reactions[].name` and the filter matches nothing, so
|
|
188
|
+
// `No "white_check_mark" reaction was added` passes — over an export where the
|
|
189
|
+
// agent added exactly that reaction. `probeRedactionSurvival` found it by
|
|
190
|
+
// destroying this literal in the FAILING world declared below and watching
|
|
191
|
+
// that world start to pass; it was the one `vacuous_pass` across all five
|
|
192
|
+
// twins' 45 declarations.
|
|
193
|
+
//
|
|
194
|
+
// Contrast `slack.no-message-posted` above, whose null is deliberate: its only
|
|
195
|
+
// literal RESOLVES a channel and the count it asserts on is derived. This one
|
|
196
|
+
// scans.
|
|
197
|
+
subject: ({ reaction }) => reaction,
|
|
182
198
|
// The channel RESOLVES (a miss already skips); the reaction name is SCANNED.
|
|
183
199
|
// D10: falsify the scanned one.
|
|
184
200
|
vacuityMutant: (args) => ({ ...args, reaction: VACUITY_SENTINEL }),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { statePath, defineCheck, VACUITY_SENTINEL, childStatePath, VACUITY_SENTINEL_NUMBER } from './chunk-
|
|
1
|
+
import { statePath, defineCheck, VACUITY_SENTINEL, childStatePath, VACUITY_SENTINEL_NUMBER, isRedacted } from './chunk-W2JNYULF.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
// ../twin-gmail/dist/src/check-params.js
|
|
@@ -437,7 +437,12 @@ var mailboxLabelCount = defineCheck({
|
|
|
437
437
|
return { passed: false, status: "skipped", reason: "collection_truncated" };
|
|
438
438
|
}
|
|
439
439
|
if (final.mailboxes != null && !final.mailboxes.some((mb) => (mb.email ?? "").toLowerCase() === mailbox.toLowerCase())) {
|
|
440
|
-
|
|
440
|
+
const eaten = final.mailboxes.some((mb) => isRedacted(mb.email));
|
|
441
|
+
return {
|
|
442
|
+
passed: false,
|
|
443
|
+
status: "skipped",
|
|
444
|
+
reason: eaten ? `mailbox_redacted ("${mailbox}")` : `mailbox_not_found ("${mailbox}")`
|
|
445
|
+
};
|
|
441
446
|
}
|
|
442
447
|
const ids = labelIdsFor(final, label);
|
|
443
448
|
const labeled = new Set(final.messageLabels.filter((row) => ids.has((row.labelId ?? "").toLowerCase())).map((row) => (row.messageId ?? "").toLowerCase()));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { statePath, defineCheck, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, childStatePath } from './chunk-
|
|
1
|
+
import { statePath, defineCheck, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, childStatePath } from './chunk-W2JNYULF.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
// ../twin-linear/dist/src/check-params.js
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath } from './chunk-
|
|
1
|
+
import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath } from './chunk-W2JNYULF.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
// ../twin-github/dist/src/tape-assertable-tools.js
|
|
@@ -120,6 +120,103 @@ function probeStateCitation(def, args) {
|
|
|
120
120
|
return passing;
|
|
121
121
|
return probeArm(def, args, "failing", worlds.failing);
|
|
122
122
|
}
|
|
123
|
+
|
|
124
|
+
// ../sdk/dist/check-redaction.js
|
|
125
|
+
var REDACTION_PLACEHOLDER = "[REDACTED]";
|
|
126
|
+
function isRedacted(value) {
|
|
127
|
+
return value === REDACTION_PLACEHOLDER;
|
|
128
|
+
}
|
|
129
|
+
function destroyLiteral(tree, literal) {
|
|
130
|
+
const wanted = literal.toLowerCase();
|
|
131
|
+
let hit = false;
|
|
132
|
+
const walk = (node) => {
|
|
133
|
+
if (typeof node === "string") {
|
|
134
|
+
if (node.toLowerCase() !== wanted)
|
|
135
|
+
return node;
|
|
136
|
+
hit = true;
|
|
137
|
+
return REDACTION_PLACEHOLDER;
|
|
138
|
+
}
|
|
139
|
+
if (Array.isArray(node))
|
|
140
|
+
return node.map(walk);
|
|
141
|
+
if (node === null || typeof node !== "object")
|
|
142
|
+
return node;
|
|
143
|
+
return Object.fromEntries(Object.entries(node).map(([key, value]) => [key, walk(value)]));
|
|
144
|
+
};
|
|
145
|
+
return { tree: walk(tree), hit };
|
|
146
|
+
}
|
|
147
|
+
function destroyWorld(world, literal) {
|
|
148
|
+
const seed = destroyLiteral(world.seed, literal);
|
|
149
|
+
const final = destroyLiteral(world.final, literal);
|
|
150
|
+
const tape = destroyLiteral(world.tape, literal);
|
|
151
|
+
return {
|
|
152
|
+
world: {
|
|
153
|
+
seed: seed.tree,
|
|
154
|
+
final: final.tree,
|
|
155
|
+
tape: tape.tree
|
|
156
|
+
},
|
|
157
|
+
hit: seed.hit || final.hit || tape.hit
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
var describeOutcome2 = (outcome) => `passed=${outcome.passed} status=${outcome.status ?? "-"} reason=${JSON.stringify(outcome.reason)}`;
|
|
161
|
+
function say(evaluate) {
|
|
162
|
+
try {
|
|
163
|
+
return evaluate();
|
|
164
|
+
} catch (error) {
|
|
165
|
+
return { threw: error instanceof Error ? error.message : String(error) };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
var isRealPass2 = (outcome) => outcome.passed === true && (outcome.status === void 0 || outcome.status === "passed");
|
|
169
|
+
function classify(passing, failing) {
|
|
170
|
+
if ("threw" in passing)
|
|
171
|
+
return { guard: "throws", detail: `passing world: ${passing.threw}` };
|
|
172
|
+
if ("threw" in failing)
|
|
173
|
+
return { guard: "throws", detail: `failing world: ${failing.threw}` };
|
|
174
|
+
if (isRealPass2(failing)) {
|
|
175
|
+
return { guard: "vacuous_pass", detail: `failing world now passes \u2014 ${describeOutcome2(failing)}` };
|
|
176
|
+
}
|
|
177
|
+
if (passing.status === "skipped") {
|
|
178
|
+
return { guard: "abstains", detail: describeOutcome2(passing) };
|
|
179
|
+
}
|
|
180
|
+
if (isRealPass2(passing)) {
|
|
181
|
+
return { guard: "discriminates_anyway", detail: describeOutcome2(passing) };
|
|
182
|
+
}
|
|
183
|
+
return { guard: "false_fail", detail: `passing world now fails \u2014 ${describeOutcome2(passing)}` };
|
|
184
|
+
}
|
|
185
|
+
function probeRedactionSurvival(def, args) {
|
|
186
|
+
const worlds = def.discriminatingWorlds(args);
|
|
187
|
+
if (worlds === null)
|
|
188
|
+
return { kind: "declined" };
|
|
189
|
+
const subject = def.subject?.(args) ?? null;
|
|
190
|
+
const rows = [];
|
|
191
|
+
for (const param of Object.keys(def.params)) {
|
|
192
|
+
const literal = args[param];
|
|
193
|
+
if (typeof literal !== "string" || literal === "")
|
|
194
|
+
continue;
|
|
195
|
+
if (subject !== null && subject.toLowerCase().includes(literal.toLowerCase())) {
|
|
196
|
+
rows.push({
|
|
197
|
+
param,
|
|
198
|
+
guard: "declared_subject",
|
|
199
|
+
detail: `the engine skips the criterion before evaluate \u2014 subject ${JSON.stringify(subject)}`
|
|
200
|
+
});
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
const passing = destroyWorld(worlds.passing, literal);
|
|
204
|
+
const failing = destroyWorld(worlds.failing, literal);
|
|
205
|
+
if (!passing.hit && !failing.hit) {
|
|
206
|
+
rows.push({
|
|
207
|
+
param,
|
|
208
|
+
guard: "absent_from_world",
|
|
209
|
+
detail: `${JSON.stringify(literal)} appears in neither declared world`
|
|
210
|
+
});
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
rows.push({
|
|
214
|
+
param,
|
|
215
|
+
...classify(say(() => def.evaluate(args, passing.world)), say(() => def.evaluate(args, failing.world)))
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return { kind: "measured", rows };
|
|
219
|
+
}
|
|
123
220
|
var VACUITY_SENTINEL = "pome-vacuity-never";
|
|
124
221
|
var VACUITY_SENTINEL_SNAKE = "pome_vacuity_never";
|
|
125
222
|
var VACUITY_SENTINEL_NUMBER = 987654321;
|
|
@@ -235,4 +332,4 @@ function parseCheck(def, text) {
|
|
|
235
332
|
return args;
|
|
236
333
|
}
|
|
237
334
|
|
|
238
|
-
export { VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL_SNAKE, checkNearMissPattern, checkPattern, checksDigest, childStatePath, defineCheck, oneOf, parseCheck, probeDiscrimination, probeStateCitation, renderCheck, repoRef, resolveStatePath, statePath, templateSlots };
|
|
335
|
+
export { REDACTION_PLACEHOLDER, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL_SNAKE, checkNearMissPattern, checkPattern, checksDigest, childStatePath, defineCheck, isRedacted, oneOf, parseCheck, probeDiscrimination, probeRedactionSurvival, probeStateCitation, renderCheck, repoRef, resolveStatePath, statePath, templateSlots };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { oneOf, statePath, defineCheck, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL, childStatePath } from './chunk-
|
|
1
|
+
import { oneOf, statePath, defineCheck, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL, childStatePath } from './chunk-W2JNYULF.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
// ../twin-stripe/dist/src/check-params.js
|
package/dist/dsl.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import './chunk-ZXE6LAM3.js';
|
|
2
|
-
export { VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL_SNAKE, checkNearMissPattern, checkPattern, checksDigest, childStatePath, defineCheck, oneOf, parseCheck, probeDiscrimination, probeStateCitation, renderCheck, repoRef, resolveStatePath, statePath, templateSlots } from './chunk-
|
|
2
|
+
export { REDACTION_PLACEHOLDER, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL_SNAKE, checkNearMissPattern, checkPattern, checksDigest, childStatePath, defineCheck, isRedacted, oneOf, parseCheck, probeDiscrimination, probeRedactionSurvival, probeStateCitation, renderCheck, repoRef, resolveStatePath, statePath, templateSlots } from './chunk-W2JNYULF.js';
|
package/dist/github.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { GITHUB_CHECKS, defaultSeedState, parseSeed, seedSchema } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { GITHUB_CHECKS, defaultSeedState, parseSeed, seedSchema } from './chunk-UCV6YLN2.js';
|
|
2
|
+
import './chunk-W2JNYULF.js';
|
package/dist/gmail.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { GMAIL_CHECKS, defaultSeedState, gmailSeedSchema, parseSeed } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { GMAIL_CHECKS, defaultSeedState, gmailSeedSchema, parseSeed } from './chunk-SA23X6PB.js';
|
|
2
|
+
import './chunk-W2JNYULF.js';
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import './chunk-ZXE6LAM3.js';
|
|
2
|
-
import { GITHUB_CHECKS } from './chunk-
|
|
3
|
-
export { GITHUB_CHECKS, defaultSeedState as defaultGitHubSeed, seedSchema as githubSeedSchema, parseSeed as parseGitHubSeed } from './chunk-
|
|
4
|
-
import { GMAIL_CHECKS } from './chunk-
|
|
5
|
-
export { GMAIL_CHECKS, defaultSeedState as defaultGmailSeed, gmailSeedSchema, parseSeed as parseGmailSeed } from './chunk-
|
|
6
|
-
import { LINEAR_CHECKS } from './chunk-
|
|
7
|
-
export { LINEAR_CHECKS, defaultSeedState as defaultLinearSeed, linearSeedSchema, parseSeed as parseLinearSeed } from './chunk-
|
|
8
|
-
import { SLACK_CHECKS } from './chunk-
|
|
9
|
-
export { SLACK_CHECKS, defaultSeedState as defaultSlackSeed, parseSeed as parseSlackSeed, seedSchema as slackSeedSchema } from './chunk-
|
|
10
|
-
import { STRIPE_CHECKS } from './chunk-
|
|
11
|
-
export { STRIPE_CHECKS, defaultSeed as defaultStripeSeed, parseSeed as parseStripeSeed, seedSchema as stripeSeedSchema } from './chunk-
|
|
12
|
-
export { VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL_SNAKE, checkNearMissPattern, checkPattern, checksDigest, childStatePath, defineCheck, oneOf, parseCheck, probeDiscrimination, probeStateCitation, renderCheck, repoRef, resolveStatePath, statePath, templateSlots } from './chunk-
|
|
2
|
+
import { GITHUB_CHECKS } from './chunk-UCV6YLN2.js';
|
|
3
|
+
export { GITHUB_CHECKS, defaultSeedState as defaultGitHubSeed, seedSchema as githubSeedSchema, parseSeed as parseGitHubSeed } from './chunk-UCV6YLN2.js';
|
|
4
|
+
import { GMAIL_CHECKS } from './chunk-SA23X6PB.js';
|
|
5
|
+
export { GMAIL_CHECKS, defaultSeedState as defaultGmailSeed, gmailSeedSchema, parseSeed as parseGmailSeed } from './chunk-SA23X6PB.js';
|
|
6
|
+
import { LINEAR_CHECKS } from './chunk-THOSO63W.js';
|
|
7
|
+
export { LINEAR_CHECKS, defaultSeedState as defaultLinearSeed, linearSeedSchema, parseSeed as parseLinearSeed } from './chunk-THOSO63W.js';
|
|
8
|
+
import { SLACK_CHECKS } from './chunk-5PDF3GCK.js';
|
|
9
|
+
export { SLACK_CHECKS, defaultSeedState as defaultSlackSeed, parseSeed as parseSlackSeed, seedSchema as slackSeedSchema } from './chunk-5PDF3GCK.js';
|
|
10
|
+
import { STRIPE_CHECKS } from './chunk-XOUAZPNB.js';
|
|
11
|
+
export { STRIPE_CHECKS, defaultSeed as defaultStripeSeed, parseSeed as parseStripeSeed, seedSchema as stripeSeedSchema } from './chunk-XOUAZPNB.js';
|
|
12
|
+
export { REDACTION_PLACEHOLDER, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER, VACUITY_SENTINEL_SNAKE, checkNearMissPattern, checkPattern, checksDigest, childStatePath, defineCheck, isRedacted, oneOf, parseCheck, probeDiscrimination, probeRedactionSurvival, probeStateCitation, renderCheck, repoRef, resolveStatePath, statePath, templateSlots } from './chunk-W2JNYULF.js';
|
|
13
13
|
|
|
14
14
|
// src/index.ts
|
|
15
15
|
var CHECKS_TWIN_NAMES = ["github", "slack", "stripe", "gmail", "linear"];
|
package/dist/linear.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LINEAR_CHECKS, defaultSeedState, linearSeedSchema, parseSeed } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { LINEAR_CHECKS, defaultSeedState, linearSeedSchema, parseSeed } from './chunk-THOSO63W.js';
|
|
2
|
+
import './chunk-W2JNYULF.js';
|
package/dist/slack.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SLACK_CHECKS, defaultSeedState, parseSeed, seedSchema } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { SLACK_CHECKS, defaultSeedState, parseSeed, seedSchema } from './chunk-5PDF3GCK.js';
|
|
2
|
+
import './chunk-W2JNYULF.js';
|
package/dist/stripe.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { STRIPE_CHECKS, defaultSeed, parseSeed, seedSchema } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { STRIPE_CHECKS, defaultSeed, parseSeed, seedSchema } from './chunk-XOUAZPNB.js';
|
|
2
|
+
import './chunk-W2JNYULF.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pome-sh/checks",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Pome's grading vocabulary — the check declarations, seed schemas and default seeds of all five digital twins, plus the check DSL they are written in. Declarations only: no twin server, no database, no routes, no tools.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|