mythik 0.1.1 → 0.1.2

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/README.md CHANGED
@@ -1,6 +1,27 @@
1
1
  # mythik
2
2
 
3
- Core runtime for Mythik, a spec-driven application framework where UI, state, actions, validation, storage, versioning, and editor workflows are described as JSON and enforced by the framework.
3
+ The Mythik runtime types, validation, expressions, actions, spec
4
+ stores, and versioning. This is the foundation every Mythik consumer
5
+ imports. It also ships the canonical AI documentation bundled inside
6
+ the npm tarball — so the docs an agent reads always match the
7
+ installed version of the framework, no external doc fetching, no
8
+ version drift.
9
+
10
+ > See [the framework README on GitHub](https://github.com/mldixdev/mythik#readme)
11
+ > for the full Mythik architecture and design philosophy. This file
12
+ > documents what `mythik` gives you and how to use it.
13
+
14
+ ---
15
+
16
+ ## What Mythik is, briefly
17
+
18
+ Mythik is an **AI-first, spec-driven framework**. Every UI screen and
19
+ API endpoint lives as a JSON spec in a database — not a `.tsx` file
20
+ in a repo. Apps grow by adding rows, not files. The framework
21
+ validates every change atomically and versions everything
22
+ automatically, so your favorite AI agent can author and patch specs
23
+ through the CLI without human supervision in the loop. This package
24
+ is the runtime that makes all of that work.
4
25
 
5
26
  ## Install
6
27
 
@@ -8,91 +29,155 @@ Core runtime for Mythik, a spec-driven application framework where UI, state, ac
8
29
  npm install mythik
9
30
  ```
10
31
 
11
- ## What It Provides
12
-
13
- - Bundled AI documentation under `docs/`, including canonical consumer docs, compiled wiki pages, and `llms.txt`.
14
- - Spec and AppSpec types.
15
- - State store and reserved path contracts.
16
- - Expression resolver and expression registry.
17
- - Action dispatcher, transactions, middleware, and fetch helpers.
18
- - Validation, URL guard, state guard, rate limiting, and spec signing helpers.
19
- - Design token, DNA, identity, background, animation, and preset utilities.
20
- - Spec stores: memory and Supabase from the browser-safe entry.
21
- - Node-only stores from the `mythik/server` subpath.
22
- - Versioning: snapshot plus patch-chain stores, structural diffs, promote gate, and rollback helpers.
23
- - Editor sessions: undo/redo, dirty tracking, `editorCommit`, `editorSave`, discard, validation metadata, and save status.
24
- - App engine: navigation, auth integration, screen lists, and dirty editor session guard.
25
-
26
- ## Basic Usage
32
+ `mythik` has no peer dependency. It's the foundation.
33
+
34
+ ## When to install this
35
+
36
+ You install `mythik` whenever you're building anything Mythik-related:
37
+
38
+ | You want to... | Install |
39
+ |---|---|
40
+ | Render specs as a React app | `mythik` + `mythik-react` |
41
+ | Build a REST API from an ApiSpec | `mythik` + `mythik-server` |
42
+ | Author or patch specs from the command line | `mythik` + `mythik-cli` (dev) |
43
+ | Validate or query specs from a Node script | `mythik` alone |
44
+
45
+ ## What you get
46
+
47
+ - **Strict TypeScript types** for `Spec`, `AppSpec`, `ApiSpec`,
48
+ primitives, expressions, actions, and validation results.
49
+
50
+ - **The validation gate** — `validateSpec()` and `validateApiSpec()`
51
+ are the atomic checks that run on every push and promote. Call them
52
+ directly to validate offline, in CI, or in a test.
53
+
54
+ - **Spec stores** — load and save specs through a swappable backend
55
+ interface:
56
+ - Browser-safe entry: `MemorySpecStore`, `SupabaseSpecStore`
57
+ - Node-only entry (`mythik/server`): `FileSpecStore`,
58
+ `SqlServerSpecStore`
59
+ - Versioned variants (`SupabaseVersionedSpecStore`,
60
+ `SupabaseEnvironmentStore`) add snapshot+patch-chain history,
61
+ structural diffs, and atomic promote gates
62
+
63
+ - **Expression and action engines** — the runtime that resolves
64
+ `$token`, `$state`, `$template`, and dispatches action chains,
65
+ transactions, forms, auth, derive, dataSources, uploads, and
66
+ exports. Specs reference these by name; this package implements
67
+ the resolution.
68
+
69
+ - **App engine** — navigation, auth integration, and screen lifecycle.
70
+ Most consumers reach the app engine through `<MythikApp>` in
71
+ `mythik-react`, but the runtime lives here and can be used directly
72
+ for non-React shells or custom integrations.
73
+
74
+ ## Browser-safe vs Node-only entries
75
+
76
+ ```ts
77
+ // Browser-safe (works in any runtime)
78
+ import { MemorySpecStore, SupabaseSpecStore } from 'mythik';
79
+
80
+ // Node-only (file system, SQL Server, anything that needs Node APIs)
81
+ import { FileSpecStore, SqlServerSpecStore } from 'mythik/server';
82
+ ```
83
+
84
+ Bundlers like Vite or Webpack should always import from `mythik` (the
85
+ main entry). The `mythik/server` subpath is for Node scripts and
86
+ server processes only — it pulls in modules like `mssql` and
87
+ `node:fs` that won't work in a browser.
88
+
89
+ ## Minimal example
90
+
91
+ Validate a spec in-process:
27
92
 
28
93
  ```ts
29
- import { MemorySpecStore, validateSpec, type Spec } from 'mythik';
94
+ import { validateSpec, MemorySpecStore, type Spec } from 'mythik';
30
95
 
31
96
  const homeSpec: Spec = {
32
97
  root: 'root',
33
98
  elements: {
34
99
  root: {
100
+ type: 'box',
101
+ props: { style: { padding: 24 } },
102
+ children: ['title'],
103
+ },
104
+ title: {
35
105
  type: 'text',
36
- props: { content: 'Hello Mythik' },
106
+ props: { content: 'Hello, world', variant: 'heading' },
37
107
  },
38
108
  },
39
109
  };
40
110
 
41
- const specStore = new MemorySpecStore({
42
- home: homeSpec,
43
- });
44
-
45
- const loadedSpec = await specStore.load('home') as Spec;
46
- const result = validateSpec(loadedSpec);
111
+ const result = validateSpec(homeSpec);
47
112
 
48
113
  if (!result.valid) {
49
- console.error(result.errors);
114
+ for (const err of result.errors) {
115
+ console.error(`[${err.ruleId}] ${err.path}: ${err.message}`);
116
+ }
117
+ process.exit(1);
50
118
  }
119
+
120
+ const store = new MemorySpecStore({ home: homeSpec });
121
+ const loaded = await store.load('home');
122
+ console.log('Loaded spec for screen:', loaded?.root);
51
123
  ```
52
124
 
53
- ## Browser-Safe and Node-Only Entries
125
+ `validateSpec()` is the same function the CLI calls when it runs
126
+ `mythik validate <spec-id>` and the same gate that `mythik patch`
127
+ enforces atomically. Same machine, three surfaces.
128
+
129
+ For rendering specs as a React UI, see
130
+ [`mythik-react`](https://github.com/mldixdev/mythik/tree/main/packages/react#readme).
131
+ For an AI agent surface to read, validate, patch, and promote specs
132
+ from the command line, see
133
+ [`mythik-cli`](https://github.com/mldixdev/mythik/tree/main/packages/cli#readme).
134
+
135
+ ## AI documentation, bundled
136
+
137
+ This package ships the canonical AI documentation inside the npm
138
+ tarball — so the docs travel with the framework (no external doc
139
+ fetching, no version drift between docs and runtime):
140
+
141
+ ```text
142
+ node_modules/mythik/docs/
143
+ ├── consumer/
144
+ │ ├── ai-context.md # spec-generation primer
145
+ │ ├── ai-context-primitives.md # every primitive's props
146
+ │ ├── ai-context-runtime-semantics.md # render-time behavior
147
+ │ ├── ai-context-custom-elements.md # custom expressions/actions
148
+ │ ├── reference-doc.md # full rule catalog
149
+ │ └── WHERE-TO-LOOK.md # navigation guide
150
+ ├── wiki/compiled/ # 327 atomic per-concept articles
151
+ └── llms.txt # index for LLM tooling
152
+ ```
54
153
 
55
- Use the main entry in browser/runtime code:
154
+ `mythik-cli` adds a small helper to locate or copy these into your
155
+ project:
56
156
 
57
- ```ts
58
- import { MemorySpecStore, SupabaseSpecStore } from 'mythik';
157
+ ```bash
158
+ $ npx mythik docs path
159
+ /your-project/node_modules/mythik/docs
160
+
161
+ $ npx mythik docs copy ./mythik-docs
59
162
  ```
60
163
 
61
- Use the server subpath for Node-only stores:
164
+ Point your AI agent at the printed path before asking it to author or
165
+ modify specs.
62
166
 
63
- ```ts
64
- import { FileSpecStore, SqlServerSpecStore } from 'mythik/server';
65
- ```
167
+ ## Related packages
66
168
 
67
- ## Related Packages
68
-
69
- - `mythik-react` renders Mythik specs in React.
70
- - `mythik-cli` provides the `mythik` command and programmatic CLI API.
71
- - `mythik-server` turns an ApiSpec into a REST server.
72
-
73
- React Native work is currently a repository preview track and is not part of the initial npm publish surface.
74
-
75
- ## AI Documentation
76
-
77
- The npm package includes the documentation an AI agent needs to work with Mythik:
78
-
79
- ```text
80
- node_modules/mythik/docs/llms.txt
81
- node_modules/mythik/docs/consumer/ai-context.md
82
- node_modules/mythik/docs/wiki/compiled/README.md
83
- ```
84
-
85
- Use the CLI to locate or copy that documentation:
86
-
87
- ```bash
88
- npx mythik docs path
89
- npx mythik docs copy ./mythik-docs
90
- ```
91
-
92
- ## License
169
+ - [`mythik-react`](https://github.com/mldixdev/mythik/tree/main/packages/react#readme) — render the specs as a React app
170
+ - [`mythik-cli`](https://github.com/mldixdev/mythik/tree/main/packages/cli#readme) — author and patch specs from the command line (the AI-first surface)
171
+ - [`mythik-server`](https://github.com/mldixdev/mythik/tree/main/packages/server#readme) declarative REST server from an `ApiSpec`
93
172
 
94
- Apache-2.0.
173
+ React Native work is a repository preview track and is not part of
174
+ the initial npm publish surface.
95
175
 
96
176
  ## Status
97
177
 
98
- v0.1.1 public release. APIs are documented for real-world feedback as the framework evolves.
178
+ `v0.1.2` public release. APIs are documented for real-world feedback
179
+ as the framework evolves.
180
+
181
+ ## License
182
+
183
+ Apache-2.0.
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-engine.d.ts","sourceRoot":"","sources":["../../src/actions/transaction-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,wBAAwB,CAAC;IACrC,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CA0G1F"}
1
+ {"version":3,"file":"transaction-engine.d.ts","sourceRoot":"","sources":["../../src/actions/transaction-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,wBAAwB,CAAC;IACrC,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAqDD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAwG1F"}
@@ -1,4 +1,43 @@
1
1
  const DEFAULT_TIMEOUT = 10_000;
2
+ function isRecord(value) {
3
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
4
+ }
5
+ function firstString(...values) {
6
+ for (const value of values) {
7
+ if (typeof value === 'string' && value.length > 0)
8
+ return value;
9
+ }
10
+ return undefined;
11
+ }
12
+ function getErrorOwnFields(error) {
13
+ const fields = {};
14
+ for (const key of Object.getOwnPropertyNames(error)) {
15
+ if (key === 'message' || key === 'name' || key === 'stack')
16
+ continue;
17
+ fields[key] = error[key];
18
+ }
19
+ return fields;
20
+ }
21
+ function normalizeTransactionError(error, fallbackMessage = 'Transaction failed') {
22
+ if (error instanceof Error) {
23
+ return {
24
+ ...getErrorOwnFields(error),
25
+ message: error.message || fallbackMessage,
26
+ };
27
+ }
28
+ if (!isRecord(error)) {
29
+ return { message: fallbackMessage };
30
+ }
31
+ const data = isRecord(error.data) ? error.data : undefined;
32
+ const nestedError = data && isRecord(data.error) ? data.error : undefined;
33
+ const message = firstString(nestedError?.message, data?.message, error.message, fallbackMessage) ?? fallbackMessage;
34
+ const code = firstString(nestedError?.code, data?.code, error.code);
35
+ return {
36
+ ...error,
37
+ ...(code ? { code } : {}),
38
+ message,
39
+ };
40
+ }
2
41
  export function createTransactionEngine(config) {
3
42
  const { store, dispatcher, resolve } = config;
4
43
  // --- Queue: one transaction at a time ---
@@ -36,6 +75,7 @@ export function createTransactionEngine(config) {
36
75
  await executeActions(txConfig.optimistic);
37
76
  }
38
77
  // Phase 4: confirm (with timeout)
78
+ let confirmError = null;
39
79
  try {
40
80
  // Clear any previous lastError so we can detect new ones
41
81
  store.set('/ui/lastError', null);
@@ -46,7 +86,7 @@ export function createTransactionEngine(config) {
46
86
  // Check if confirm resulted in an error stored by the fetch action
47
87
  const lastError = store.get('/ui/lastError');
48
88
  if (lastError) {
49
- store.set('/tx/error', lastError);
89
+ confirmError = normalizeTransactionError(lastError, 'Confirm phase failed');
50
90
  throw new Error('Confirm phase failed');
51
91
  }
52
92
  // Phase 5a: onSuccess
@@ -57,12 +97,8 @@ export function createTransactionEngine(config) {
57
97
  catch (err) {
58
98
  // Rollback: restore snapshot atomically (single set, one re-render)
59
99
  store.set('/', snapshot);
60
- // Write error to /tx/error if not already set
61
- if (!store.get('/tx/error')) {
62
- store.set('/tx/error', {
63
- message: err instanceof Error ? err.message : 'Transaction failed',
64
- });
65
- }
100
+ // Write error after rollback so root restore cannot erase details.
101
+ store.set('/tx/error', confirmError ?? normalizeTransactionError(err));
66
102
  // Phase 5b: onError (after rollback)
67
103
  if (txConfig.onError && txConfig.onError.length > 0) {
68
104
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-engine.js","sourceRoot":"","sources":["../../src/actions/transaction-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction-engine.js","sourceRoot":"","sources":["../../src/actions/transaction-engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../src/design/dna.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAgCzE;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAkMrD"}
1
+ {"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../src/design/dna.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAqCzE;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAkMrD"}
@@ -7,6 +7,11 @@ function roundTo(n, decimals) {
7
7
  const factor = Math.pow(10, decimals);
8
8
  return Math.round(n * factor) / factor;
9
9
  }
10
+ function normalizeDnaNumericSeed(value, fallback) {
11
+ if (typeof value !== 'number')
12
+ return fallback;
13
+ return value > 1 ? value / 100 : value;
14
+ }
10
15
  const HARMONY_OFFSETS = {
11
16
  complementary: 180,
12
17
  analogous: 50,
@@ -24,11 +29,11 @@ const MOTION_PRESETS = {
24
29
  * Uses OKLCH color math for perceptually uniform palette generation.
25
30
  */
26
31
  export function deriveDna(seed) {
27
- const roundness = seed.roundness ?? 0.5;
28
- const density = seed.density ?? 0.5;
29
- const depth = seed.depth ?? 0.5;
32
+ const roundness = normalizeDnaNumericSeed(seed.roundness, 0.5);
33
+ const density = normalizeDnaNumericSeed(seed.density, 0.5);
34
+ const depth = normalizeDnaNumericSeed(seed.depth, 0.5);
30
35
  const motionPreset = seed.motion ?? 'gentle';
31
- const formality = seed.formality ?? 0.5;
36
+ const formality = normalizeDnaNumericSeed(seed.formality, 0.5);
32
37
  const harmony = seed.harmony ?? 'complementary';
33
38
  const neutralMode = seed.neutral ?? 'natural';
34
39
  // --- Colors ---
@@ -1 +1 @@
1
- {"version":3,"file":"dna.js","sourceRoot":"","sources":["../../src/design/dna.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dna.js","sourceRoot":"","sources":["../../src/design/dna.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAyB,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACtG,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE;QACR,QAAQ,EAAE,QAAQ,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,eAAe,EAAE,CAAA;SAAE,CAAC;QAC5E,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,yFAAyF;IACzF,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,6IAA6I;IAC7I,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,cAAc,CA2QtE"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAyB,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACtG,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE;QACR,QAAQ,EAAE,QAAQ,CAAC;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,eAAe,EAAE,CAAA;SAAE,CAAC;QAC5E,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,yFAAyF;IACzF,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,6IAA6I;IAC7I,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,cAAc,CA+PtE"}
package/dist/factory.js CHANGED
@@ -142,19 +142,7 @@ export function createMythik(config = {}) {
142
142
  // Deep merge with previously-applied raw tokens — enables partial updates
143
143
  currentRawTokens = deepMergeTokens(currentRawTokens, rawTokens);
144
144
  }
145
- // Normalize DNA seeds: if numeric values > 1, assume 0-100 scale and convert to 0-1
146
- const normalized = { ...currentRawTokens };
147
- if (normalized.dna && typeof normalized.dna === 'object') {
148
- const dna = { ...normalized.dna };
149
- const numericSeeds = ['roundness', 'density', 'depth', 'formality'];
150
- for (const key of numericSeeds) {
151
- if (typeof dna[key] === 'number' && dna[key] > 1) {
152
- dna[key] = dna[key] / 100;
153
- }
154
- }
155
- normalized.dna = dna;
156
- }
157
- resolvedTokens = resolveDeepTokens(normalized);
145
+ resolvedTokens = resolveDeepTokens(currentRawTokens);
158
146
  injectColorTokens(resolvedTokens);
159
147
  injectIconRenderer(resolvedTokens);
160
148
  resolver = buildResolver();
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-spec-validator.d.ts","sourceRoot":"","sources":["../../src/security/api-spec-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;CAClC;AA0ED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,uBAAuB,CA2RtE"}
1
+ {"version":3,"file":"api-spec-validator.d.ts","sourceRoot":"","sources":["../../src/security/api-spec-validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;CAClC;AAgGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,uBAAuB,CA4StE"}
@@ -1,6 +1,23 @@
1
1
  import { isValidIdentifier } from './identifier-guard.js';
2
2
  const DANGEROUS_SQL_KEYWORDS = /\b(SELECT|INSERT|UPDATE|DELETE|DROP|ALTER|EXEC|EXECUTE|UNION|INTO)\b/i;
3
3
  const SQL_COMMENTS = /(--|\/\*)/;
4
+ const SCOPE_COUNT_MACRO_PATTERN = /{{\s*scope(Where|And)(?::\s*([^}\s]+))?\s*}}/g;
5
+ function getScopeCountMacroAliases(sql) {
6
+ const aliases = [];
7
+ SCOPE_COUNT_MACRO_PATTERN.lastIndex = 0;
8
+ for (const match of sql.matchAll(SCOPE_COUNT_MACRO_PATTERN)) {
9
+ if (match[2])
10
+ aliases.push(match[2]);
11
+ }
12
+ return aliases;
13
+ }
14
+ function hasScopeCountMacro(sql) {
15
+ SCOPE_COUNT_MACRO_PATTERN.lastIndex = 0;
16
+ return SCOPE_COUNT_MACRO_PATTERN.test(sql);
17
+ }
18
+ function endpointHasActiveScopeFilter(endpoint, auth) {
19
+ return !!auth?.scopeFilter && endpoint.scopeFilter !== undefined && endpoint.scopeFilter !== false;
20
+ }
4
21
  /**
5
22
  * Lint rule: spec-crud-id-collision — error when `endpoint.path` ends with `/:id`
6
23
  * AND the same node has `crud: {...}` present.
@@ -206,6 +223,21 @@ export function validateApiSpec(spec) {
206
223
  errors.push(`endpoint "${name}": invalid SQL identifier "${sf.column}" in scopeFilter.column`);
207
224
  }
208
225
  }
226
+ if (typeof endpoint.count === 'string') {
227
+ const usesScopeFilter = endpointHasActiveScopeFilter(endpoint, s.auth);
228
+ const usesScopeMacro = hasScopeCountMacro(endpoint.count);
229
+ if (usesScopeFilter && !usesScopeMacro) {
230
+ errors.push(`endpoint "${name}": custom "count" with scopeFilter must include {{scopeWhere}} or {{scopeAnd}} so Mythik can expand scope and bypass-role behavior`);
231
+ }
232
+ if (!usesScopeFilter && usesScopeMacro) {
233
+ errors.push(`endpoint "${name}": custom "count" uses a scope macro but scopeFilter is not enabled for this endpoint`);
234
+ }
235
+ for (const alias of getScopeCountMacroAliases(endpoint.count)) {
236
+ if (!isValidIdentifier(alias)) {
237
+ errors.push(`endpoint "${name}": invalid scope macro alias "${alias}" in custom "count"`);
238
+ }
239
+ }
240
+ }
209
241
  }
210
242
  }
211
243
  // Auth
@@ -1 +1 @@
1
- {"version":3,"file":"api-spec-validator.js","sourceRoot":"","sources":["../../src/security/api-spec-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-spec-validator.js","sourceRoot":"","sources":["../../src/security/api-spec-validator.ts"],"names":[],"mappings":"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"}
@@ -134,6 +134,7 @@ The `PUT` endpoint at `/api/items/:id` combined with the framework's auto-append
134
134
  | `handler` | string | Handler file name (mutually exclusive with `query`) |
135
135
  | `crud` | object | `{ table, primaryKey, insertable, updatable }` |
136
136
  | `pagination` | `"offset"` or `false` | Enable offset pagination |
137
+ | `count` | string | Optional custom `_total` query for offset pagination. Prefer generated counts. |
137
138
  | `totals` | string[] | Aggregate expressions: `"SUM:column"`, `"COUNT:*"` |
138
139
  | `params` | object | Parameter definitions (see below) |
139
140
  | `policy` | string | Reference to `auth.policies` key, or `"public"` |
@@ -142,6 +143,12 @@ The `PUT` endpoint at `/api/items/:id` combined with the framework's auto-append
142
143
 
143
144
  **Param properties:** `type` (`int`/`string`/`float`/`date`/`boolean`), `required?`, `default?`, `max?`, `source?` (`query`/`path`/`body`).
144
145
 
146
+ `pagination: "offset"` is compatible with `scopeFilter`. For framework-generated counts, Mythik applies the scope filter to the query source before wrapping it in `COUNT(*)`, so `total` reflects the scoped tenant/role slice. Prefer generated counts. If custom `endpoint.count` is truly needed with `scopeFilter`, include `{{scopeWhere[:alias]}}` when the count has no `WHERE`, or `{{scopeAnd[:alias]}}` when it already has one. Mythik expands the macro to the correct scope predicate, or to an empty string for bypass roles. Other custom count SQL is left verbatim; use `:alias` for JOIN/subquery counts so the scope column is qualified.
147
+
148
+ ```json
149
+ "count": "SELECT COUNT(*) as _total FROM Orders o WHERE o.status = @status {{scopeAnd:o}}"
150
+ ```
151
+
145
152
  **Audit properties:** `createdBy?`, `createdAt?`, `updatedBy?`, `updatedAt?` (column names), `timezone?` (IANA string). All optional. Values override client-sent (prevents spoofing). Without timezone → UTC.
146
153
 
147
154
  ### Auth
@@ -191,5 +198,6 @@ The `PUT` endpoint at `/api/items/:id` combined with the framework's auto-append
191
198
  - Audit values override client-sent values — prevents spoofing of created_by/updated_at
192
199
  - `policy: "public"` skips auth — use for health checks and public endpoints only
193
200
  - ScopeFilter `bypassRoles` lets admin roles see all data — other roles see only their scope
201
+ - Generated offset-pagination totals are scoped before aggregation when `scopeFilter` is enabled
194
202
  - Provider queries use `@username` parameter and must return `val` column
195
203
  - Param `source` defaults to auto-detect: path first, body for non-GET, query as fallback
@@ -146,7 +146,7 @@ Implementation: `packages/core/src/expressions/handlers/template.ts`.
146
146
  - **`before`** — eager at dispatch start. Side-effects that must NOT be rolled back (closeModal, navigate). Runs before any network call (reference-doc rule 13).
147
147
  - **`optimistic`** — eager at dispatch. State changes applied synchronously; UI reflects the change immediately. Rolled back on `onError`.
148
148
  - **`onSuccess`** — eager at network resolve. Response available in resolver context. UPDATE transactions typically omit `onSuccess` — the optimistic state is already correct; re-fetch causes visible flash (reference-doc rule 14).
149
- - **`onError`** — eager at network reject. Optimistic state reverted via snapshot BEFORE this phase runs. Error available in resolver context.
149
+ - **`onError`** — eager at network reject. Optimistic state reverted via snapshot BEFORE this phase runs. Error available in resolver context. For `fetch` confirm HTTP failures, `/tx/error` preserves backend details after rollback when available: HTTP `status`, raw `data`, nested `error.code`, and the best message from nested `error.message`, `data.message`, or fallback error text.
150
150
 
151
151
  **Internal phase (not consumer-visible):** a `snapshot` phase captures the state immediately before `optimistic`, enabling rollback. Consumers never invoke `snapshot` directly.
152
152
 
@@ -600,7 +600,9 @@ For role `admin`, the filter is NOT applied (admin sees all rows). Any other rol
600
600
 
601
601
  **Security invariant:** `scopeFilter` applies to UPDATE and DELETE, not just SELECT. A user cannot update or delete rows outside their scope — the filter is appended to the WHERE clause of those queries. Combined with audit fields (§3.1), this gives a defense-in-depth posture for multi-tenant apps.
602
602
 
603
- Implementation: `packages/server/src/server.ts:607-630` (scopeFilter in PUT), `:653-675` (scopeFilter in DELETE), plus equivalent logic in query endpoints (search `buildScopeWhereClause` for all call sites).
603
+ For query endpoints with `pagination: "offset"`, framework-generated totals are scoped before aggregation: Mythik wraps the original query with the scope filter first, then performs `COUNT(*)` over that scoped source. This keeps `total` aligned with the rows the user is allowed to see. Custom `endpoint.count` SQL is an advanced escape hatch. When custom count SQL is used with `scopeFilter`, it must include a scope macro: `{{scopeWhere[:alias]}}` if the count has no `WHERE`, or `{{scopeAnd[:alias]}}` if it already has one. Mythik expands the macro to the correct predicate and removes it for bypass roles. Mythik does not otherwise rewrite custom count SQL; use `:alias` for JOIN/subquery counts so the generated scope predicate is qualified.
604
+
605
+ Implementation: `packages/server/src/server.ts` (search `buildScopeWhereClause` for all scope-filter call sites).
604
606
 
605
607
  ---
606
608
 
@@ -15,12 +15,12 @@ Public npm package names are unscoped:
15
15
 
16
16
  - Runtime/core: `mythik`
17
17
  - Browser-safe server helpers from core: `mythik/server`
18
- - React host/runtime: `mythik-react`
19
- - CLI binary package: `mythik-cli` (binary command: `mythik`)
20
- - Programmatic CLI API: `mythik-cli/api`
21
- - Node/Express server package: `mythik-server`
22
-
23
- Use `npm install mythik mythik-react` for a React app, `npm install -D mythik-cli` for CLI workflows, and add `mythik-server` only when building a Mythik-backed Node server. The `mythik` npm package bundles the AI documentation corpus under `node_modules/mythik/docs`; use `mythik docs path` to locate it after install or `mythik docs copy ./mythik-docs` to copy it into the current project.
18
+ - React host/runtime: `mythik-react`
19
+ - CLI binary package: `mythik-cli` (binary command: `mythik`)
20
+ - Programmatic CLI API: `mythik-cli/api`
21
+ - Node/Express server package: `mythik-server`
22
+
23
+ Use `npm install mythik mythik-react` for a React app, `npm install -D mythik-cli` for CLI workflows, and add `mythik-server` only when building a Mythik-backed Node server. The `mythik` npm package bundles the AI documentation corpus under `node_modules/mythik/docs`; use `mythik docs path` to locate it after install or `mythik docs copy ./mythik-docs` to copy it into the current project.
24
24
 
25
25
  ## Spec Structure
26
26
 
@@ -85,12 +85,12 @@ Every screen is a flat tree: `root` ID + `elements` map + optional `initialActio
85
85
 
86
86
  ## CLI Workflow
87
87
 
88
- ```bash
89
- mythik docs path # Locate bundled AI documentation
90
- mythik docs copy ./mythik-docs # Copy docs for an AI agent / local review
91
- mythik manifest <screen> # See structural tree
92
- mythik elements <screen> <id1,id2> # Get element details
93
- mythik patch <screen> --from-file patch.json # Apply RFC 6902 patches
88
+ ```bash
89
+ mythik docs path # Locate bundled AI documentation
90
+ mythik docs copy ./mythik-docs # Copy docs for an AI agent / local review
91
+ mythik manifest <screen> # See structural tree
92
+ mythik elements <screen> <id1,id2> # Get element details
93
+ mythik patch <screen> --from-file patch.json # Apply RFC 6902 patches
94
94
  mythik pull <screen> # Export full spec for backup/review
95
95
  mythik push <screen> # Create or intentionally replace a full spec
96
96
  mythik validate <screen> # Validate spec
@@ -434,7 +434,7 @@ Use `transaction` for CRUD operations. Instant UI → server confirm → auto-ro
434
434
  - `optimistic` — data changes, ROLLED BACK on error (setState for data + form reset)
435
435
  - `confirm` — network request, determines success. Write to `/tx/result` via target
436
436
  - `onSuccess` — post-success sync (re-fetch). `$state: "/tx/result"` reads confirm result
437
- - `onError` — runs after rollback. `$state: "/tx/error"` has `{ message }`
437
+ - `onError` — runs after rollback. `$state: "/tx/error"` has `{ message }`; fetch-based confirm failures preserve backend details when available (`status`, `data`, nested `error.code`, nested `error.message`)
438
438
 
439
439
  **CRUD variations:**
440
440
 
@@ -962,6 +962,8 @@ Tokens go beyond colors. Every visual property reads from tokens — shape, typo
962
962
  | `motion` | `fluid` \| `snappy` \| `gentle` \| `energetic` | Animation personality |
963
963
  | `formality` | 0–1 | Typography: 0=casual (Inter) → 1=formal (Playfair Display) |
964
964
 
965
+ Use `0–1` numeric DNA values in generated specs. The runtime accepts legacy `0–100` values for `roundness`, `density`, `depth`, and `formality` by normalizing values greater than `1` with `/100`, but canonical specs should emit `0.7`, not `70`.
966
+
965
967
  **Three control levels:**
966
968
 
967
969
  Level 1 — Minimal: `"dna": { "primary": "#0D9488" }` → full identity from 1 color.
@@ -1370,5 +1372,8 @@ When the framework changes the schema in a future version, this section will gai
1370
1372
  82. Use `editorSessions.<id>.persistence` plus `editorSave` for generic editor document persistence. The AI should not hand-compose `transaction` + `editorMarkSaved` for normal editor saves. `editorSave` captures the tracked paths snapshot, persists it through the host fetcher with URL-guard checks, and marks only the sent snapshot as saved after success. Failed saves keep `dirty: true` and expose save metadata under `/ui/editorSessions/<id>`.
1371
1373
  83. Use `navigation.editorSessionGuard` for generic unsaved-changes protection in app specs instead of hand-rolled JSON dirty checks. Configure `sessions`, render your own JSON modal from `/ui/navigationGuard/pending`, call `navigationGuardCancel`, `navigationGuardSaveAndProceed`, `navigationGuardProceed`, or `navigationGuardDiscardAndProceed`, and keep `pendingPath` under a consumer-owned `/ui/<segment>` path that does not collide with reserved framework paths. `navigationGuardSaveAndProceed` is the normal save-first UX for persisted editor sessions; `navigationGuardProceed` is a low-level non-destructive retry that only resumes after the pending editor sessions are already clean; use `navigationGuardDiscardAndProceed` when the user explicitly chooses to abandon unsaved tracked-path changes.
1372
1374
  84. In React apps without auth framework fetch, pass `fetcher` to `MythikApp` when editor sessions use `editorSave` or `navigationGuardSaveAndProceed`. Auth-enabled apps continue to use the framework fetch produced by auth interceptors. Do not route save-and-continue through `/ui/lastError` or a hand-composed fetch action; the editor session engine owns save metadata under `/ui/editorSessions/<id>`.
1373
- 85. For existing spec edits, the required AI loop is `mythik manifest` -> `mythik elements` -> `mythik patch --from-file` -> verify. Manifest tells you the structure; elements gives the exact JSON you are changing; patch is the validated write path. Do not skip directly to full-spec `pull`/rewrite/push for a local change, do not mutate DB rows manually, and do not call `SpecStore.save()` from app code. Use `push` for new specs or intentional full replacement only.
1374
- 86. Mythik's AI documentation ships with the `mythik` npm package. Before generating or modifying specs, locate it with `mythik docs path` and start from `docs/llms.txt`, `docs/consumer/ai-context.md`, and `docs/wiki/compiled/README.md`. Use `mythik docs copy ./mythik-docs` when a project-local copy is easier to hand to an AI agent.
1375
+ 85. For existing spec edits, the required AI loop is `mythik manifest` -> `mythik elements` -> `mythik patch --from-file` -> verify. Manifest tells you the structure; elements gives the exact JSON you are changing; patch is the validated write path. Do not skip directly to full-spec `pull`/rewrite/push for a local change, do not mutate DB rows manually, and do not call `SpecStore.save()` from app code. Use `push` for new specs or intentional full replacement only.
1376
+ 86. Mythik's AI documentation ships with the `mythik` npm package. Before generating or modifying specs, locate it with `mythik docs path` and start from `docs/llms.txt`, `docs/consumer/ai-context.md`, and `docs/wiki/compiled/README.md`. Use `mythik docs copy ./mythik-docs` when a project-local copy is easier to hand to an AI agent.
1377
+ 87. DNA numeric seeds (`roundness`, `density`, `depth`, `formality`) are canonical `0–1` values. Generate `0.7`, not `70`. The runtime tolerates legacy `0–100` values by normalizing any numeric seed greater than `1` with `/100` during DNA derivation, including initial AppSpec load and runtime `updateTokens`.
1378
+ 88. API query endpoints can combine `pagination: "offset"` with `scopeFilter`. For generated counts, Mythik applies the scope filter to the source query before `COUNT(*)`, so paginated totals remain tenant-scoped. Prefer generated counts. If a custom `endpoint.count` is truly needed with `scopeFilter`, include `{{scopeWhere[:alias]}}` or `{{scopeAnd[:alias]}}`; Mythik expands the macro to the correct scope predicate and removes it for bypass roles. Other custom count SQL is left verbatim. Use `:alias` for JOIN/subquery counts, and do not reference internal scope params directly.
1379
+ 89. Transaction `confirm` failures from `fetch` preserve backend error details for `onError`. Read `/tx/error/message` for the best available message; when the backend returns `{ error: { code, message } }`, Mythik keeps that message, `code`, HTTP `status`, and raw `data` after rollback. Do not parse `/ui/lastError` from transaction specs.
@@ -11,16 +11,16 @@ When asked to create or modify UI, produce a JSON **Spec** following the structu
11
11
 
12
12
  ## CLI — Spec Modification via Mythik CLI
13
13
 
14
- Use the `mythik` CLI to read and modify specs stored in Supabase (or other stores).
15
-
16
- For AI agents, locate the bundled Mythik documentation before generating or changing specs:
17
-
18
- ```bash
19
- mythik docs path
20
- mythik docs copy ./mythik-docs
21
- ```
22
-
23
- The `mythik` npm package ships `docs/llms.txt`, canonical `docs/consumer/*`, and the compiled `docs/wiki/compiled/*` wiki so the framework contract is available after install.
14
+ Use the `mythik` CLI to read and modify specs stored in Supabase (or other stores).
15
+
16
+ For AI agents, locate the bundled Mythik documentation before generating or changing specs:
17
+
18
+ ```bash
19
+ mythik docs path
20
+ mythik docs copy ./mythik-docs
21
+ ```
22
+
23
+ The `mythik` npm package ships `docs/llms.txt`, canonical `docs/consumer/*`, and the compiled `docs/wiki/compiled/*` wiki so the framework contract is available after install.
24
24
 
25
25
  ### Commands
26
26
 
@@ -912,7 +912,7 @@ The action executes in the background. The next action in the chain starts immed
912
912
  | `uploadFile` | `{ bucket, target, path? }` | Upload file(s) to storage via StorageAdapter. Writes URL(s) to target path |
913
913
  | `deleteFile` | `{ path, bucket }` | Delete file from storage |
914
914
  | `export` | `{ source, columns, filename, format? }` | Export data as CSV (built-in) or via adapter (XLSX/PDF). Triggers download |
915
- | `updateTokens` | `{ dna?: {...}, identity?: {...}, _replace?: true }` | Hot-swap design tokens at runtime. Deep-merges by default; `_replace: true` fully replaces. Persists raw config to `/tokens/raw`. Numeric DNA seeds > 1 auto-normalized (÷100) |
915
+ | `updateTokens` | `{ dna?: {...}, identity?: {...}, _replace?: true }` | Hot-swap design tokens at runtime. Deep-merges by default; `_replace: true` fully replaces. Persists raw config to `/tokens/raw`. Numeric DNA seeds > 1 auto-normalized (÷100) during DNA derivation |
916
916
 
917
917
  ### fetch Action Details
918
918
 
@@ -971,7 +971,7 @@ Use `transaction` for CRUD operations that need instant UI feedback. The framewo
971
971
  | `setState` (form reset) | `optimistic` | Restore form so user can retry |
972
972
  | `navigate` | `before` | Stay on page, show error there |
973
973
 
974
- **Confirm result access:** The `fetch` in `confirm` can write to `/tx/result` via `target`. `onSuccess` reads it with `{ "$state": "/tx/result" }`. On error, `/tx/error` contains `{ message }`. Both are cleaned up automatically.
974
+ **Confirm result access:** The `fetch` in `confirm` can write to `/tx/result` via `target`. `onSuccess` reads it with `{ "$state": "/tx/result" }`. On error, `/tx/error` contains `{ message }`; fetch-based HTTP failures preserve backend details when available (`status`, `data`, nested `error.code`, nested `error.message`). Both are cleaned up automatically.
975
975
 
976
976
  **Timeout:** Default 10 seconds. Override with `timeout` (ms):
977
977
  ```json
@@ -1985,7 +1985,7 @@ Reference tokens or write custom values:
1985
1985
  98. **Use DNA seeds for app identity** — define `tokens.dna` in AppSpec with 1-8 seed values. The framework derives all visual tokens (colors via OKLCH tonal palette, shape, typography, spacing, elevation, motion, opacity) plus auto dark mode. No manual color palette or radius scale needed — DNA generates it from `{ "primary": "#0D9488" }`
1986
1986
  99. **Three-layer token resolution** — Framework DEFAULTS (always present) → DNA derivation (if `dna` seed exists) → Manual overrides (explicit `tokens.*` values always win). Specs without tokens use defaults. Specs with only DNA get full derived identity. Specs with DNA + overrides get derived base with surgical customization
1987
1987
  100. **`$token` auto-converts elevation to CSS** — `{ "$token": "elevation.md" }` returns a CSS `boxShadow` string on web (e.g., `"0px 4px 12px rgba(0,0,0,0.15)"`). On RN, primitives handle elevation internally via native shadow props. No manual conversion needed
1988
- 101. **`updateTokens` for runtime token changes** — `{ "action": "updateTokens", "params": { "dna": { "primary": "#F97316" } } }` hot-swaps all tokens without page reload. All primitives re-render with new values. Numeric DNA seeds > 1 are auto-normalized (divided by 100 for 0-100 slider compatibility)
1988
+ 101. **`updateTokens` for runtime token changes** — `{ "action": "updateTokens", "params": { "dna": { "primary": "#F97316" } } }` hot-swaps all tokens without page reload. All primitives re-render with new values. Numeric DNA seeds > 1 are auto-normalized during DNA derivation (divided by 100 for 0-100 legacy/slider compatibility)
1989
1989
  102. **Font loading is the project's responsibility** — DNA derives font family names (Inter, DM Sans, Playfair Display, Georgia, Source Sans) but does NOT load them. Web: include Google Fonts link or `@font-face`. RN: use `expo-font`. Without loading, browser falls back to system fonts
1990
1990
  103. **`useDesignTokens` replaces `useThemeColors` in primitives** — all 35 migrated primitives (18 web + 17 RN) use `useDesignTokens` internally. It extracts colors, shape, typography, spacing, elevation, motion, and opacity with framework defaults as fallback. `useThemeColors` is deprecated but still works as wrapper
1991
1991
  104. **`mythik tokens` inspects DNA derivation** — `mythik tokens --dna '{"primary":"#0D9488"}' --json` shows the full resolved token set. Use for debugging and verifying what DNA generates before applying to a spec
@@ -2010,7 +2010,7 @@ Reference tokens or write custom values:
2010
2010
  123. **Custom checkbox is surface-aware** — Replaced native `<input type="checkbox">` with custom div+SVG. Unchecked: uses `t.surface.input` styles. Checked: fills with primary, preserves surface border (bold keeps 2px, neo keeps shadow). Focus uses `t.surface.inputFocus`. Hidden input preserved for accessibility
2011
2011
  124. **Elevation and border resolvers ready but not yet consumed** — `resolveElevationStyle()` (diffuse/solid/color/none) and `resolveBorderStyle()` defined, tested, exported, values in `t.identity.*`. Primitives don't consume them yet — reserved for future phases when elevation identity overrides surface defaults
2012
2012
  125. **`colors.background` is the STATIC base page background** — Distinct from `colors.surface` (card/component bg). Returns `#f8fafc` light gray (or dark-mode equivalent via `/preferences/theme`), but does NOT respond to preset `identity.colorScheme` changes. Safe for light-only apps. For preset-aware layouts (apps that support dark-surface or colored-surface presets), use `backgroundCSS` instead — see rule 155. Visible failure mode: dark preset with layout using `colors.background` produces a light frame around dark content
2013
- 126. **`updateTokens` does deep merge — partial updates work** — Calling `updateTokens({ dna: { roundness: 50 } })` merges with previously-applied tokens instead of replacing them. Previous primary color, surface settings, etc. persist. Enables live playground controls where each slider updates only its dimension
2013
+ 126. **`updateTokens` does deep merge — partial updates work** — Calling `updateTokens({ dna: { roundness: 0.5 } })` merges with previously-applied tokens instead of replacing them. Previous primary color, surface settings, etc. persist. Enables live playground controls where each slider updates only its dimension. Legacy 0-100 values are tolerated by runtime normalization, but generated specs should use canonical 0-1 values.
2014
2014
  127. **`deepMergeTokens` exported from core** — `import { deepMergeTokens } from 'mythik'`. Recursively merges objects (arrays and non-objects replace, objects deep-merge). Used internally by `updateTokens`
2015
2015
  128. **Depth and angle are serializer concerns, not data concerns** — `identity.depth` (0-1) and `identity.shadowAngle` (0-360°) are NOT in `StructuredSurfaceStyleProps`. Shadows store raw `magnitude`/`blur`/`opacity`. The serializer (`surfaceToCSS`/`surfaceToRN`) applies `depthScale()` and sin/cos angle rotation when converting to platform-specific format. This keeps the structured data pure and reusable
2016
2016
  129. **`resolveIdentity<T>()` — unified orchestrator** — Single function in core orchestrates: resolveSchemeColors → generateTonalStep → resolveSurfaceStyles → serializer(T) → resolveColorWeight → resolveRadiusPattern. Accepts a `SurfaceSerializer<T>` function — each platform passes its own (surfaceToCSS, surfaceToRN). Returns `{ schemeColors, surface: T, colorWeight, radius }`. Web/RN hooks call this one function instead of 6+ manual steps
@@ -2729,6 +2729,8 @@ Define in `tokens.dna` at the AppSpec level. The framework derives ALL token cat
2729
2729
  | `motion` | `fluid` \| `snappy` \| `gentle` \| `energetic` | `gentle` | Animation duration, spring, stagger |
2730
2730
  | `formality` | 0–1 | 0.5 | Typography: 5 font tiers. Body: Inter → Space Grotesk → Source Sans 3 → Lora → Merriweather. Heading: Inter → Space Grotesk → DM Sans → Lora → Playfair Display. Also drives continuous letterSpacing (0 → 0.03em), headingLetterSpacing (0 → -0.02em), lineHeight ratio (1.45 → 1.6), bold weight (700 → 800) |
2731
2731
 
2732
+ Numeric seeds are canonical `0–1` values. Generate `0.7`, not `70`. For backward compatibility with legacy exports and percentage-style inputs, values greater than `1` are auto-normalized by dividing by `100` during DNA derivation, so both initial AppSpec load and runtime `updateTokens` resolve consistently.
2733
+
2732
2734
  ### Three Control Levels
2733
2735
 
2734
2736
  **Level 1 — Just a color:** `"dna": { "primary": "#0D9488" }` → full coherent identity.
@@ -2764,7 +2766,7 @@ Use `updateTokens` action to change tokens without page reload:
2764
2766
  ```json
2765
2767
  { "action": "updateTokens", "params": { "dna": { "primary": "#F97316", "roundness": 0.9 } } }
2766
2768
  ```
2767
- All primitives re-render with new tokens. Numeric seeds > 1 are auto-divided by 100 (slider 0-100 compatibility).
2769
+ All primitives re-render with new tokens. Numeric seeds > 1 are auto-divided by 100 during DNA derivation (legacy slider 0-100 compatibility).
2768
2770
 
2769
2771
  ### Presets System
2770
2772
 
@@ -3041,7 +3043,7 @@ The current background and motion stack combines app-level `LayerBackground`, an
3041
3043
 
3042
3044
  211. **`useShapeAnimations(ref, animations, options)` — Layer 3 web runner** — Exported from `mythik-react` via `packages/react/src/animation/useShapeAnimations.ts`. React hook for SVG-child animations (`<path>`/`<circle>`/`<rect>`/`<g>`…). Consumes the same `ElementAnimations` contract as `useElementAnimations` but narrowed to the `ambient` trigger ONLY; shape children have no hover/focus/active contract and no distinct mount ceremony. Attaches CSS animations via `el.style.animation` (surgical, preserves other inline styles); keyframes register once through the CSSOM singleton (zero `dangerouslySetInnerHTML`) and dedupe by hash so multiple shape instances with the same recipe share one CSS rule. Dev mode warns when non-ambient triggers are passed. Production silently ignores them. `options.recipes` SHOULD be stable for useMemo performance.
3043
3045
 
3044
- 212. **`useShapeAnimations(animations, options)` — Layer 3 RN runner** — Repository-preview implementation in `packages/react-native/src/animation/useShapeAnimations.ts`; it is not part of the initial npm publish surface. Reanimated parity of rule 211: returns `{ animatedProps }` that the consumer spreads onto `Animated.createAnimatedComponent(Path)` from `react-native-svg`. Uses the `HARD_PER_TRIGGER` (=6) fixed-pool `useSharedValue` pattern (`useSharedValueArray` helper, also exported) so React Hook count stays stable. Reuses `composeRNStyle(contributions, interpolate, interpolateColor)` shared with `useElementAnimations` — single composition pipeline for View-style and animated SVG props. Relies on `react-native-svg` v13+ auto-translating the transform array into SVG `transform="..."` strings. Same dev-mode non-ambient-trigger warning as the web hook.
3046
+ 212. **`useShapeAnimations(animations, options)` — Layer 3 RN runner** — Repository-preview implementation in `packages/react-native/src/animation/useShapeAnimations.ts`; it is not part of the initial npm publish surface. Reanimated parity of rule 211: returns `{ animatedProps }` that the consumer spreads onto `Animated.createAnimatedComponent(Path)` from `react-native-svg`. Uses the `HARD_PER_TRIGGER` (=6) fixed-pool `useSharedValue` pattern (`useSharedValueArray` helper, also exported) so React Hook count stays stable. Reuses `composeRNStyle(contributions, interpolate, interpolateColor)` shared with `useElementAnimations` — single composition pipeline for View-style and animated SVG props. Relies on `react-native-svg` v13+ auto-translating the transform array into SVG `transform="..."` strings. Same dev-mode non-ambient-trigger warning as the web hook.
3045
3047
 
3046
3048
  213. **Cross-platform Layer 3 parity pins** — `buildCSSKeyframes` (web) and `buildReanimatedSpec` (RN) interpret the same resolved `AnimationSpec` identically on load-bearing invariants: duration agreement (ms count matches regardless of input form `'28s'`/`'28000'`), keyframe stop count (web `%` markers match RN `inputRange` length), direction semantic (`'alternate'` token ⇔ `timing.reverse=true`), iterations `'infinite'`/numeric count, animated-prop enumeration (`translateX/Y`/`rotateDeg`/`scale`).
3047
3049
 
@@ -3197,5 +3199,8 @@ See `ai-context.md` for spec-gen anti-patterns the AI must NOT generate.
3197
3199
 
3198
3200
  281. **`MythikApp.fetcher` supplies editor persistence when auth fetch is absent** - React hosts can pass `fetcher={(url, options) => ...}` to `MythikApp` so `editorSave` and `navigationGuardSaveAndProceed` have a transport in non-auth apps. When auth is configured, the framework fetch with auth interceptors remains the active fetcher. Save actions do not read global `/ui/lastError`; editor save status, errors, and attempts are reported under `/ui/editorSessions/<id>`.
3199
3201
 
3200
- 282. **Existing spec edits must use the CLI inspection-then-patch loop** - For an existing screen/app/api spec, AI agents should run `mythik manifest <id>` first, inspect only the target nodes with `mythik elements <id> <ids>`, apply a small RFC 6902 patch with `mythik patch <id> --from-file patch.json`, and verify with `manifest` or `elements`. This keeps edits surgical, validated, versionable, and reviewable. `pull` is for backup, migration, review, or full-document work; `push` is for new specs or intentional full replacement. Direct database edits and direct `SpecStore.save()` calls bypass validation and are not approved spec-write paths.
3201
- 283. **Bundled AI docs are part of the install surface** - The `mythik` package includes `docs/llms.txt`, `docs/consumer/*`, and `docs/wiki/compiled/*`. Agents should run `mythik docs path` before spec generation and read the bundled docs rather than guessing from package source. Use `mythik docs copy ./mythik-docs` to create a project-local copy when the host workflow needs explicit files.
3202
+ 282. **Existing spec edits must use the CLI inspection-then-patch loop** - For an existing screen/app/api spec, AI agents should run `mythik manifest <id>` first, inspect only the target nodes with `mythik elements <id> <ids>`, apply a small RFC 6902 patch with `mythik patch <id> --from-file patch.json`, and verify with `manifest` or `elements`. This keeps edits surgical, validated, versionable, and reviewable. `pull` is for backup, migration, review, or full-document work; `push` is for new specs or intentional full replacement. Direct database edits and direct `SpecStore.save()` calls bypass validation and are not approved spec-write paths.
3203
+ 283. **Bundled AI docs are part of the install surface** - The `mythik` package includes `docs/llms.txt`, `docs/consumer/*`, and `docs/wiki/compiled/*`. Agents should run `mythik docs path` before spec generation and read the bundled docs rather than guessing from package source. Use `mythik docs copy ./mythik-docs` to create a project-local copy when the host workflow needs explicit files.
3204
+ 284. **DNA numeric seeds are canonical `0–1`, with legacy `0–100` normalization** - Generate `tokens.dna.roundness`, `density`, `depth`, and `formality` as `0–1` numbers (`0.7`, not `70`). The runtime normalizes numeric seed values greater than `1` by dividing by `100` inside DNA derivation, so initial AppSpec load and runtime `updateTokens` share the same backward-compatible behavior.
3205
+ 285. **Scoped pagination counts filter before aggregation** - Query endpoints may combine `pagination: "offset"` with `scopeFilter`. For generated counts, the server applies the scope filter to the query source first and then counts the scoped source, so the response `total` matches the same tenant/role slice as `data`. Prefer generated counts. If custom `endpoint.count` is truly needed with `scopeFilter`, it must include `{{scopeWhere[:alias]}}` or `{{scopeAnd[:alias]}}`; Mythik expands the macro to the correct scope predicate and removes it for bypass roles. Other custom count SQL is left verbatim. Specs should use `:alias` for JOIN/subquery counts and should not reference internal scope parameter names directly.
3206
+ 286. **Transaction fetch failures preserve backend error details** - When a transaction `confirm` uses `fetch` and the backend returns an HTTP error payload such as `{ error: { code, message } }`, `/tx/error` is written after rollback with the best backend message plus `code`, HTTP `status`, and raw `data`. `onError` should read `/tx/error/message`; transaction specs should not read global `/ui/lastError`.
@@ -39,15 +39,16 @@ Full reset (preset apply):
39
39
 
40
40
  ## Behavior
41
41
 
42
- - Without `_replace`, `updateTokens({ dna: { roundness: 50 } })` merges
42
+ - Without `_replace`, `updateTokens({ dna: { roundness: 0.5 } })` merges
43
43
  with previously-applied tokens — previous primary, surface, etc. persist.
44
44
  - With `_replace: true`, fully replaces (used internally by `applyPreset`
45
45
  to prevent stale flag values from carrying between presets — see
46
46
  [[@action-apply-preset]]).
47
47
  - After every call, the framework persists `currentRawTokens` to
48
48
  `/tokens/raw` and `resolvedTokens` to `/tokens/resolved`.
49
- - **Numeric DNA seeds > 1 are auto-normalized (÷100)** for slider
50
- 0-100 compatibility.
49
+ - **Numeric DNA seeds > 1 are auto-normalized (divided by 100)** for legacy
50
+ percentage-style compatibility, but generated specs should use canonical
51
+ 0-1 values.
51
52
 
52
53
  ## Related concepts
53
54
 
@@ -40,6 +40,8 @@ SQL-driven read endpoint with optional pagination + totals.
40
40
  Returns `{ data, total?, page?, pageSize?, totals? }` — see
41
41
  [[@concept-query-envelope]].
42
42
 
43
+ With `pagination: "offset"` and `scopeFilter`, generated totals are scoped before aggregation: Mythik filters the query source first, then counts that scoped source. Prefer generated counts. If custom `endpoint.count` SQL is truly needed with `scopeFilter`, include `{{scopeWhere[:alias]}}` or `{{scopeAnd[:alias]}}`; Mythik expands the macro to the correct scope predicate and removes it for bypass roles. Mythik does not otherwise rewrite custom count SQL; use `:alias` for JOIN/subquery counts.
44
+
43
45
  ## Related concepts
44
46
 
45
47
  - [[@concept-api-endpoints-overview]]
@@ -38,6 +38,8 @@ Or per-endpoint (boolean / per-endpoint config):
38
38
  - For roles in `bypassRoles`, the filter is NOT applied (admin sees all).
39
39
  - All other roles see only rows matching their JWT claim.
40
40
  - **Applies to UPDATE and DELETE**, not just SELECT — defense in depth.
41
+ - For query endpoints with `pagination: "offset"`, generated totals are scoped before aggregation, so `total` matches the rows the user is allowed to see.
42
+ - Custom `endpoint.count` SQL with `scopeFilter` must use `{{scopeWhere[:alias]}}` or `{{scopeAnd[:alias]}}`; Mythik expands the macro to the correct predicate and removes it for bypass roles. Prefer generated counts when possible. Other custom count SQL is left verbatim; use `:alias` for JOIN/subquery counts.
41
43
 
42
44
  ## Security invariant
43
45
 
@@ -25,6 +25,19 @@ spacing, elevation, motion, opacity, plus auto dark mode.
25
25
  | `motion` | enum | `gentle` | `fluid`, `snappy`, `gentle`, `energetic` — animation personality |
26
26
  | `formality` | 0–1 | 0.5 | Typography (5 font tiers + continuous letterSpacing/lineHeight/bold weight) |
27
27
 
28
+ ## Numeric seed scale
29
+
30
+ Numeric seeds (`roundness`, `density`, `depth`, `formality`) are canonical `0–1` values. Generate `0.7`, not `70`.
31
+
32
+ For backward compatibility with older exports and percentage-style values, the runtime auto-normalizes numeric seed values greater than `1` by dividing by `100` during DNA derivation. This applies consistently to initial AppSpec load and runtime `updateTokens`.
33
+
34
+ | Input | Behavior |
35
+ |---|---|
36
+ | `0.79` | Used as-is; recommended canonical form |
37
+ | `79` | Auto-normalized to `0.79` |
38
+ | `1` | Used as-is; boundary value, not divided |
39
+ | `0` | Used as-is |
40
+
28
41
  ## Examples
29
42
 
30
43
  Minimal:
@@ -41,7 +41,10 @@ automatically.**
41
41
 
42
42
  `fetch` in `confirm` writes to `/tx/result` via `target`. `onSuccess` reads
43
43
  it via `{ "$state": "/tx/result" }`. On error, `/tx/error` contains
44
- `{ message }`. Both are cleaned up automatically.
44
+ the best available error details. For `fetch` confirm HTTP failures, Mythik
45
+ preserves backend `error.message`, `error.code`, HTTP `status`, and raw `data`
46
+ after rollback so `onError` can show a useful message. Both paths are cleaned
47
+ up automatically.
45
48
 
46
49
  ## Timeout
47
50
 
@@ -15,10 +15,12 @@ messages.
15
15
  | Path | Content |
16
16
  |---|---|
17
17
  | `/tx/result` | Server response when `confirm` writes via `target: "/tx/result"`. Read in `onSuccess` |
18
- | `/tx/error` | `{ message }` on transaction error. Read in `onError` |
18
+ | `/tx/error` | Transaction error details. Read in `onError` |
19
19
 
20
20
  Both are cleaned up automatically after the transaction completes.
21
21
 
22
+ For `fetch` confirm HTTP failures, `/tx/error` preserves backend details after rollback when available: `message`, `code`, HTTP `status`, and raw `data`. If the backend returns `{ "error": { "code": "...", "message": "..." } }`, `/tx/error/message` uses that backend message rather than the generic transaction phase text.
23
+
22
24
  ## Use
23
25
 
24
26
  In `confirm` phase, write to `/tx/result`:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mythik",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Spec-driven core runtime for validated JSON applications, APIs, editor sessions, state, actions, validation, and versioning.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",