@sponsio/sdk 0.1.0-alpha.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/sponsio.cjs +11 -0
- package/contracts/capability/credentials.yaml +8 -8
- package/contracts/capability/database.yaml +6 -6
- package/contracts/capability/filesystem-strict.yaml +4 -4
- package/contracts/capability/filesystem.yaml +9 -9
- package/contracts/capability/host-config-integrity.yaml +285 -0
- package/contracts/capability/self-modify.yaml +214 -9
- package/contracts/capability/shell.yaml +25 -32
- package/contracts/capability/subagent.yaml +5 -5
- package/contracts/core/llm_safety.yaml +23 -13
- package/contracts/incident/claude-code-secret-bypass.yaml +10 -11
- package/contracts/incident/cursor-railway-wipe.yaml +3 -3
- package/contracts/incident/mcp-composition.yaml +12 -12
- package/contracts/incident/openclaw.yaml +53 -45
- package/contracts/incident/subagent-escape.yaml +4 -4
- package/dist/cli/check.d.ts +2 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +283 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/cli.d.ts +25 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +459 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/config.d.ts +88 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +243 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/demo.d.ts +12 -0
- package/dist/cli/demo.d.ts.map +1 -0
- package/dist/cli/demo.js +350 -0
- package/dist/cli/demo.js.map +1 -0
- package/dist/cli/doctor.d.ts +11 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +201 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/eval.d.ts +2 -0
- package/dist/cli/eval.d.ts.map +1 -0
- package/dist/cli/eval.js +361 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/explain.d.ts +2 -0
- package/dist/cli/explain.d.ts.map +1 -0
- package/dist/cli/explain.js +266 -0
- package/dist/cli/explain.js.map +1 -0
- package/dist/cli/export-sessions.d.ts +2 -0
- package/dist/cli/export-sessions.d.ts.map +1 -0
- package/dist/cli/export-sessions.js +182 -0
- package/dist/cli/export-sessions.js.map +1 -0
- package/dist/cli/export.d.ts +2 -0
- package/dist/cli/export.d.ts.map +1 -0
- package/dist/cli/export.js +222 -0
- package/dist/cli/export.js.map +1 -0
- package/dist/cli/extractors/common.d.ts +27 -0
- package/dist/cli/extractors/common.d.ts.map +1 -0
- package/dist/cli/extractors/common.js +107 -0
- package/dist/cli/extractors/common.js.map +1 -0
- package/dist/cli/extractors/generic.d.ts +37 -0
- package/dist/cli/extractors/generic.d.ts.map +1 -0
- package/dist/cli/extractors/generic.js +185 -0
- package/dist/cli/extractors/generic.js.map +1 -0
- package/dist/cli/extractors/langchain.d.ts +18 -0
- package/dist/cli/extractors/langchain.d.ts.map +1 -0
- package/dist/cli/extractors/langchain.js +86 -0
- package/dist/cli/extractors/langchain.js.map +1 -0
- package/dist/cli/extractors/vercel.d.ts +17 -0
- package/dist/cli/extractors/vercel.d.ts.map +1 -0
- package/dist/cli/extractors/vercel.js +46 -0
- package/dist/cli/extractors/vercel.js.map +1 -0
- package/dist/cli/index.d.ts +38 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +146 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +177 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mode.d.ts +2 -0
- package/dist/cli/mode.d.ts.map +1 -0
- package/dist/cli/mode.js +71 -0
- package/dist/cli/mode.js.map +1 -0
- package/dist/cli/onboard.d.ts +88 -0
- package/dist/cli/onboard.d.ts.map +1 -0
- package/dist/cli/onboard.js +758 -0
- package/dist/cli/onboard.js.map +1 -0
- package/dist/cli/otlp.d.ts +27 -0
- package/dist/cli/otlp.d.ts.map +1 -0
- package/dist/cli/otlp.js +79 -0
- package/dist/cli/otlp.js.map +1 -0
- package/dist/cli/package.json +1 -0
- package/dist/cli/packs.d.ts +16 -0
- package/dist/cli/packs.d.ts.map +1 -0
- package/dist/cli/packs.js +184 -0
- package/dist/cli/packs.js.map +1 -0
- package/dist/cli/patterns.d.ts +15 -0
- package/dist/cli/patterns.d.ts.map +1 -0
- package/dist/cli/patterns.js +135 -0
- package/dist/cli/patterns.js.map +1 -0
- package/dist/cli/prompt.d.ts +2 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +54 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/cli/replay.d.ts +2 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js +196 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/cli/report.d.ts +57 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +298 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/scan.d.ts +2 -0
- package/dist/cli/scan.d.ts.map +1 -0
- package/dist/cli/scan.js +172 -0
- package/dist/cli/scan.js.map +1 -0
- package/dist/cli/skill.d.ts +15 -0
- package/dist/cli/skill.d.ts.map +1 -0
- package/dist/cli/skill.js +131 -0
- package/dist/cli/skill.js.map +1 -0
- package/dist/cli/tokens.d.ts +31 -0
- package/dist/cli/tokens.d.ts.map +1 -0
- package/dist/cli/tokens.js +73 -0
- package/dist/cli/tokens.js.map +1 -0
- package/dist/cli/types.d.ts +46 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +3 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/validate.d.ts +19 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +205 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/cli/zod.d.ts +36 -0
- package/dist/cli/zod.d.ts.map +1 -0
- package/dist/cli/zod.js +226 -0
- package/dist/cli/zod.js.map +1 -0
- package/dist/contract.d.ts +13 -13
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +21 -21
- package/dist/contract.js.map +1 -1
- package/dist/core/config-loader.d.ts +1 -1
- package/dist/core/config-loader.js +35 -17
- package/dist/core/config-loader.js.map +1 -1
- package/dist/core/grounding.d.ts +49 -2
- package/dist/core/grounding.d.ts.map +1 -1
- package/dist/core/grounding.js +302 -142
- package/dist/core/grounding.js.map +1 -1
- package/dist/core/nl-parser.d.ts.map +1 -1
- package/dist/core/nl-parser.js +74 -2
- package/dist/core/nl-parser.js.map +1 -1
- package/dist/core/pattern-factory.d.ts +4 -4
- package/dist/core/pattern-factory.d.ts.map +1 -1
- package/dist/core/pattern-factory.js +46 -4
- package/dist/core/pattern-factory.js.map +1 -1
- package/dist/core/patterns.d.ts +78 -4
- package/dist/core/patterns.d.ts.map +1 -1
- package/dist/core/patterns.js +211 -3
- package/dist/core/patterns.js.map +1 -1
- package/dist/core/spans.d.ts +1 -1
- package/dist/core/spans.d.ts.map +1 -1
- package/dist/core/spans.js.map +1 -1
- package/dist/core/sto.d.ts +32 -62
- package/dist/core/sto.d.ts.map +1 -1
- package/dist/core/sto.js +32 -90
- package/dist/core/sto.js.map +1 -1
- package/dist/index.d.ts +77 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +172 -133
- package/dist/index.js.map +1 -1
- package/dist/integrations/openai-agents.d.ts.map +1 -1
- package/dist/integrations/openai-agents.js +5 -4
- package/dist/integrations/openai-agents.js.map +1 -1
- package/dist/render/tokens.d.ts.map +1 -1
- package/dist/render/tokens.js +1 -0
- package/dist/render/tokens.js.map +1 -1
- package/package.json +28 -4
- package/prompts/onboard.md +250 -0
- package/prompts/refresh.md +118 -0
- package/prompts/scan.md +125 -0
- package/skills/SKILL.md +502 -0
package/dist/core/nl-parser.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* "tool `X` at most 3 times"
|
|
8
8
|
* "tools `A` and `B` are mutually exclusive"
|
|
9
9
|
*/
|
|
10
|
-
import { mustPrecede, alwaysFollowedBy, rateLimit, idempotent, mutualExclusion, noReversal, cooldown, deadline, } from "./patterns.js";
|
|
10
|
+
import { mustPrecede, alwaysFollowedBy, rateLimit, idempotent, mutualExclusion, noReversal, cooldown, deadline, maxLength, noPii, noKeywords, } from "./patterns.js";
|
|
11
11
|
import { Atom } from "./formula.js";
|
|
12
12
|
/** Extract backtick-wrapped tool names from NL text. */
|
|
13
13
|
function extractTools(text) {
|
|
@@ -100,7 +100,79 @@ function parseBareCalledAtom(text, tools) {
|
|
|
100
100
|
}
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
103
|
+
// Response-content NL patterns — matched BEFORE the generic keyword
|
|
104
|
+
// rules so length / PII / no-keyword constraints route to the
|
|
105
|
+
// response-content det pipeline. Mirrors Python's
|
|
106
|
+
// ``_try_response_content_patterns``.
|
|
107
|
+
const LENGTH_PATTERN = /(?:response|output)\s+(?:must\s+be\s+)?(?:under|at\s+most|no\s+more\s+than|fewer\s+than|max(?:imum)?)\s+(\d+)\s+(words?|characters?|chars?)/i;
|
|
108
|
+
const NO_PII_PATTERN = /(?:response|output).*(?:must|should)\s+not\s+contain\s+(?:any\s+)?(pii|personal\s+info(?:rmation)?|ssns?|credit[\s-]?cards?|emails?(?:\s+address(?:es)?)?|phones?(?:\s+numbers?)?)/i;
|
|
109
|
+
const NO_KEYWORD_PATTERN = /(?:response|output)\s+(?:must|should)\s+not\s+(?:contain|include|mention)\s+(?:the\s+)?(?:words?|keywords?|terms?|phrase)\s+[`"']?([^`"']+)[`"']?/i;
|
|
110
|
+
const PII_KEYWORD_TO_FIELDS = {
|
|
111
|
+
ssn: ["ssn"],
|
|
112
|
+
ssns: ["ssn"],
|
|
113
|
+
"credit card": ["credit_card"],
|
|
114
|
+
"credit cards": ["credit_card"],
|
|
115
|
+
"credit-card": ["credit_card"],
|
|
116
|
+
"credit-cards": ["credit_card"],
|
|
117
|
+
email: ["email"],
|
|
118
|
+
emails: ["email"],
|
|
119
|
+
"email address": ["email"],
|
|
120
|
+
"email addresses": ["email"],
|
|
121
|
+
phone: ["phone"],
|
|
122
|
+
phones: ["phone"],
|
|
123
|
+
"phone number": ["phone"],
|
|
124
|
+
"phone numbers": ["phone"],
|
|
125
|
+
};
|
|
126
|
+
function tryResponseContent(text) {
|
|
127
|
+
// max_length
|
|
128
|
+
let m = text.match(LENGTH_PATTERN);
|
|
129
|
+
if (m) {
|
|
130
|
+
const n = parseInt(m[1], 10);
|
|
131
|
+
const unit = m[2].toLowerCase();
|
|
132
|
+
try {
|
|
133
|
+
if (unit.includes("char"))
|
|
134
|
+
return maxLength({ maxChars: n, desc: text });
|
|
135
|
+
return maxLength({ maxWords: n, desc: text });
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// no_pii — narrow to specific category if mentioned, else full union.
|
|
142
|
+
m = text.match(NO_PII_PATTERN);
|
|
143
|
+
if (m) {
|
|
144
|
+
const raw = m[1].toLowerCase().replace(/-/g, " ").replace(/\s+/g, " ").trim();
|
|
145
|
+
const fields = PII_KEYWORD_TO_FIELDS[raw];
|
|
146
|
+
try {
|
|
147
|
+
return noPii(fields);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// no_keywords
|
|
154
|
+
m = text.match(NO_KEYWORD_PATTERN);
|
|
155
|
+
if (m) {
|
|
156
|
+
const raw = m[1].trim().replace(/\.$/, "");
|
|
157
|
+
const words = raw.split(/[,\s]+/).map((w) => w.trim()).filter((w) => w.length > 0);
|
|
158
|
+
if (words.length === 0)
|
|
159
|
+
return null;
|
|
160
|
+
try {
|
|
161
|
+
return noKeywords(words);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
103
169
|
export function parseNl(text) {
|
|
170
|
+
// P2 response-content patterns first — keep them ahead of the
|
|
171
|
+
// generic keyword cascade so "response must not contain emails"
|
|
172
|
+
// doesn't get swallowed by something more general.
|
|
173
|
+
const respFormula = tryResponseContent(text);
|
|
174
|
+
if (respFormula)
|
|
175
|
+
return respFormula;
|
|
104
176
|
const lower = text.toLowerCase();
|
|
105
177
|
const tools = extractTools(text);
|
|
106
178
|
for (const rule of KEYWORD_RULES) {
|
|
@@ -146,7 +218,7 @@ export function parseNl(text) {
|
|
|
146
218
|
continue;
|
|
147
219
|
}
|
|
148
220
|
}
|
|
149
|
-
// Fallback: single-atom phrasings used in A/
|
|
221
|
+
// Fallback: single-atom phrasings used in A/G contract assumptions.
|
|
150
222
|
return parseBareCalledAtom(text, tools);
|
|
151
223
|
}
|
|
152
224
|
//# sourceMappingURL=nl-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nl-parser.js","sourceRoot":"","sources":["../../src/core/nl-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,UAAU,EAEV,QAAQ,EACR,QAAQ,
|
|
1
|
+
{"version":3,"file":"nl-parser.js","sourceRoot":"","sources":["../../src/core/nl-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* ``A: { pattern: called, args: [read, ".env"] }``), so the TS loader
|
|
17
17
|
* needs to build them from the same shape.
|
|
18
18
|
*/
|
|
19
|
-
import { type DetFormula, type
|
|
19
|
+
import { type DetFormula, type AssumeGuaranteePair } from "./patterns.js";
|
|
20
20
|
/** Error raised when a pattern name is unknown or args don't line up. */
|
|
21
21
|
export declare class PatternFactoryError extends Error {
|
|
22
22
|
}
|
|
@@ -30,9 +30,9 @@ export declare class PatternFactoryError extends Error {
|
|
|
30
30
|
* arrays. We coerce leniently so a hand-authored yaml doesn't
|
|
31
31
|
* crash on ``args: ["3"]`` instead of ``args: [3]``.
|
|
32
32
|
*/
|
|
33
|
-
export declare function buildPatternByName(pattern: string, args: unknown[]): DetFormula |
|
|
34
|
-
/** Type guard: is this an A/
|
|
35
|
-
export declare function
|
|
33
|
+
export declare function buildPatternByName(pattern: string, args: unknown[]): DetFormula | AssumeGuaranteePair | null;
|
|
34
|
+
/** Type guard: is this an A/G pair (``untrusted_source_gate`` / ``confirm_after_source``)? */
|
|
35
|
+
export declare function isAgPair(v: DetFormula | AssumeGuaranteePair): v is AssumeGuaranteePair;
|
|
36
36
|
/** All det pattern names this factory can build. Used by ``patterns`` CLI + tests. */
|
|
37
37
|
export declare const KNOWN_DET_PATTERNS: readonly string[];
|
|
38
38
|
//# sourceMappingURL=pattern-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-factory.d.ts","sourceRoot":"","sources":["../../src/core/pattern-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"pattern-factory.d.ts","sourceRoot":"","sources":["../../src/core/pattern-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EA6CL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACzB,MAAM,eAAe,CAAC;AAGvB,yEAAyE;AACzE,qBAAa,mBAAoB,SAAQ,KAAK;CAAG;AAiDjD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EAAE,GACd,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAyRzC;AAED,8FAA8F;AAC9F,wBAAgB,QAAQ,CACtB,CAAC,EAAE,UAAU,GAAG,mBAAmB,GAClC,CAAC,IAAI,mBAAmB,CAK1B;AAED,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EA+C9C,CAAC"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* ``A: { pattern: called, args: [read, ".env"] }``), so the TS loader
|
|
17
17
|
* needs to build them from the same shape.
|
|
18
18
|
*/
|
|
19
|
-
import { mustPrecede, alwaysFollowedBy, noReversal, requiresPermission, noDataLeak, mutualExclusion, rateLimit, idempotent, deadline, mustConfirm, cooldown, segregationOfDuty, boundedRetry, loopDetection, dryRunBeforeCommit, backupBeforeDestructive, auditAfter, approvalFreshness, sanitizedBeforeSink, duplicateCallLimit, argAllowlist, argBlacklist, scopeLimit, argLengthLimit, dataIntact, destructiveActionGate, untrustedSourceGate, requiredStepsCompletion, toolAllowlist, dangerousBashCommands, dangerousSqlVerbs, irreversibleOnce, confirmAfterSource, tokenBudget, argValueRange, delegationDepthLimit, } from "./patterns.js";
|
|
19
|
+
import { mustPrecede, alwaysFollowedBy, noReversal, requiresPermission, noDataLeak, mutualExclusion, rateLimit, idempotent, deadline, mustConfirm, cooldown, segregationOfDuty, boundedRetry, loopDetection, dryRunBeforeCommit, backupBeforeDestructive, auditAfter, approvalFreshness, sanitizedBeforeSink, duplicateCallLimit, argAllowlist, argBlacklist, scopeLimit, argLengthLimit, dataIntact, destructiveActionGate, untrustedSourceGate, requiredStepsCompletion, toolAllowlist, dangerousBashCommands, dangerousSqlVerbs, irreversibleOnce, confirmAfterSource, tokenBudget, argValueRange, delegationDepthLimit, maxLength, noPii, noKeywords, ctxRequired, ctxMatchesRequired, timeSince, approvalActive, neverTogether, } from "./patterns.js";
|
|
20
20
|
import { Atom } from "./formula.js";
|
|
21
21
|
/** Error raised when a pattern name is unknown or args don't line up. */
|
|
22
22
|
export class PatternFactoryError extends Error {
|
|
@@ -169,14 +169,48 @@ export function buildPatternByName(pattern, args) {
|
|
|
169
169
|
return tokenBudget(asNum(needArg(args, 0, "max_tokens"), "max_tokens"), args.length >= 2 ? asStr(args[1], "scope") : undefined);
|
|
170
170
|
case "delegation_depth_limit":
|
|
171
171
|
return delegationDepthLimit(asNum(needArg(args, 0, "max_depth"), "max_depth"));
|
|
172
|
+
// Layer 3 — response content
|
|
173
|
+
case "max_length": {
|
|
174
|
+
// Python signature: max_length(max_words=None, max_chars=None, desc="")
|
|
175
|
+
// YAML positional: [max_words, max_chars] (either may be null/missing).
|
|
176
|
+
const maxWords = args.length >= 1 && args[0] != null
|
|
177
|
+
? asNum(args[0], "max_words")
|
|
178
|
+
: undefined;
|
|
179
|
+
const maxChars = args.length >= 2 && args[1] != null
|
|
180
|
+
? asNum(args[1], "max_chars")
|
|
181
|
+
: undefined;
|
|
182
|
+
return maxLength({ maxWords, maxChars });
|
|
183
|
+
}
|
|
184
|
+
case "no_pii": {
|
|
185
|
+
// Python signature: no_pii(fields=None, desc="")
|
|
186
|
+
const fields = args.length >= 1 && args[0] != null
|
|
187
|
+
? asStrList(args[0], "fields")
|
|
188
|
+
: undefined;
|
|
189
|
+
return noPii(fields);
|
|
190
|
+
}
|
|
191
|
+
case "no_keywords":
|
|
192
|
+
return noKeywords(asStrList(needArg(args, 0, "words"), "words"));
|
|
193
|
+
// Layer 3 — external-fact (ctx) patterns
|
|
194
|
+
case "ctx_required":
|
|
195
|
+
return ctxRequired(asStr(needArg(args, 0, "tool"), "tool"), asStr(needArg(args, 1, "key"), "key"), asStrList(needArg(args, 2, "allowed_values"), "allowed_values"));
|
|
196
|
+
case "ctx_matches_required":
|
|
197
|
+
return ctxMatchesRequired(asStr(needArg(args, 0, "tool"), "tool"), asStr(needArg(args, 1, "key"), "key"), asStr(needArg(args, 2, "pattern"), "pattern"));
|
|
198
|
+
// Time-window patterns
|
|
199
|
+
case "time_since":
|
|
200
|
+
return timeSince(asStr(needArg(args, 0, "predicate_key"), "predicate_key"), asNum(needArg(args, 1, "max_seconds"), "max_seconds"));
|
|
201
|
+
case "approval_active":
|
|
202
|
+
return approvalActive(asStr(needArg(args, 0, "action"), "action"), asStr(needArg(args, 1, "role"), "role"), asNum(needArg(args, 2, "max_seconds"), "max_seconds"));
|
|
203
|
+
// Deprecated alias (mirrors Python — delegates to mutual_exclusion).
|
|
204
|
+
case "never_together":
|
|
205
|
+
return neverTogether(asStr(needArg(args, 0, "a"), "a"), asStr(needArg(args, 1, "b"), "b"));
|
|
172
206
|
default:
|
|
173
207
|
return null;
|
|
174
208
|
}
|
|
175
209
|
}
|
|
176
|
-
/** Type guard: is this an A/
|
|
177
|
-
export function
|
|
210
|
+
/** Type guard: is this an A/G pair (``untrusted_source_gate`` / ``confirm_after_source``)? */
|
|
211
|
+
export function isAgPair(v) {
|
|
178
212
|
return (v.assumption !== undefined &&
|
|
179
|
-
v.
|
|
213
|
+
v.guarantee !== undefined);
|
|
180
214
|
}
|
|
181
215
|
/** All det pattern names this factory can build. Used by ``patterns`` CLI + tests. */
|
|
182
216
|
export const KNOWN_DET_PATTERNS = Object.freeze([
|
|
@@ -218,5 +252,13 @@ export const KNOWN_DET_PATTERNS = Object.freeze([
|
|
|
218
252
|
"irreversible_once",
|
|
219
253
|
"token_budget",
|
|
220
254
|
"delegation_depth_limit",
|
|
255
|
+
"max_length",
|
|
256
|
+
"no_pii",
|
|
257
|
+
"no_keywords",
|
|
258
|
+
"ctx_required",
|
|
259
|
+
"ctx_matches_required",
|
|
260
|
+
"time_since",
|
|
261
|
+
"approval_active",
|
|
262
|
+
"never_together",
|
|
221
263
|
]);
|
|
222
264
|
//# sourceMappingURL=pattern-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-factory.js","sourceRoot":"","sources":["../../src/core/pattern-factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pattern-factory.js","sourceRoot":"","sources":["../../src/core/pattern-factory.ts"],"names":[],"mappings":"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"}
|
package/dist/core/patterns.d.ts
CHANGED
|
@@ -24,9 +24,9 @@ export interface DetFormula {
|
|
|
24
24
|
patternName: string;
|
|
25
25
|
liveness: boolean;
|
|
26
26
|
}
|
|
27
|
-
export interface
|
|
27
|
+
export interface AssumeGuaranteePair {
|
|
28
28
|
assumption: DetFormula;
|
|
29
|
-
|
|
29
|
+
guarantee: DetFormula;
|
|
30
30
|
}
|
|
31
31
|
export declare function mustPrecede(before: string, after: string): DetFormula;
|
|
32
32
|
export declare function alwaysFollowedBy(trigger: string, response: string): DetFormula;
|
|
@@ -54,14 +54,88 @@ export declare function scopeLimit(tool: string, allowedPaths: string[]): DetFor
|
|
|
54
54
|
export declare function argLengthLimit(tool: string, param: string, maxChars: number): DetFormula;
|
|
55
55
|
export declare function dataIntact(boundTool: string, originalPaths: string[]): DetFormula;
|
|
56
56
|
export declare function destructiveActionGate(tool: string, approverRole?: string): DetFormula;
|
|
57
|
-
export declare function untrustedSourceGate(source: string, sink: string, confirm?: string):
|
|
57
|
+
export declare function untrustedSourceGate(source: string, sink: string, confirm?: string): AssumeGuaranteePair;
|
|
58
58
|
export declare function requiredStepsCompletion(trigger: string, steps: string[]): DetFormula;
|
|
59
59
|
export declare function toolAllowlist(allowedTools: string[]): DetFormula;
|
|
60
60
|
export declare function dangerousBashCommands(forbidden?: string[]): DetFormula;
|
|
61
61
|
export declare function dangerousSqlVerbs(tool?: string, forbidden?: string[]): DetFormula;
|
|
62
62
|
export declare function irreversibleOnce(action: string): DetFormula;
|
|
63
|
-
export declare function confirmAfterSource(source: string, action: string):
|
|
63
|
+
export declare function confirmAfterSource(source: string, action: string): AssumeGuaranteePair;
|
|
64
64
|
export declare function tokenBudget(maxTokens: number, scope?: string): DetFormula;
|
|
65
65
|
export declare function argValueRange(tool: string, field: string, minVal?: number, maxVal?: number): DetFormula;
|
|
66
66
|
export declare function delegationDepthLimit(maxDepth: number): DetFormula;
|
|
67
|
+
/**
|
|
68
|
+
* Response length must stay within the given word / character budget.
|
|
69
|
+
*
|
|
70
|
+
* Grounded against ``response_words`` / ``response_chars`` populated on
|
|
71
|
+
* ``llm_response`` events with content. At non-response events both
|
|
72
|
+
* default to 0, so the constraint is vacuously satisfied.
|
|
73
|
+
*/
|
|
74
|
+
export declare function maxLength(opts: {
|
|
75
|
+
maxWords?: number;
|
|
76
|
+
maxChars?: number;
|
|
77
|
+
desc?: string;
|
|
78
|
+
}): DetFormula;
|
|
79
|
+
/**
|
|
80
|
+
* Response must not contain regex-detectable PII (SSN, CC, email, phone).
|
|
81
|
+
*
|
|
82
|
+
* Uses the ``llm_said`` grounding atom — the selected default patterns
|
|
83
|
+
* are joined with ``|`` and matched against each ``llm_response`` event.
|
|
84
|
+
* For semantic PII detection (names, contextual identifiers) use a sto
|
|
85
|
+
* atom; this pattern only covers syntactic PII.
|
|
86
|
+
*/
|
|
87
|
+
export declare function noPii(fields?: string[]): DetFormula;
|
|
88
|
+
/**
|
|
89
|
+
* Response must not contain any of the given keywords. Keywords are
|
|
90
|
+
* escaped and joined into a word-boundary-anchored regex checked
|
|
91
|
+
* against each ``llm_response`` event via ``llm_said``.
|
|
92
|
+
*
|
|
93
|
+
* JS regex doesn't support inline ``(?i)`` flags — we lower-case the
|
|
94
|
+
* regex by expanding letters to ``[aA]``-style char classes, matching
|
|
95
|
+
* Python's ``(?i)`` semantics.
|
|
96
|
+
*/
|
|
97
|
+
export declare function noKeywords(words: string[]): DetFormula;
|
|
98
|
+
/**
|
|
99
|
+
* When ``tool`` is called, ``ctx[key]`` must be one of ``allowedValues``.
|
|
100
|
+
* Fail-closed: missing context evaluates to violation, so forgetting
|
|
101
|
+
* to wire ``observeContext`` is loud rather than silent.
|
|
102
|
+
*/
|
|
103
|
+
export declare function ctxRequired(tool: string, key: string, allowedValues: string[]): DetFormula;
|
|
104
|
+
/**
|
|
105
|
+
* When ``tool`` is called, ``ctx[key]`` must match the regex ``pattern``.
|
|
106
|
+
* Regex variant of :func:`ctxRequired` for cases where the allowed set
|
|
107
|
+
* is better expressed as a pattern than an exhaustive list.
|
|
108
|
+
*/
|
|
109
|
+
export declare function ctxMatchesRequired(tool: string, key: string, pattern: string): DetFormula;
|
|
110
|
+
/**
|
|
111
|
+
* Constrain how recently a predicate was last true. The argument is the
|
|
112
|
+
* grounded predicate key string (e.g. ``"called(refund)"`` or
|
|
113
|
+
* ``"ctx(approval.role, alice)"``) — same convention as Python's
|
|
114
|
+
* ``time_since`` factory.
|
|
115
|
+
*/
|
|
116
|
+
export declare function timeSince(predicateKey: string, maxSeconds: number): DetFormula;
|
|
117
|
+
/**
|
|
118
|
+
* Gate ``action`` on a recent allow-decision approval from ``role``.
|
|
119
|
+
*
|
|
120
|
+
* Compiles to::
|
|
121
|
+
* G(called(action) → (
|
|
122
|
+
* ctx_matches("approval.role", role)
|
|
123
|
+
* ∧ ctx_matches("approval.decision", "allow")
|
|
124
|
+
* ∧ time_since("ctx(approval.role, role)") ≤ maxSeconds
|
|
125
|
+
* ))
|
|
126
|
+
*
|
|
127
|
+
* Pairs with ``observeApproval({role, decision})`` on the integration
|
|
128
|
+
* side.
|
|
129
|
+
*/
|
|
130
|
+
export declare function approvalActive(action: string, role: string, maxSeconds: number): DetFormula;
|
|
131
|
+
/**
|
|
132
|
+
* @deprecated — use :func:`mutualExclusion` instead.
|
|
133
|
+
*
|
|
134
|
+
* In sequential traces, two tool calls are always at different
|
|
135
|
+
* timesteps, so the formula ``G(¬(called(A) ∧ called(B)))`` is
|
|
136
|
+
* trivially satisfied and can never detect violations. Delegates to
|
|
137
|
+
* ``mutualExclusion`` for correct behavior; kept so yaml authored
|
|
138
|
+
* against Python's deprecated entry still loads.
|
|
139
|
+
*/
|
|
140
|
+
export declare function neverTogether(a: string, b: string): DetFormula;
|
|
67
141
|
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/core/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,OAAO,EAGR,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/core/patterns.ts"],"names":[],"mappings":"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"}
|
package/dist/core/patterns.js
CHANGED
|
@@ -187,7 +187,11 @@ export function deadline(trigger, action, steps) {
|
|
|
187
187
|
formula: f,
|
|
188
188
|
desc: `\`${action}\` must occur within ${steps} steps of \`${trigger}\``,
|
|
189
189
|
patternName: "deadline",
|
|
190
|
-
liveness:
|
|
190
|
+
// Bounded-window liveness: ``X(boundedEventually(action, steps))``
|
|
191
|
+
// is decidable on a bounded prefix (steps + 1 events past the
|
|
192
|
+
// trigger), so it CAN fire mid-session — runtime parity with
|
|
193
|
+
// Python ``deadline.liveness == False``.
|
|
194
|
+
liveness: false,
|
|
191
195
|
};
|
|
192
196
|
}
|
|
193
197
|
export function mustConfirm(action) {
|
|
@@ -392,7 +396,7 @@ export function untrustedSourceGate(source, sink, confirm = "") {
|
|
|
392
396
|
patternName: "untrusted_source_gate_assumption",
|
|
393
397
|
liveness: false,
|
|
394
398
|
},
|
|
395
|
-
|
|
399
|
+
guarantee: mustPrecede(confirmAction, sink),
|
|
396
400
|
};
|
|
397
401
|
}
|
|
398
402
|
export function requiredStepsCompletion(trigger, steps) {
|
|
@@ -531,7 +535,7 @@ export function confirmAfterSource(source, action) {
|
|
|
531
535
|
patternName: "confirm_after_source_assumption",
|
|
532
536
|
liveness: false,
|
|
533
537
|
},
|
|
534
|
-
|
|
538
|
+
guarantee: mustPrecede(confirm, action),
|
|
535
539
|
};
|
|
536
540
|
}
|
|
537
541
|
// --- Resource / delegation patterns ---
|
|
@@ -582,4 +586,208 @@ export function delegationDepthLimit(maxDepth) {
|
|
|
582
586
|
liveness: false,
|
|
583
587
|
};
|
|
584
588
|
}
|
|
589
|
+
// --- Layer 3 — Response content patterns ---
|
|
590
|
+
/** Default PII regex set, mirrored from Python ``_DEFAULT_PII_PATTERNS``. */
|
|
591
|
+
const DEFAULT_PII_PATTERNS = {
|
|
592
|
+
ssn: "\\b\\d{3}-\\d{2}-\\d{4}\\b",
|
|
593
|
+
credit_card: "\\b\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}\\b",
|
|
594
|
+
email: "\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b",
|
|
595
|
+
phone: "\\b(?:\\+?1[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}\\b",
|
|
596
|
+
};
|
|
597
|
+
/**
|
|
598
|
+
* Response length must stay within the given word / character budget.
|
|
599
|
+
*
|
|
600
|
+
* Grounded against ``response_words`` / ``response_chars`` populated on
|
|
601
|
+
* ``llm_response`` events with content. At non-response events both
|
|
602
|
+
* default to 0, so the constraint is vacuously satisfied.
|
|
603
|
+
*/
|
|
604
|
+
export function maxLength(opts) {
|
|
605
|
+
const { maxWords, maxChars, desc } = opts;
|
|
606
|
+
if (maxWords == null && maxChars == null) {
|
|
607
|
+
throw new Error("max_length requires maxWords or maxChars");
|
|
608
|
+
}
|
|
609
|
+
const parts = [];
|
|
610
|
+
if (maxWords != null)
|
|
611
|
+
parts.push(new Le(new Var("response_words"), new Const(maxWords)));
|
|
612
|
+
if (maxChars != null)
|
|
613
|
+
parts.push(new Le(new Var("response_chars"), new Const(maxChars)));
|
|
614
|
+
const body = parts.length === 1 ? parts[0] : new And(parts[0], parts[1]);
|
|
615
|
+
const f = new G(body);
|
|
616
|
+
let descStr;
|
|
617
|
+
if (desc)
|
|
618
|
+
descStr = desc;
|
|
619
|
+
else if (maxWords != null && maxChars != null)
|
|
620
|
+
descStr = `response ≤ ${maxWords} words and ≤ ${maxChars} chars`;
|
|
621
|
+
else if (maxWords != null)
|
|
622
|
+
descStr = `response ≤ ${maxWords} words`;
|
|
623
|
+
else
|
|
624
|
+
descStr = `response ≤ ${maxChars} chars`;
|
|
625
|
+
return {
|
|
626
|
+
formula: f,
|
|
627
|
+
desc: descStr,
|
|
628
|
+
patternName: "max_length",
|
|
629
|
+
liveness: false,
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
/**
|
|
633
|
+
* Response must not contain regex-detectable PII (SSN, CC, email, phone).
|
|
634
|
+
*
|
|
635
|
+
* Uses the ``llm_said`` grounding atom — the selected default patterns
|
|
636
|
+
* are joined with ``|`` and matched against each ``llm_response`` event.
|
|
637
|
+
* For semantic PII detection (names, contextual identifiers) use a sto
|
|
638
|
+
* atom; this pattern only covers syntactic PII.
|
|
639
|
+
*/
|
|
640
|
+
export function noPii(fields) {
|
|
641
|
+
const selected = fields ?? Object.keys(DEFAULT_PII_PATTERNS);
|
|
642
|
+
const unknown = selected.filter((f) => !(f in DEFAULT_PII_PATTERNS));
|
|
643
|
+
if (unknown.length > 0) {
|
|
644
|
+
throw new Error(`unknown PII field(s): ${JSON.stringify(unknown.sort())}. ` +
|
|
645
|
+
`Available: ${JSON.stringify(Object.keys(DEFAULT_PII_PATTERNS).sort())}`);
|
|
646
|
+
}
|
|
647
|
+
const pattern = selected.map((f) => DEFAULT_PII_PATTERNS[f]).join("|");
|
|
648
|
+
const f = new G(new Not(new Atom("llm_said", [pattern])));
|
|
649
|
+
return {
|
|
650
|
+
formula: f,
|
|
651
|
+
desc: `response must not contain PII (${selected.join(", ")})`,
|
|
652
|
+
patternName: "no_pii",
|
|
653
|
+
liveness: false,
|
|
654
|
+
};
|
|
655
|
+
}
|
|
656
|
+
/**
|
|
657
|
+
* Response must not contain any of the given keywords. Keywords are
|
|
658
|
+
* escaped and joined into a word-boundary-anchored regex checked
|
|
659
|
+
* against each ``llm_response`` event via ``llm_said``.
|
|
660
|
+
*
|
|
661
|
+
* JS regex doesn't support inline ``(?i)`` flags — we lower-case the
|
|
662
|
+
* regex by expanding letters to ``[aA]``-style char classes, matching
|
|
663
|
+
* Python's ``(?i)`` semantics.
|
|
664
|
+
*/
|
|
665
|
+
export function noKeywords(words) {
|
|
666
|
+
if (!words || words.length === 0) {
|
|
667
|
+
throw new Error("no_keywords requires at least one keyword");
|
|
668
|
+
}
|
|
669
|
+
const pattern = `\\b(${words.map((w) => caseInsensitiveLiteral(w)).join("|")})\\b`;
|
|
670
|
+
const f = new G(new Not(new Atom("llm_said", [pattern])));
|
|
671
|
+
return {
|
|
672
|
+
formula: f,
|
|
673
|
+
desc: `response must not contain keywords: ${JSON.stringify(words)}`,
|
|
674
|
+
patternName: "no_keywords",
|
|
675
|
+
liveness: false,
|
|
676
|
+
};
|
|
677
|
+
}
|
|
678
|
+
// --- Layer 3 — External-fact (ctx) patterns ---
|
|
679
|
+
/**
|
|
680
|
+
* When ``tool`` is called, ``ctx[key]`` must be one of ``allowedValues``.
|
|
681
|
+
* Fail-closed: missing context evaluates to violation, so forgetting
|
|
682
|
+
* to wire ``observeContext`` is loud rather than silent.
|
|
683
|
+
*/
|
|
684
|
+
export function ctxRequired(tool, key, allowedValues) {
|
|
685
|
+
ensureNonEmpty(tool, "ctxRequired", "tool");
|
|
686
|
+
ensureNonEmpty(key, "ctxRequired", "key");
|
|
687
|
+
if (!allowedValues || allowedValues.length === 0) {
|
|
688
|
+
throw new Error("ctx_required: 'allowed_values' must not be empty — an empty " +
|
|
689
|
+
"allowlist rejects every call to the tool. Use " +
|
|
690
|
+
"`tool_allowlist([])` if you really want to block everything.");
|
|
691
|
+
}
|
|
692
|
+
const cleanValues = allowedValues.map((v) => String(v));
|
|
693
|
+
let disjunction = new Atom("ctx", [key, cleanValues[0]]);
|
|
694
|
+
for (let i = 1; i < cleanValues.length; i++) {
|
|
695
|
+
disjunction = new Or(disjunction, new Atom("ctx", [key, cleanValues[i]]));
|
|
696
|
+
}
|
|
697
|
+
const f = new G(new Implies(called(tool), disjunction));
|
|
698
|
+
return {
|
|
699
|
+
formula: f,
|
|
700
|
+
desc: `${tool} requires ctx[${key}] ∈ [${cleanValues.join(", ")}]`,
|
|
701
|
+
patternName: "ctx_required",
|
|
702
|
+
liveness: false,
|
|
703
|
+
};
|
|
704
|
+
}
|
|
705
|
+
/**
|
|
706
|
+
* When ``tool`` is called, ``ctx[key]`` must match the regex ``pattern``.
|
|
707
|
+
* Regex variant of :func:`ctxRequired` for cases where the allowed set
|
|
708
|
+
* is better expressed as a pattern than an exhaustive list.
|
|
709
|
+
*/
|
|
710
|
+
export function ctxMatchesRequired(tool, key, pattern) {
|
|
711
|
+
ensureNonEmpty(tool, "ctxMatchesRequired", "tool");
|
|
712
|
+
ensureNonEmpty(key, "ctxMatchesRequired", "key");
|
|
713
|
+
ensureNonEmpty(pattern, "ctxMatchesRequired", "pattern");
|
|
714
|
+
const f = new G(new Implies(called(tool), new Atom("ctx_matches", [key, pattern])));
|
|
715
|
+
return {
|
|
716
|
+
formula: f,
|
|
717
|
+
desc: `${tool} requires ctx[${key}] to match /${pattern}/`,
|
|
718
|
+
patternName: "ctx_matches_required",
|
|
719
|
+
liveness: false,
|
|
720
|
+
};
|
|
721
|
+
}
|
|
722
|
+
// --- Time-window patterns (event-clock) ---
|
|
723
|
+
/**
|
|
724
|
+
* Constrain how recently a predicate was last true. The argument is the
|
|
725
|
+
* grounded predicate key string (e.g. ``"called(refund)"`` or
|
|
726
|
+
* ``"ctx(approval.role, alice)"``) — same convention as Python's
|
|
727
|
+
* ``time_since`` factory.
|
|
728
|
+
*/
|
|
729
|
+
export function timeSince(predicateKey, maxSeconds) {
|
|
730
|
+
ensureNonEmpty(predicateKey, "timeSince", "predicate_key");
|
|
731
|
+
if (typeof maxSeconds !== "number" || !Number.isFinite(maxSeconds) || maxSeconds < 0) {
|
|
732
|
+
throw new Error(`time_since: max_seconds must be a non-negative number (got ${maxSeconds}).`);
|
|
733
|
+
}
|
|
734
|
+
const f = new G(new Le(new Var("time_since", predicateKey), new Const(maxSeconds)));
|
|
735
|
+
return {
|
|
736
|
+
formula: f,
|
|
737
|
+
desc: `${predicateKey} must have occurred within last ${maxSeconds}s`,
|
|
738
|
+
patternName: "time_since",
|
|
739
|
+
liveness: false,
|
|
740
|
+
};
|
|
741
|
+
}
|
|
742
|
+
/**
|
|
743
|
+
* Gate ``action`` on a recent allow-decision approval from ``role``.
|
|
744
|
+
*
|
|
745
|
+
* Compiles to::
|
|
746
|
+
* G(called(action) → (
|
|
747
|
+
* ctx_matches("approval.role", role)
|
|
748
|
+
* ∧ ctx_matches("approval.decision", "allow")
|
|
749
|
+
* ∧ time_since("ctx(approval.role, role)") ≤ maxSeconds
|
|
750
|
+
* ))
|
|
751
|
+
*
|
|
752
|
+
* Pairs with ``observeApproval({role, decision})`` on the integration
|
|
753
|
+
* side.
|
|
754
|
+
*/
|
|
755
|
+
export function approvalActive(action, role, maxSeconds) {
|
|
756
|
+
ensureNonEmpty(action, "approvalActive", "action");
|
|
757
|
+
ensureNonEmpty(role, "approvalActive", "role");
|
|
758
|
+
if (typeof maxSeconds !== "number" || !Number.isFinite(maxSeconds) || maxSeconds < 0) {
|
|
759
|
+
throw new Error(`approval_active: max_seconds must be a non-negative number (got ${maxSeconds}).`);
|
|
760
|
+
}
|
|
761
|
+
// Match Python: ``role_key = f"ctx(approval.role, {role})"`` — exact
|
|
762
|
+
// string used as the time_since target. predKey would escape spaces /
|
|
763
|
+
// commas; keep the unescaped form so the time_since extractor passes
|
|
764
|
+
// the right key through to grounding's ``state.last_ts`` lookup.
|
|
765
|
+
const roleKey = `ctx(approval.role, ${role})`;
|
|
766
|
+
const escaped = role.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
767
|
+
const body = new And(new And(new Atom("ctx_matches", ["approval.role", escaped]), new Atom("ctx_matches", ["approval.decision", "allow"])), new Le(new Var("time_since", roleKey), new Const(maxSeconds)));
|
|
768
|
+
const f = new G(new Implies(called(action), body));
|
|
769
|
+
return {
|
|
770
|
+
formula: f,
|
|
771
|
+
desc: `${action} requires active ${role} approval (≤${maxSeconds}s old)`,
|
|
772
|
+
patternName: "approval_active",
|
|
773
|
+
liveness: false,
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
/**
|
|
777
|
+
* @deprecated — use :func:`mutualExclusion` instead.
|
|
778
|
+
*
|
|
779
|
+
* In sequential traces, two tool calls are always at different
|
|
780
|
+
* timesteps, so the formula ``G(¬(called(A) ∧ called(B)))`` is
|
|
781
|
+
* trivially satisfied and can never detect violations. Delegates to
|
|
782
|
+
* ``mutualExclusion`` for correct behavior; kept so yaml authored
|
|
783
|
+
* against Python's deprecated entry still loads.
|
|
784
|
+
*/
|
|
785
|
+
export function neverTogether(a, b) {
|
|
786
|
+
const me = mutualExclusion(a, b);
|
|
787
|
+
return {
|
|
788
|
+
...me,
|
|
789
|
+
patternName: "never_together",
|
|
790
|
+
desc: `${a} and ${b} must never occur together`,
|
|
791
|
+
};
|
|
792
|
+
}
|
|
585
793
|
//# sourceMappingURL=patterns.js.map
|