@inhuman.tools/policy 0.1.0 → 0.2.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/LICENSE.md +7 -0
- package/package.json +5 -5
- package/dist/decide.d.ts +0 -64
- package/dist/decide.d.ts.map +0 -1
- package/dist/decide.js +0 -482
- package/dist/decide.js.map +0 -1
- package/dist/error-with-invariant.d.ts +0 -9
- package/dist/error-with-invariant.d.ts.map +0 -1
- package/dist/error-with-invariant.js +0 -12
- package/dist/error-with-invariant.js.map +0 -1
- package/dist/license-law.d.ts +0 -43
- package/dist/license-law.d.ts.map +0 -1
- package/dist/license-law.js +0 -129
- package/dist/license-law.js.map +0 -1
- package/dist/license.d.ts +0 -3
- package/dist/license.d.ts.map +0 -1
- package/dist/license.js +0 -2
- package/dist/license.js.map +0 -1
- package/dist/peel-cwd.d.ts +0 -8
- package/dist/peel-cwd.d.ts.map +0 -1
- package/dist/peel-cwd.js +0 -120
- package/dist/peel-cwd.js.map +0 -1
- package/dist/prep.d.ts +0 -58
- package/dist/prep.d.ts.map +0 -1
- package/dist/prep.js +0 -690
- package/dist/prep.js.map +0 -1
- package/dist/schemas/tirith.d.ts +0 -58
- package/dist/schemas/tirith.d.ts.map +0 -1
- package/dist/schemas/tirith.js +0 -23
- package/dist/schemas/tirith.js.map +0 -1
- package/dist/tirith-units.d.ts +0 -2
- package/dist/tirith-units.d.ts.map +0 -1
- package/dist/tirith-units.js +0 -227
- package/dist/tirith-units.js.map +0 -1
- package/dist/tirith.d.ts +0 -24
- package/dist/tirith.d.ts.map +0 -1
- package/dist/tirith.js +0 -311
- package/dist/tirith.js.map +0 -1
package/LICENSE.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright 2026 Merkle Bonsai
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inhuman.tools/policy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "JSON floor and the authorization program. The caller supplies the decide capability.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -27,16 +27,16 @@
|
|
|
27
27
|
"@here.build/arrival": "^0.10.2",
|
|
28
28
|
"minimatch": "10.2.6",
|
|
29
29
|
"zod": "^4.4.3",
|
|
30
|
-
"@inhuman.tools/error-with-invariant": "^0.
|
|
31
|
-
"@inhuman.tools/policy-bash-disassembler": "^0.
|
|
30
|
+
"@inhuman.tools/error-with-invariant": "^0.2.0",
|
|
31
|
+
"@inhuman.tools/policy-bash-disassembler": "^0.2.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^24.0.0",
|
|
35
35
|
"eslint": "9.39.2",
|
|
36
36
|
"typescript": "6.0.2",
|
|
37
37
|
"vitest": "4.1.0",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
38
|
+
"@inhuman.tools/env-capability-decision-structured": "^0.0.1",
|
|
39
|
+
"@-internal-/eslint-configs": "0.0.0"
|
|
40
40
|
},
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"repository": {
|
package/dist/decide.d.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Votes. `complete` returns JSON `{ value }`. Scheme `#f` is an abstain.
|
|
3
|
-
* Sage and Jev build that same object. A thrown error falls back to `complete`;
|
|
4
|
-
* an abort does not. A failure is never an allow. Jev has no sort.
|
|
5
|
-
*/
|
|
6
|
-
import { EnvCapability } from "@inhuman.tools/arrival";
|
|
7
|
-
import { z } from "zod";
|
|
8
|
-
import { ErrorWithInvariant } from "./error-with-invariant.js";
|
|
9
|
-
export declare class DecideError extends ErrorWithInvariant {
|
|
10
|
-
readonly name = "DecideError";
|
|
11
|
-
}
|
|
12
|
-
export type DecideRequest = {
|
|
13
|
-
kind: "yesno";
|
|
14
|
-
instructions: string;
|
|
15
|
-
} | {
|
|
16
|
-
kind: "choose";
|
|
17
|
-
instructions: string;
|
|
18
|
-
options: readonly {
|
|
19
|
-
option: string;
|
|
20
|
-
description?: string;
|
|
21
|
-
}[];
|
|
22
|
-
} | {
|
|
23
|
-
kind: "scale";
|
|
24
|
-
instructions: string;
|
|
25
|
-
levels: readonly {
|
|
26
|
-
level: number;
|
|
27
|
-
description?: string;
|
|
28
|
-
}[];
|
|
29
|
-
} | {
|
|
30
|
-
kind: "gauge";
|
|
31
|
-
instructions: string;
|
|
32
|
-
start: number;
|
|
33
|
-
end: number;
|
|
34
|
-
step: number;
|
|
35
|
-
} | {
|
|
36
|
-
kind: "tag";
|
|
37
|
-
instructions: string;
|
|
38
|
-
tags: readonly {
|
|
39
|
-
tag: string;
|
|
40
|
-
description?: string;
|
|
41
|
-
}[];
|
|
42
|
-
} | {
|
|
43
|
-
kind: "sort";
|
|
44
|
-
instructions: string;
|
|
45
|
-
items: readonly {
|
|
46
|
-
id: string;
|
|
47
|
-
content: string;
|
|
48
|
-
}[];
|
|
49
|
-
};
|
|
50
|
-
export type DecideComplete = (request: DecideRequest) => Promise<unknown>;
|
|
51
|
-
export declare const decideCapability: EnvCapability<{
|
|
52
|
-
backend: z.ZodDefault<z.ZodEnum<{
|
|
53
|
-
structured: "structured";
|
|
54
|
-
sage: "sage";
|
|
55
|
-
jev: "jev";
|
|
56
|
-
}>>;
|
|
57
|
-
complete: z.ZodOptional<z.ZodFunction<z.ZodTuple<readonly [z.ZodType<DecideRequest, DecideRequest, z.core.$ZodTypeInternals<DecideRequest, DecideRequest>>], null>, z.ZodPromise<z.ZodUnknown>>>;
|
|
58
|
-
document: z.ZodDefault<z.ZodString>;
|
|
59
|
-
sageApiKey: z.ZodOptional<z.ZodString>;
|
|
60
|
-
jevApiKey: z.ZodOptional<z.ZodString>;
|
|
61
|
-
sageAsk: z.ZodOptional<z.ZodFunction<z.ZodTuple<readonly [z.ZodString, z.ZodType<DecideRequest, DecideRequest, z.core.$ZodTypeInternals<DecideRequest, DecideRequest>>], null>, z.ZodPromise<z.ZodUnknown>>>;
|
|
62
|
-
jevAsk: z.ZodOptional<z.ZodFunction<z.ZodTuple<readonly [z.ZodString, z.ZodType<DecideRequest, DecideRequest, z.core.$ZodTypeInternals<DecideRequest, DecideRequest>>], null>, z.ZodPromise<z.ZodUnknown>>>;
|
|
63
|
-
}, Record<string, never>>;
|
|
64
|
-
//# sourceMappingURL=decide.d.ts.map
|
package/dist/decide.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AASvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,qBAAa,WAAY,SAAQ,kBAAkB;IACjD,SAAkB,IAAI,iBAAiB;CACxC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GACtG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GAC7F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC;AAE9F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAyb1E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;yBAkF3B,CAAC"}
|
package/dist/decide.js
DELETED
|
@@ -1,482 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Votes. `complete` returns JSON `{ value }`. Scheme `#f` is an abstain.
|
|
3
|
-
* Sage and Jev build that same object. A thrown error falls back to `complete`;
|
|
4
|
-
* an abort does not. A failure is never an allow. Jev has no sort.
|
|
5
|
-
*/
|
|
6
|
-
import { EnvCapability } from "@inhuman.tools/arrival";
|
|
7
|
-
import { APIUserAbortError, TypeSafeClient, choice as choiceQuestion, noul, score as scoreQuestion, } from "@typesafe-ai/sdk";
|
|
8
|
-
import { SageSDK } from "sage-sdk";
|
|
9
|
-
import { z } from "zod";
|
|
10
|
-
import { ErrorWithInvariant } from "./error-with-invariant.js";
|
|
11
|
-
export class DecideError extends ErrorWithInvariant {
|
|
12
|
-
name = "DecideError";
|
|
13
|
-
}
|
|
14
|
-
const NOT_A_VOTE = "decide: structured answer is not a vote";
|
|
15
|
-
const described = { description: z.string().optional() };
|
|
16
|
-
const decideRequest = z.discriminatedUnion("kind", [
|
|
17
|
-
z.object({ kind: z.literal("yesno"), instructions: z.string() }),
|
|
18
|
-
z.object({
|
|
19
|
-
kind: z.literal("choose"),
|
|
20
|
-
instructions: z.string(),
|
|
21
|
-
options: z.array(z.object({ option: z.string(), ...described })).readonly(),
|
|
22
|
-
}),
|
|
23
|
-
z.object({
|
|
24
|
-
kind: z.literal("scale"),
|
|
25
|
-
instructions: z.string(),
|
|
26
|
-
levels: z.array(z.object({ level: z.number(), ...described })).readonly(),
|
|
27
|
-
}),
|
|
28
|
-
z.object({
|
|
29
|
-
kind: z.literal("gauge"),
|
|
30
|
-
instructions: z.string(),
|
|
31
|
-
start: z.number(),
|
|
32
|
-
end: z.number(),
|
|
33
|
-
step: z.number(),
|
|
34
|
-
}),
|
|
35
|
-
z.object({
|
|
36
|
-
kind: z.literal("tag"),
|
|
37
|
-
instructions: z.string(),
|
|
38
|
-
tags: z.array(z.object({ tag: z.string(), ...described })).readonly(),
|
|
39
|
-
}),
|
|
40
|
-
z.object({
|
|
41
|
-
kind: z.literal("sort"),
|
|
42
|
-
instructions: z.string(),
|
|
43
|
-
items: z.array(z.object({ id: z.string(), content: z.string() })).readonly(),
|
|
44
|
-
}),
|
|
45
|
-
]);
|
|
46
|
-
const decideConfiguration = {
|
|
47
|
-
backend: z.enum(["structured", "sage", "jev"]).default("structured"),
|
|
48
|
-
complete: z
|
|
49
|
-
.function({
|
|
50
|
-
input: [decideRequest],
|
|
51
|
-
output: z.promise(z.unknown()),
|
|
52
|
-
})
|
|
53
|
-
.optional(),
|
|
54
|
-
document: z.string().default(""),
|
|
55
|
-
sageApiKey: z.string().optional(),
|
|
56
|
-
jevApiKey: z.string().optional(),
|
|
57
|
-
sageAsk: z
|
|
58
|
-
.function({
|
|
59
|
-
input: [z.string(), decideRequest],
|
|
60
|
-
output: z.promise(z.unknown()),
|
|
61
|
-
})
|
|
62
|
-
.optional(),
|
|
63
|
-
jevAsk: z
|
|
64
|
-
.function({
|
|
65
|
-
input: [z.string(), decideRequest],
|
|
66
|
-
output: z.promise(z.unknown()),
|
|
67
|
-
})
|
|
68
|
-
.optional(),
|
|
69
|
-
};
|
|
70
|
-
function isRecord(value) {
|
|
71
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
72
|
-
}
|
|
73
|
-
function jsonValue(raw) {
|
|
74
|
-
let parsed = raw;
|
|
75
|
-
if (typeof raw === "string") {
|
|
76
|
-
try {
|
|
77
|
-
parsed = JSON.parse(raw);
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
throw new DecideError(NOT_A_VOTE);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (!isRecord(parsed) || !Object.hasOwn(parsed, "value"))
|
|
84
|
-
throw new DecideError(NOT_A_VOTE);
|
|
85
|
-
return parsed.value;
|
|
86
|
-
}
|
|
87
|
-
function ask(complete, request) {
|
|
88
|
-
DecideError.invariant(complete !== undefined, "decide: no structured complete");
|
|
89
|
-
return complete(request);
|
|
90
|
-
}
|
|
91
|
-
function isAbort(error) {
|
|
92
|
-
return (error instanceof Error && error.name === "AbortError") || error instanceof APIUserAbortError;
|
|
93
|
-
}
|
|
94
|
-
function judgedDocument(document, instructions) {
|
|
95
|
-
return document === "" ? instructions : document;
|
|
96
|
-
}
|
|
97
|
-
function nonEmpty(description) {
|
|
98
|
-
return description === undefined || description === "" ? undefined : description;
|
|
99
|
-
}
|
|
100
|
-
function askKey(key) {
|
|
101
|
-
if (key === undefined || key === "")
|
|
102
|
-
throw new DecideError("decide: missing api key");
|
|
103
|
-
return key;
|
|
104
|
-
}
|
|
105
|
-
async function vote(configuration, request) {
|
|
106
|
-
switch (configuration.backend) {
|
|
107
|
-
case "structured":
|
|
108
|
-
return ask(configuration.complete, request);
|
|
109
|
-
case "sage":
|
|
110
|
-
case "jev":
|
|
111
|
-
try {
|
|
112
|
-
const raw = configuration.backend === "sage"
|
|
113
|
-
? await sageVote(configuration, request)
|
|
114
|
-
: await jevVote(configuration, request);
|
|
115
|
-
return { value: jsonValue(raw) };
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
if (isAbort(error))
|
|
119
|
-
throw error;
|
|
120
|
-
return ask(configuration.complete, request);
|
|
121
|
-
}
|
|
122
|
-
default: {
|
|
123
|
-
const unreachable = configuration.backend;
|
|
124
|
-
return unreachable;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
function chooseOptions(options) {
|
|
129
|
-
const record = {};
|
|
130
|
-
for (const { option, description } of options) {
|
|
131
|
-
const text = nonEmpty(description);
|
|
132
|
-
if (text === undefined) {
|
|
133
|
-
return options.map((row) => {
|
|
134
|
-
const rowText = nonEmpty(row.description);
|
|
135
|
-
return rowText === undefined ? { option: row.option } : { option: row.option, description: rowText };
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
record[option] = text;
|
|
139
|
-
}
|
|
140
|
-
return record;
|
|
141
|
-
}
|
|
142
|
-
function sortIds(ranked) {
|
|
143
|
-
if (!Array.isArray(ranked))
|
|
144
|
-
throw new DecideError(NOT_A_VOTE);
|
|
145
|
-
const ids = [];
|
|
146
|
-
for (const item of ranked) {
|
|
147
|
-
if (!isRecord(item) || typeof item.id !== "string")
|
|
148
|
-
throw new DecideError(NOT_A_VOTE);
|
|
149
|
-
ids.push(item.id);
|
|
150
|
-
}
|
|
151
|
-
return ids;
|
|
152
|
-
}
|
|
153
|
-
async function sageScale(sage, request) {
|
|
154
|
-
const levels = request.levels.map((row) => {
|
|
155
|
-
const text = nonEmpty(row.description);
|
|
156
|
-
return text === undefined ? { level: row.level } : { level: row.level, description: text };
|
|
157
|
-
});
|
|
158
|
-
// Older clients may lack scale. Gauge then spans the level numbers.
|
|
159
|
-
const widened = sage;
|
|
160
|
-
if (widened.scale !== undefined) {
|
|
161
|
-
const reading = await sage.scale(request.instructions, levels);
|
|
162
|
-
return { value: reading.value };
|
|
163
|
-
}
|
|
164
|
-
const numbers = request.levels.map((row) => row.level);
|
|
165
|
-
const start = numbers.at(0);
|
|
166
|
-
const end = numbers.at(-1);
|
|
167
|
-
DecideError.invariant(start !== undefined && end !== undefined, NOT_A_VOTE);
|
|
168
|
-
const second = numbers.at(1);
|
|
169
|
-
const step = second === undefined ? 1 : second - start;
|
|
170
|
-
const reading = await sage.gauge(request.instructions, start, end, step);
|
|
171
|
-
return { value: reading.value };
|
|
172
|
-
}
|
|
173
|
-
async function sageVote(configuration, request) {
|
|
174
|
-
const document = judgedDocument(configuration.document, request.instructions);
|
|
175
|
-
if (configuration.sageAsk !== undefined)
|
|
176
|
-
return configuration.sageAsk(document, request);
|
|
177
|
-
const sage = new SageSDK({ apiKey: askKey(configuration.sageApiKey) }).sage(document);
|
|
178
|
-
switch (request.kind) {
|
|
179
|
-
case "yesno": {
|
|
180
|
-
const reading = await sage.yesOrNo(request.instructions);
|
|
181
|
-
return { value: reading.value };
|
|
182
|
-
}
|
|
183
|
-
case "choose": {
|
|
184
|
-
const reading = await sage.choose(request.instructions, chooseOptions(request.options));
|
|
185
|
-
return { value: reading.value };
|
|
186
|
-
}
|
|
187
|
-
case "scale":
|
|
188
|
-
return sageScale(sage, request);
|
|
189
|
-
case "gauge": {
|
|
190
|
-
const reading = await sage.gauge(request.instructions, request.start, request.end, request.step);
|
|
191
|
-
return { value: reading.value };
|
|
192
|
-
}
|
|
193
|
-
case "tag": {
|
|
194
|
-
const reading = await sage.tag(request.instructions, request.tags.map((row) => {
|
|
195
|
-
const text = nonEmpty(row.description);
|
|
196
|
-
return text === undefined ? { tag: row.tag } : { tag: row.tag, description: text };
|
|
197
|
-
}));
|
|
198
|
-
return { value: reading.value };
|
|
199
|
-
}
|
|
200
|
-
case "sort": {
|
|
201
|
-
const reading = await sage.sort(request.instructions, request.items.map((item) => ({ id: item.id, content: item.content })));
|
|
202
|
-
return { value: sortIds(reading.value) };
|
|
203
|
-
}
|
|
204
|
-
default: {
|
|
205
|
-
const unreachable = request;
|
|
206
|
-
return unreachable;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
function noulVote(answer) {
|
|
211
|
-
if (!isRecord(answer) || typeof answer.noul !== "number" || !Number.isFinite(answer.noul))
|
|
212
|
-
return null;
|
|
213
|
-
return answer.noul >= 0.5 ? "yes" : "no";
|
|
214
|
-
}
|
|
215
|
-
/** Jev `ScoreCriteria` indexes from zero. The expectation has to land on our level integers. */
|
|
216
|
-
function levelExpectation(answer, levels) {
|
|
217
|
-
if (!isRecord(answer) || typeof answer.score !== "number" || !Number.isFinite(answer.score)) {
|
|
218
|
-
throw new DecideError(NOT_A_VOTE);
|
|
219
|
-
}
|
|
220
|
-
if (isRecord(answer.probabilities)) {
|
|
221
|
-
const weighted = weightedLevels(answer.probabilities, levels);
|
|
222
|
-
if (weighted !== undefined)
|
|
223
|
-
return weighted;
|
|
224
|
-
}
|
|
225
|
-
return interpolated(answer.score, levels);
|
|
226
|
-
}
|
|
227
|
-
function probabilityAt(probabilities, index) {
|
|
228
|
-
const raw = probabilities[String(index)];
|
|
229
|
-
return typeof raw === "number" && Number.isFinite(raw) ? raw : undefined;
|
|
230
|
-
}
|
|
231
|
-
function weightedLevels(probabilities, levels) {
|
|
232
|
-
let sum = 0;
|
|
233
|
-
let mass = 0;
|
|
234
|
-
for (let index = 0; index < levels.length; index += 1) {
|
|
235
|
-
const level = levels.at(index);
|
|
236
|
-
const probability = probabilityAt(probabilities, index);
|
|
237
|
-
if (level === undefined || probability === undefined)
|
|
238
|
-
return undefined;
|
|
239
|
-
sum += probability * level;
|
|
240
|
-
mass += probability;
|
|
241
|
-
}
|
|
242
|
-
return mass === 0 ? undefined : sum;
|
|
243
|
-
}
|
|
244
|
-
function interpolated(score, levels) {
|
|
245
|
-
const first = levels.at(0);
|
|
246
|
-
DecideError.invariant(first !== undefined, NOT_A_VOTE);
|
|
247
|
-
if (levels.length === 1)
|
|
248
|
-
return first;
|
|
249
|
-
const clamped = Math.min(Math.max(score, 0), levels.length - 1);
|
|
250
|
-
const low = Math.floor(clamped);
|
|
251
|
-
const high = Math.min(low + 1, levels.length - 1);
|
|
252
|
-
const lowLevel = levels.at(low);
|
|
253
|
-
const highLevel = levels.at(high);
|
|
254
|
-
DecideError.invariant(lowLevel !== undefined && highLevel !== undefined, NOT_A_VOTE);
|
|
255
|
-
return lowLevel + (highLevel - lowLevel) * (clamped - low);
|
|
256
|
-
}
|
|
257
|
-
function scoreCriteria(levels) {
|
|
258
|
-
const entries = levels.map((row) => nonEmpty(row.description) ?? String(row.level));
|
|
259
|
-
const first = entries.at(0);
|
|
260
|
-
const second = entries.at(1);
|
|
261
|
-
DecideError.invariant(first !== undefined && second !== undefined, NOT_A_VOTE);
|
|
262
|
-
return [first, second, ...entries.slice(2)];
|
|
263
|
-
}
|
|
264
|
-
function jevClient(configuration) {
|
|
265
|
-
const client = new TypeSafeClient({ apiKey: askKey(configuration.jevApiKey) });
|
|
266
|
-
const method = client.systemOne;
|
|
267
|
-
if (typeof method !== "function")
|
|
268
|
-
throw new DecideError("decide: jev client has no systemOne");
|
|
269
|
-
return client;
|
|
270
|
-
}
|
|
271
|
-
async function jevVote(configuration, request) {
|
|
272
|
-
const document = judgedDocument(configuration.document, request.instructions);
|
|
273
|
-
if (configuration.jevAsk !== undefined)
|
|
274
|
-
return configuration.jevAsk(document, request);
|
|
275
|
-
if (request.kind === "sort")
|
|
276
|
-
throw new DecideError("decide: jev has no sort");
|
|
277
|
-
const client = jevClient(configuration);
|
|
278
|
-
switch (request.kind) {
|
|
279
|
-
case "yesno": {
|
|
280
|
-
const { answers } = await client.systemOne({
|
|
281
|
-
state: document,
|
|
282
|
-
questions: { vote: noul(request.instructions) },
|
|
283
|
-
});
|
|
284
|
-
return { value: noulVote(answers.vote) };
|
|
285
|
-
}
|
|
286
|
-
case "choose": {
|
|
287
|
-
const criteria = {};
|
|
288
|
-
for (const option of request.options)
|
|
289
|
-
criteria[option.option] = nonEmpty(option.description) ?? null;
|
|
290
|
-
const { answers } = await client.systemOne({
|
|
291
|
-
state: document,
|
|
292
|
-
questions: { vote: choiceQuestion(request.instructions, criteria) },
|
|
293
|
-
});
|
|
294
|
-
const chosen = answers.vote;
|
|
295
|
-
const choiceText = isRecord(chosen) && typeof chosen.choice === "string" ? chosen.choice : null;
|
|
296
|
-
return { value: choiceText };
|
|
297
|
-
}
|
|
298
|
-
case "scale":
|
|
299
|
-
case "gauge": {
|
|
300
|
-
const levels = request.kind === "scale"
|
|
301
|
-
? request.levels
|
|
302
|
-
: Array.from({ length: (request.end - request.start) / request.step + 1 }, (_, index) => ({
|
|
303
|
-
level: request.start + index * request.step,
|
|
304
|
-
}));
|
|
305
|
-
const { answers } = await client.systemOne({
|
|
306
|
-
state: document,
|
|
307
|
-
questions: { vote: scoreQuestion(request.instructions, scoreCriteria(levels)) },
|
|
308
|
-
});
|
|
309
|
-
return {
|
|
310
|
-
value: levelExpectation(answers.vote, levels.map((row) => row.level)),
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
case "tag": {
|
|
314
|
-
const questions = {};
|
|
315
|
-
for (const row of request.tags) {
|
|
316
|
-
const text = nonEmpty(row.description);
|
|
317
|
-
const instructions = text === undefined ? `${request.instructions}\n${row.tag}` : `${request.instructions}\n${row.tag}: ${text}`;
|
|
318
|
-
questions[row.tag] = noul(instructions);
|
|
319
|
-
}
|
|
320
|
-
const { answers } = await client.systemOne({ state: document, questions });
|
|
321
|
-
const value = {};
|
|
322
|
-
for (const row of request.tags) {
|
|
323
|
-
const word = noulVote(answers[row.tag]);
|
|
324
|
-
value[row.tag] = word === null ? null : word === "yes";
|
|
325
|
-
}
|
|
326
|
-
return { value };
|
|
327
|
-
}
|
|
328
|
-
default: {
|
|
329
|
-
const unreachable = request;
|
|
330
|
-
return unreachable;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
function yesNo(value) {
|
|
335
|
-
if (value === null)
|
|
336
|
-
return false;
|
|
337
|
-
if (value === "yes" || value === "no")
|
|
338
|
-
return value;
|
|
339
|
-
throw new DecideError(NOT_A_VOTE);
|
|
340
|
-
}
|
|
341
|
-
function choice(value, options) {
|
|
342
|
-
if (value === null)
|
|
343
|
-
return false;
|
|
344
|
-
if (typeof value !== "string")
|
|
345
|
-
throw new DecideError(NOT_A_VOTE);
|
|
346
|
-
DecideError.invariant(options.some((row) => row.option === value), "decide: choice outside options");
|
|
347
|
-
return value;
|
|
348
|
-
}
|
|
349
|
-
function expectation(value) {
|
|
350
|
-
DecideError.invariant(typeof value === "number" && Number.isFinite(value), NOT_A_VOTE);
|
|
351
|
-
return value;
|
|
352
|
-
}
|
|
353
|
-
function tagVotes(value, tags) {
|
|
354
|
-
if (!isRecord(value))
|
|
355
|
-
throw new DecideError(NOT_A_VOTE);
|
|
356
|
-
const known = new Set(tags.map((row) => row.tag));
|
|
357
|
-
for (const key of Object.keys(value)) {
|
|
358
|
-
DecideError.invariant(known.has(key), "decide: tag on a missing id");
|
|
359
|
-
}
|
|
360
|
-
return tags.map((row) => {
|
|
361
|
-
DecideError.invariant(Object.hasOwn(value, row.tag), NOT_A_VOTE);
|
|
362
|
-
const applies = value[row.tag];
|
|
363
|
-
if (applies === null || typeof applies === "boolean")
|
|
364
|
-
return [row.tag, applies];
|
|
365
|
-
throw new DecideError(NOT_A_VOTE);
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
|
-
function permutation(value, items) {
|
|
369
|
-
if (!Array.isArray(value))
|
|
370
|
-
throw new DecideError(NOT_A_VOTE);
|
|
371
|
-
const ids = [];
|
|
372
|
-
for (const id of value) {
|
|
373
|
-
if (typeof id !== "string")
|
|
374
|
-
throw new DecideError(NOT_A_VOTE);
|
|
375
|
-
ids.push(id);
|
|
376
|
-
}
|
|
377
|
-
const counts = new Map();
|
|
378
|
-
for (const item of items)
|
|
379
|
-
counts.set(item.id, (counts.get(item.id) ?? 0) + 1);
|
|
380
|
-
DecideError.invariant(ids.length === items.length, "decide: sort is not a permutation");
|
|
381
|
-
for (const id of ids) {
|
|
382
|
-
const left = counts.get(id) ?? 0;
|
|
383
|
-
DecideError.invariant(left > 0, "decide: sort is not a permutation");
|
|
384
|
-
counts.set(id, left - 1);
|
|
385
|
-
}
|
|
386
|
-
return ids;
|
|
387
|
-
}
|
|
388
|
-
/** Step defaults to 1, or -1 when end < start. The end must land on a step. Count is 2..26. */
|
|
389
|
-
function gaugeStep(start, end, step) {
|
|
390
|
-
DecideError.invariant(Number.isInteger(start), "decide: range start must be an integer");
|
|
391
|
-
DecideError.invariant(Number.isInteger(end), "decide: range end must be an integer");
|
|
392
|
-
const resolved = step ?? (end < start ? -1 : 1);
|
|
393
|
-
DecideError.invariant(Number.isInteger(resolved) && resolved !== 0, "decide: range step must be a non-zero integer");
|
|
394
|
-
DecideError.invariant(start !== end, "decide: gauge must produce 2..26 levels");
|
|
395
|
-
DecideError.invariant((end - start) * resolved > 0, "decide: range step must move from start toward end");
|
|
396
|
-
const count = (end - start) / resolved + 1;
|
|
397
|
-
DecideError.invariant(Number.isInteger(count), "decide: range end must fall on a step");
|
|
398
|
-
DecideError.invariant(count >= 2 && count <= 26, "decide: gauge must produce 2..26 levels");
|
|
399
|
-
return resolved;
|
|
400
|
-
}
|
|
401
|
-
function pairRows(rows, head) {
|
|
402
|
-
return rows.map((row) => {
|
|
403
|
-
if (!Array.isArray(row) || row.length === 0 || row.length > 2)
|
|
404
|
-
throw new DecideError(NOT_A_VOTE);
|
|
405
|
-
const name = row[0];
|
|
406
|
-
if (head === "string" ? typeof name !== "string" : typeof name !== "number")
|
|
407
|
-
throw new DecideError(NOT_A_VOTE);
|
|
408
|
-
if (row.length === 1)
|
|
409
|
-
return [name];
|
|
410
|
-
if (typeof row[1] !== "string")
|
|
411
|
-
throw new DecideError(NOT_A_VOTE);
|
|
412
|
-
return [name, row[1]];
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
function itemRows(rows) {
|
|
416
|
-
return rows.map((row) => {
|
|
417
|
-
if (!Array.isArray(row) || row.length !== 2 || typeof row[0] !== "string" || typeof row[1] !== "string") {
|
|
418
|
-
throw new DecideError(NOT_A_VOTE);
|
|
419
|
-
}
|
|
420
|
-
return [row[0], row[1]];
|
|
421
|
-
});
|
|
422
|
-
}
|
|
423
|
-
export const decideCapability = EnvCapability.define("policy/decide", {
|
|
424
|
-
configuration: decideConfiguration,
|
|
425
|
-
symbols: (symbol, sz) => {
|
|
426
|
-
const named = sz.union([sz.list([sz.foldName]), sz.list([sz.foldName, sz.string])]);
|
|
427
|
-
const levels = sz.union([sz.list([sz.integer]), sz.list([sz.integer, sz.string])]);
|
|
428
|
-
// JSON null is scheme #f. Nil would be truthy, so it is not an abstain.
|
|
429
|
-
const textOrFalse = sz.union([sz.string, sz.booleanFalse]);
|
|
430
|
-
const yesOrNo = sz.union([sz.literal("yes"), sz.literal("no"), sz.booleanFalse]);
|
|
431
|
-
// #t / #f / () — null applies stays distinct from false.
|
|
432
|
-
const applies = sz.union([sz.boolean, sz.nil]);
|
|
433
|
-
return {
|
|
434
|
-
"decide/yesno": symbol.rosetta `decide/yesno: yes, no, or #f`({ input: [sz.string], output: [yesOrNo], provenance: "source" }, async function (instructions) {
|
|
435
|
-
return yesNo(jsonValue(await vote(this.configuration, { kind: "yesno", instructions })));
|
|
436
|
-
}),
|
|
437
|
-
"decide/choose": symbol.rosetta `decide/choose: one of the options, or #f`({ input: [sz.string, sz.list(named)], output: [textOrFalse], provenance: "source" }, async function (instructions, rows) {
|
|
438
|
-
const options = pairRows(rows, "string").map(([option, description]) => {
|
|
439
|
-
if (typeof option !== "string")
|
|
440
|
-
throw new DecideError(NOT_A_VOTE);
|
|
441
|
-
return description === undefined ? { option } : { option, description };
|
|
442
|
-
});
|
|
443
|
-
return choice(jsonValue(await vote(this.configuration, { kind: "choose", instructions, options })), options);
|
|
444
|
-
}),
|
|
445
|
-
"decide/scale": symbol.rosetta `decide/scale: expectation on named levels`({ input: [sz.string, sz.list(levels)], output: [sz.number], provenance: "source" }, async function (instructions, rows) {
|
|
446
|
-
const scaleLevels = pairRows(rows, "number").map(([level, description]) => description === undefined ? { level: Number(level) } : { level: Number(level), description });
|
|
447
|
-
return expectation(jsonValue(await vote(this.configuration, { kind: "scale", instructions, levels: scaleLevels })));
|
|
448
|
-
}),
|
|
449
|
-
"decide/gauge": symbol.rosetta `decide/gauge: expectation on an integer range of 2..26 levels`({
|
|
450
|
-
input: [sz.string, sz.integer, sz.integer, sz.integer.optional()],
|
|
451
|
-
output: [sz.number],
|
|
452
|
-
provenance: "source",
|
|
453
|
-
}, async function (instructions, start, end, step) {
|
|
454
|
-
const resolved = gaugeStep(start, end, step);
|
|
455
|
-
return expectation(jsonValue(await vote(this.configuration, {
|
|
456
|
-
kind: "gauge",
|
|
457
|
-
instructions,
|
|
458
|
-
start,
|
|
459
|
-
end,
|
|
460
|
-
step: resolved,
|
|
461
|
-
})));
|
|
462
|
-
}),
|
|
463
|
-
"decide/tag": symbol.rosetta `decide/tag: alist of tag and whether it applies`({ input: [sz.string, sz.list(named)], output: [sz.list(sz.cons(sz.string, applies))], provenance: "source" }, async function (instructions, rows) {
|
|
464
|
-
const tags = pairRows(rows, "string").map(([tag, description]) => {
|
|
465
|
-
if (typeof tag !== "string")
|
|
466
|
-
throw new DecideError(NOT_A_VOTE);
|
|
467
|
-
return description === undefined ? { tag } : { tag, description };
|
|
468
|
-
});
|
|
469
|
-
return tagVotes(jsonValue(await vote(this.configuration, { kind: "tag", instructions, tags })), tags);
|
|
470
|
-
}),
|
|
471
|
-
"decide/sort": symbol.rosetta `decide/sort: permutation of the item ids`({
|
|
472
|
-
input: [sz.string, sz.list(sz.list([sz.foldName, sz.string]))],
|
|
473
|
-
output: [sz.list(sz.string)],
|
|
474
|
-
provenance: "source",
|
|
475
|
-
}, async function (instructions, rows) {
|
|
476
|
-
const items = itemRows(rows).map(([id, content]) => ({ id, content }));
|
|
477
|
-
return permutation(jsonValue(await vote(this.configuration, { kind: "sort", instructions, items })), items);
|
|
478
|
-
}),
|
|
479
|
-
};
|
|
480
|
-
},
|
|
481
|
-
});
|
|
482
|
-
//# sourceMappingURL=decide.js.map
|
package/dist/decide.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error whose `static invariant` throws `new this(...ctorArgs)`.
|
|
3
|
-
* Not on ErrorConstructor — a receiver with extra constructor args
|
|
4
|
-
* (`(code, message)`) does not fight `(condition, message?)`.
|
|
5
|
-
*/
|
|
6
|
-
export declare class ErrorWithInvariant extends Error {
|
|
7
|
-
static invariant<T extends new (...args: any) => ErrorWithInvariant>(this: T, condition: unknown, ...args: ConstructorParameters<T>): asserts condition;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=error-with-invariant.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-with-invariant.d.ts","sourceRoot":"","sources":["../src/error-with-invariant.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,kBAAkB,EACjE,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,OAAO,EAClB,GAAG,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,SAAS;CAGrB"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Error whose `static invariant` throws `new this(...ctorArgs)`.
|
|
3
|
-
* Not on ErrorConstructor — a receiver with extra constructor args
|
|
4
|
-
* (`(code, message)`) does not fight `(condition, message?)`.
|
|
5
|
-
*/
|
|
6
|
-
export class ErrorWithInvariant extends Error {
|
|
7
|
-
static invariant(condition, ...args) {
|
|
8
|
-
if (!condition)
|
|
9
|
-
throw new this(...args);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=error-with-invariant.js.map
|