@oneie/sdk 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/market.js ADDED
@@ -0,0 +1,92 @@
1
+ import { z } from "zod";
2
+ // ── Stages (locked — rename breaks KV-persisted deals) ──────────────────────
3
+ export const StageSchema = z.enum([
4
+ "OFFER", // terms proposed; counter/accept/reject legal
5
+ "ESCROW", // accepted; payment being locked
6
+ "EXECUTE", // escrow confirmed; work in progress
7
+ "VERIFY", // work delivered; rubric scoring in progress
8
+ "SETTLE", // rubric passed; payment releasing
9
+ "RECEIPT", // terminal — success
10
+ "DISPUTE", // terminal — contested; refund in flight
11
+ "FADE", // terminal — rejected or expired
12
+ ]);
13
+ // ── Deal schema ──────────────────────────────────────────────────────────────
14
+ export const RubricSchema = z.object({
15
+ fit: z.number().min(0).max(1),
16
+ form: z.number().min(0).max(1),
17
+ truth: z.number().min(0).max(1),
18
+ taste: z.number().min(0).max(1),
19
+ });
20
+ export const DealSchema = z.object({
21
+ id: z.string().uuid(),
22
+ buyer: z.string().min(1),
23
+ seller: z.string().min(1),
24
+ skill: z.string().min(1),
25
+ price: z.number().nonnegative(),
26
+ currency: z.string().default("credits"),
27
+ deadline: z.string().datetime(), // ISO-8601
28
+ rubric: RubricSchema.optional(), // thresholds (not scores) — set by buyer
29
+ stage: StageSchema,
30
+ version: z.number().int().nonnegative().default(0),
31
+ escrowRef: z.string().optional(), // pay.one.ie quote/claim id
32
+ result: z.record(z.string(), z.unknown()).optional(), // delivered work blob
33
+ scores: RubricSchema.optional(), // actual scores set by market:verify
34
+ });
35
+ // ── VALID — legal verbs per stage ────────────────────────────────────────────
36
+ const TERMINAL = new Set(["RECEIPT", "DISPUTE", "FADE"]);
37
+ export const VALID = {
38
+ OFFER: new Set(["counter", "accept", "reject", "dispute"]),
39
+ ESCROW: new Set(["escrow", "dispute"]),
40
+ EXECUTE: new Set(["deliver", "dispute"]),
41
+ VERIFY: new Set(["verify", "dispute"]),
42
+ SETTLE: new Set(["settle", "dispute"]),
43
+ RECEIPT: new Set(),
44
+ DISPUTE: new Set(),
45
+ FADE: new Set(),
46
+ };
47
+ // ── Errors ───────────────────────────────────────────────────────────────────
48
+ export class InvalidTransition extends Error {
49
+ stage;
50
+ verb;
51
+ constructor(stage, verb) {
52
+ super(`invalid transition: ${verb} is not legal in stage ${stage}`);
53
+ this.stage = stage;
54
+ this.verb = verb;
55
+ this.name = "InvalidTransition";
56
+ }
57
+ }
58
+ // ── advance() — the only way to mutate stage ─────────────────────────────────
59
+ const RUBRIC_PASS_THRESHOLD = 0.65;
60
+ function composite(scores) {
61
+ return (scores.fit + scores.form + scores.truth + scores.taste) / 4;
62
+ }
63
+ export function advance(deal, verb, scores) {
64
+ if (!VALID[deal.stage].has(verb)) {
65
+ throw new InvalidTransition(deal.stage, verb);
66
+ }
67
+ switch (verb) {
68
+ case "counter":
69
+ return { ...deal, version: deal.version + 1 };
70
+ case "accept":
71
+ return { ...deal, stage: "ESCROW", version: deal.version + 1 };
72
+ case "reject":
73
+ return { ...deal, stage: "FADE", version: deal.version + 1 };
74
+ case "escrow":
75
+ return { ...deal, stage: "EXECUTE", version: deal.version + 1 };
76
+ case "deliver":
77
+ return { ...deal, stage: "VERIFY", version: deal.version + 1 };
78
+ case "verify": {
79
+ if (!scores)
80
+ throw new Error("verify requires scores");
81
+ const next = composite(scores) >= RUBRIC_PASS_THRESHOLD ? "SETTLE" : "DISPUTE";
82
+ return { ...deal, stage: next, scores, version: deal.version + 1 };
83
+ }
84
+ case "settle":
85
+ return { ...deal, stage: "RECEIPT", version: deal.version + 1 };
86
+ case "dispute":
87
+ if (TERMINAL.has(deal.stage))
88
+ throw new InvalidTransition(deal.stage, verb);
89
+ return { ...deal, stage: "DISPUTE", version: deal.version + 1 };
90
+ }
91
+ }
92
+ //# sourceMappingURL=market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../src/market.ts"],"names":[],"mappings":"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"}
package/dist/meta.d.ts CHANGED
@@ -4,7 +4,7 @@ import { type ReceiverName, type RecipeName } from "./receivers.js";
4
4
  * catalog: an agent reads these to discover what it can call, each capability's
5
5
  * cost/reversibility/settlement, and one receiver's exact request schema —
6
6
  * before it acts. Handlers in the service bind these to a caller's role; the
7
- * functions themselves carry no runtime dependency. See `plans/agent-first-spec.md`.
7
+ * functions themselves carry no runtime dependency. See `text/agent-first-spec-plan.md`.
8
8
  */
9
9
  /** One catalog row — the agent-facing slice of a receiver declaration. */
10
10
  export interface CatalogEntry {
package/dist/openapi.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * payload; here we derive a real `oneOf` over every receiver's request schema
5
5
  * (via `z.toJSONSchema`), each member tagged with the agent-ergonomic metadata
6
6
  * as `x-` extensions. Pure functions — the CLI (`scripts/generate-openapi.ts`)
7
- * does the file I/O. See `plans/agent-first-spec.md`.
7
+ * does the file I/O. See `text/agent-first-spec-plan.md`.
8
8
  */
9
9
  export declare const RECEIVER_REGION_BEGIN = " # BEGIN generated:receivers \u2014 bun run generate:openapi (do not edit by hand)";
10
10
  export declare const RECEIVER_REGION_END = " # END generated:receivers";
package/dist/openapi.js CHANGED
@@ -6,7 +6,7 @@ import { RECEIVERS } from "./receivers.js";
6
6
  * payload; here we derive a real `oneOf` over every receiver's request schema
7
7
  * (via `z.toJSONSchema`), each member tagged with the agent-ergonomic metadata
8
8
  * as `x-` extensions. Pure functions — the CLI (`scripts/generate-openapi.ts`)
9
- * does the file I/O. See `plans/agent-first-spec.md`.
9
+ * does the file I/O. See `text/agent-first-spec-plan.md`.
10
10
  */
11
11
  export const RECEIVER_REGION_BEGIN = " # BEGIN generated:receivers — bun run generate:openapi (do not edit by hand)";
12
12
  export const RECEIVER_REGION_END = " # END generated:receivers";