@oneie/sdk 0.14.2 → 0.14.4

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.
@@ -0,0 +1,3 @@
1
+ import type { ResourceType } from "./types.js";
2
+ export declare function tqlToManifest(tqlSrc: string): ResourceType[];
3
+ //# sourceMappingURL=tql-to-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tql-to-manifest.d.ts","sourceRoot":"","sources":["../src/tql-to-manifest.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAA+B,MAAM,YAAY,CAAA;AAmG3E,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAQ5D"}
@@ -0,0 +1,108 @@
1
+ // The substrate's own six types → their manifest identity. The base-type key is
2
+ // the dimension name (groups/actors/…); the TypeDB type is the entity/relation name.
3
+ const BASE_TYPES = {
4
+ group: { key: "groups", label: "Groups", dimension: "groups" },
5
+ actor: { key: "actors", label: "Actors", dimension: "actors" },
6
+ thing: { key: "things", label: "Things", dimension: "things" },
7
+ path: { key: "paths", label: "Paths", dimension: "paths" },
8
+ signal: { key: "events", label: "Events", dimension: "events" },
9
+ hypothesis: { key: "learning", label: "Learning", dimension: "learning" },
10
+ };
11
+ // Parse one.tql into the six type blocks we care about. A block runs from its
12
+ // `entity X,` / `relation X,` header to the first clause terminated by `;`.
13
+ function parseTypes(src) {
14
+ const out = new Map();
15
+ const lines = src.split("\n").map(l => {
16
+ const hash = l.indexOf("#");
17
+ return (hash >= 0 ? l.slice(0, hash) : l).trim();
18
+ });
19
+ let cur = null;
20
+ for (const line of lines) {
21
+ const header = line.match(/^(entity|relation)\s+([a-z][a-z-]*),?$/);
22
+ if (header) {
23
+ cur = { name: header[2], owns: [], relates: [] };
24
+ out.set(cur.name, cur);
25
+ continue;
26
+ }
27
+ if (!cur)
28
+ continue;
29
+ const owns = line.match(/^owns\s+([a-z][a-z-]*)\b(.*)$/);
30
+ if (owns)
31
+ cur.owns.push({ attr: owns[1], key: /@key/.test(owns[2]) });
32
+ const relates = line.match(/^relates\s+([a-z][a-z-]*)\b/);
33
+ if (relates)
34
+ cur.relates.push(relates[1]);
35
+ if (line.endsWith(";"))
36
+ cur = null; // block closed
37
+ }
38
+ return out;
39
+ }
40
+ const snake = (s) => s.replace(/-/g, "_");
41
+ const NUMBER_FIELDS = new Set([
42
+ "strength", "resistance", "traversals", "latency", "confidence", "p_value",
43
+ "observations", "observations_count", "task_value", "task_effort", "task_priority",
44
+ "cycles_planned", "sensitivity", "fade_rate", "toxicity_threshold",
45
+ ]);
46
+ const SELECT_FIELDS = new Set([
47
+ "status", "scope", "visibility", "plan", "success", "bridge_kind", "step_kind",
48
+ ]);
49
+ const MARKDOWN_FIELDS = new Set(["prompt", "payload"]);
50
+ // Best-effort field kind from the (snake-cased) attribute name. one.tql has no
51
+ // @values, so a `select` here carries no options — the curated template supplies
52
+ // the real options. This is a structural skeleton, not a styled form.
53
+ function inferKind(name) {
54
+ if (name === "tags")
55
+ return "tags";
56
+ if (name === "price" || name === "amount")
57
+ return "currency";
58
+ if (name === "ts" || name.endsWith("_at") || name.startsWith("valid_"))
59
+ return "date";
60
+ if (name.endsWith("_type"))
61
+ return "select";
62
+ if (SELECT_FIELDS.has(name))
63
+ return "select";
64
+ if (NUMBER_FIELDS.has(name))
65
+ return "number";
66
+ if (MARKDOWN_FIELDS.has(name))
67
+ return "markdown";
68
+ return "text";
69
+ }
70
+ // `tag` is the owns attribute; the manifest exposes it as the plural `tags`.
71
+ function fieldName(attr) {
72
+ const s = snake(attr);
73
+ return s === "tag" ? "tags" : s;
74
+ }
75
+ function typeToResource(t, base) {
76
+ const fields = [];
77
+ for (const o of t.owns) {
78
+ if (o.key)
79
+ continue; // @key is the id, never a form field
80
+ const name = fieldName(o.attr);
81
+ if (fields.some(f => f.field === name))
82
+ continue;
83
+ const kind = inferKind(name);
84
+ const field = { field: name, label: name, kind };
85
+ if (name === "name")
86
+ field.required = true;
87
+ fields.push(field);
88
+ }
89
+ // A relation's roles become relation fields (path: source/target, signal: sender/receiver).
90
+ for (const role of t.relates) {
91
+ const name = snake(role);
92
+ fields.push({ field: name, label: name, kind: "relation" });
93
+ }
94
+ const columns = fields.slice(0, 3);
95
+ return { key: base.key, label: base.label, dimension: base.dimension, type: t.name, columns, fields };
96
+ }
97
+ // Generate the six dimension base types from one.tql source.
98
+ export function tqlToManifest(tqlSrc) {
99
+ const parsed = parseTypes(tqlSrc);
100
+ const out = [];
101
+ for (const [typeName, base] of Object.entries(BASE_TYPES)) {
102
+ const t = parsed.get(typeName);
103
+ if (t)
104
+ out.push(typeToResource(t, base));
105
+ }
106
+ return out;
107
+ }
108
+ //# sourceMappingURL=tql-to-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tql-to-manifest.js","sourceRoot":"","sources":["../src/tql-to-manifest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneie/sdk",
3
- "version": "0.14.2",
3
+ "version": "0.14.4",
4
4
  "description": "ONE substrate SDK — signals, units, persist, launch handoff.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -92,6 +92,7 @@
92
92
  "build": "tsc",
93
93
  "dev": "tsc --watch",
94
94
  "generate:openapi": "bun run scripts/generate-openapi.ts",
95
+ "generate:base": "bun run scripts/generate-base-manifest.ts",
95
96
  "typecheck": "tsc --noEmit",
96
97
  "test": "vitest run",
97
98
  "test:watch": "vitest",