mrplex 0.0.1
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 +21 -0
- package/README.md +284 -0
- package/dist/cli/config.d.ts +28 -0
- package/dist/cli/config.js +48 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +13 -0
- package/dist/cli/exit-codes.js +39 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/format.d.ts +22 -0
- package/dist/cli/format.js +148 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/main.d.ts +16 -0
- package/dist/cli/main.js +1518 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/client/kernel-client.d.ts +97 -0
- package/dist/client/kernel-client.js +14 -0
- package/dist/client/kernel-client.js.map +1 -0
- package/dist/client/local.d.ts +26 -0
- package/dist/client/local.js +103 -0
- package/dist/client/local.js.map +1 -0
- package/dist/client/remote-mcp.d.ts +35 -0
- package/dist/client/remote-mcp.js +174 -0
- package/dist/client/remote-mcp.js.map +1 -0
- package/dist/embed/backfill.d.ts +24 -0
- package/dist/embed/backfill.js +33 -0
- package/dist/embed/backfill.js.map +1 -0
- package/dist/embed/chunker.d.ts +31 -0
- package/dist/embed/chunker.js +121 -0
- package/dist/embed/chunker.js.map +1 -0
- package/dist/embed/cmd-hook.d.ts +21 -0
- package/dist/embed/cmd-hook.js +100 -0
- package/dist/embed/cmd-hook.js.map +1 -0
- package/dist/embed/config.d.ts +61 -0
- package/dist/embed/config.js +109 -0
- package/dist/embed/config.js.map +1 -0
- package/dist/embed/hook.d.ts +38 -0
- package/dist/embed/hook.js +56 -0
- package/dist/embed/hook.js.map +1 -0
- package/dist/embed/http-hook.d.ts +13 -0
- package/dist/embed/http-hook.js +39 -0
- package/dist/embed/http-hook.js.map +1 -0
- package/dist/embed/worker.d.ts +62 -0
- package/dist/embed/worker.js +228 -0
- package/dist/embed/worker.js.map +1 -0
- package/dist/fixtures/hwe/characters/albion-ever.md +12 -0
- package/dist/fixtures/hwe/characters/cent.md +11 -0
- package/dist/fixtures/hwe/concepts/cent-demiurge-resonance.md +10 -0
- package/dist/fixtures/hwe/concepts/phase-looper.md +10 -0
- package/dist/fixtures/hwe/entities/demiurge.md +11 -0
- package/dist/fixtures/hwe/entities/monad.md +11 -0
- package/dist/fixtures/hwe/moc/globocorp-network.md +19 -0
- package/dist/fixtures/hwe/organizations/globocorp.md +11 -0
- package/dist/fixtures/hwe/readme.md +24 -0
- package/dist/fixtures/starship/crew/aria-okonkwo.md +14 -0
- package/dist/fixtures/starship/crew/bexley-orr.md +14 -0
- package/dist/fixtures/starship/crew/dax-thorne.md +14 -0
- package/dist/fixtures/starship/crew/isolde-marsh.md +16 -0
- package/dist/fixtures/starship/crew/kestrel-vance.md +15 -0
- package/dist/fixtures/starship/crew/quill-vasquez.md +14 -0
- package/dist/fixtures/starship/crew/soren-halloway.md +16 -0
- package/dist/fixtures/starship/encounters/the-drift-choir.md +14 -0
- package/dist/fixtures/starship/encounters/the-hollow-signal.md +16 -0
- package/dist/fixtures/starship/encounters/the-wandering-buoy.md +14 -0
- package/dist/fixtures/starship/equipment/coolant-loop-b.md +13 -0
- package/dist/fixtures/starship/equipment/emergency-ration-bars.md +12 -0
- package/dist/fixtures/starship/equipment/long-range-sensors.md +13 -0
- package/dist/fixtures/starship/equipment/plasma-manifold-3.md +15 -0
- package/dist/fixtures/starship/equipment/shuttle-corvid.md +13 -0
- package/dist/fixtures/starship/logs/marsh-4419-1.md +13 -0
- package/dist/fixtures/starship/logs/okonkwo-4415-1.md +13 -0
- package/dist/fixtures/starship/logs/orr-4413-1.md +13 -0
- package/dist/fixtures/starship/logs/orr-4420-1.md +12 -0
- package/dist/fixtures/starship/logs/thorne-4413-2.md +13 -0
- package/dist/fixtures/starship/logs/vance-4419-2.md +13 -0
- package/dist/fixtures/starship/misc/the-galley-ficus.md +11 -0
- package/dist/fixtures/starship/missions/the-cinder-run.md +17 -0
- package/dist/fixtures/starship/missions/the-drift-choir.md +17 -0
- package/dist/fixtures/starship/missions/the-hollow-signal.md +17 -0
- package/dist/fixtures/starship/missions/the-silent-beacon.md +17 -0
- package/dist/fixtures/starship/moc/crew.md +19 -0
- package/dist/fixtures/starship/moc/encounters.md +14 -0
- package/dist/fixtures/starship/moc/missions.md +15 -0
- package/dist/fixtures/starship/readme.md +60 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/auth/glob.d.ts +46 -0
- package/dist/kernel/auth/glob.js +112 -0
- package/dist/kernel/auth/glob.js.map +1 -0
- package/dist/kernel/auth/scope.d.ts +53 -0
- package/dist/kernel/auth/scope.js +83 -0
- package/dist/kernel/auth/scope.js.map +1 -0
- package/dist/kernel/casefold.d.ts +37 -0
- package/dist/kernel/casefold.js +44 -0
- package/dist/kernel/casefold.js.map +1 -0
- package/dist/kernel/constants.d.ts +21 -0
- package/dist/kernel/constants.js +22 -0
- package/dist/kernel/constants.js.map +1 -0
- package/dist/kernel/context.d.ts +70 -0
- package/dist/kernel/context.js +114 -0
- package/dist/kernel/context.js.map +1 -0
- package/dist/kernel/deletion.d.ts +50 -0
- package/dist/kernel/deletion.js +83 -0
- package/dist/kernel/deletion.js.map +1 -0
- package/dist/kernel/diff.d.ts +36 -0
- package/dist/kernel/diff.js +61 -0
- package/dist/kernel/diff.js.map +1 -0
- package/dist/kernel/errors.d.ts +37 -0
- package/dist/kernel/errors.js +55 -0
- package/dist/kernel/errors.js.map +1 -0
- package/dist/kernel/frontmatter-input.d.ts +32 -0
- package/dist/kernel/frontmatter-input.js +85 -0
- package/dist/kernel/frontmatter-input.js.map +1 -0
- package/dist/kernel/graph.d.ts +34 -0
- package/dist/kernel/graph.js +559 -0
- package/dist/kernel/graph.js.map +1 -0
- package/dist/kernel/history.d.ts +74 -0
- package/dist/kernel/history.js +143 -0
- package/dist/kernel/history.js.map +1 -0
- package/dist/kernel/kernel.d.ts +162 -0
- package/dist/kernel/kernel.js +675 -0
- package/dist/kernel/kernel.js.map +1 -0
- package/dist/kernel/path-config.d.ts +101 -0
- package/dist/kernel/path-config.js +171 -0
- package/dist/kernel/path-config.js.map +1 -0
- package/dist/kernel/query/ast.d.ts +24 -0
- package/dist/kernel/query/ast.js +52 -0
- package/dist/kernel/query/ast.js.map +1 -0
- package/dist/kernel/query/cel-parse.d.ts +37 -0
- package/dist/kernel/query/cel-parse.js +88 -0
- package/dist/kernel/query/cel-parse.js.map +1 -0
- package/dist/kernel/query/degrees.d.ts +31 -0
- package/dist/kernel/query/degrees.js +135 -0
- package/dist/kernel/query/degrees.js.map +1 -0
- package/dist/kernel/query/graph-ast.d.ts +51 -0
- package/dist/kernel/query/graph-ast.js +139 -0
- package/dist/kernel/query/graph-ast.js.map +1 -0
- package/dist/kernel/query/query.d.ts +56 -0
- package/dist/kernel/query/query.js +276 -0
- package/dist/kernel/query/query.js.map +1 -0
- package/dist/kernel/validation.d.ts +64 -0
- package/dist/kernel/validation.js +183 -0
- package/dist/kernel/validation.js.map +1 -0
- package/dist/kernel/version-id.d.ts +10 -0
- package/dist/kernel/version-id.js +21 -0
- package/dist/kernel/version-id.js.map +1 -0
- package/dist/kernel/wire.d.ts +148 -0
- package/dist/kernel/wire.js +6 -0
- package/dist/kernel/wire.js.map +1 -0
- package/dist/links/backfill.d.ts +28 -0
- package/dist/links/backfill.js +33 -0
- package/dist/links/backfill.js.map +1 -0
- package/dist/links/extract.d.ts +29 -0
- package/dist/links/extract.js +233 -0
- package/dist/links/extract.js.map +1 -0
- package/dist/links/link-config.d.ts +70 -0
- package/dist/links/link-config.js +107 -0
- package/dist/links/link-config.js.map +1 -0
- package/dist/links/maintain.d.ts +37 -0
- package/dist/links/maintain.js +91 -0
- package/dist/links/maintain.js.map +1 -0
- package/dist/links/repair.d.ts +46 -0
- package/dist/links/repair.js +96 -0
- package/dist/links/repair.js.map +1 -0
- package/dist/links/resolve.d.ts +41 -0
- package/dist/links/resolve.js +121 -0
- package/dist/links/resolve.js.map +1 -0
- package/dist/links/stale.d.ts +32 -0
- package/dist/links/stale.js +73 -0
- package/dist/links/stale.js.map +1 -0
- package/dist/markdown/content-hash.d.ts +34 -0
- package/dist/markdown/content-hash.js +46 -0
- package/dist/markdown/content-hash.js.map +1 -0
- package/dist/markdown/frontmatter.d.ts +69 -0
- package/dist/markdown/frontmatter.js +147 -0
- package/dist/markdown/frontmatter.js.map +1 -0
- package/dist/markdown/hash-backfill.d.ts +22 -0
- package/dist/markdown/hash-backfill.js +43 -0
- package/dist/markdown/hash-backfill.js.map +1 -0
- package/dist/mcp/query-syntax.d.ts +20 -0
- package/dist/mcp/query-syntax.js +194 -0
- package/dist/mcp/query-syntax.js.map +1 -0
- package/dist/mcp/render.d.ts +31 -0
- package/dist/mcp/render.js +110 -0
- package/dist/mcp/render.js.map +1 -0
- package/dist/mcp/server.d.ts +60 -0
- package/dist/mcp/server.js +170 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +93 -0
- package/dist/mcp/tools.js +1218 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/rest/conditional.d.ts +37 -0
- package/dist/rest/conditional.js +58 -0
- package/dist/rest/conditional.js.map +1 -0
- package/dist/rest/negotiate.d.ts +33 -0
- package/dist/rest/negotiate.js +54 -0
- package/dist/rest/negotiate.js.map +1 -0
- package/dist/rest/routes.d.ts +37 -0
- package/dist/rest/routes.js +744 -0
- package/dist/rest/routes.js.map +1 -0
- package/dist/seed/fixture-seed.d.ts +35 -0
- package/dist/seed/fixture-seed.js +75 -0
- package/dist/seed/fixture-seed.js.map +1 -0
- package/dist/seed/starship-config.d.ts +3 -0
- package/dist/seed/starship-config.js +5 -0
- package/dist/seed/starship-config.js.map +1 -0
- package/dist/server/headers.d.ts +36 -0
- package/dist/server/headers.js +30 -0
- package/dist/server/headers.js.map +1 -0
- package/dist/server/http-error.d.ts +53 -0
- package/dist/server/http-error.js +104 -0
- package/dist/server/http-error.js.map +1 -0
- package/dist/server/serve.d.ts +56 -0
- package/dist/server/serve.js +135 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/shell/audit.d.ts +32 -0
- package/dist/shell/audit.js +28 -0
- package/dist/shell/audit.js.map +1 -0
- package/dist/shell/guard.d.ts +50 -0
- package/dist/shell/guard.js +176 -0
- package/dist/shell/guard.js.map +1 -0
- package/dist/shell/keys.d.ts +36 -0
- package/dist/shell/keys.js +64 -0
- package/dist/shell/keys.js.map +1 -0
- package/dist/shell/login.d.ts +56 -0
- package/dist/shell/login.js +130 -0
- package/dist/shell/login.js.map +1 -0
- package/dist/shell/oidc.d.ts +62 -0
- package/dist/shell/oidc.js +102 -0
- package/dist/shell/oidc.js.map +1 -0
- package/dist/shell/policy.d.ts +100 -0
- package/dist/shell/policy.js +232 -0
- package/dist/shell/policy.js.map +1 -0
- package/dist/shell/proxy-policy.d.ts +34 -0
- package/dist/shell/proxy-policy.js +120 -0
- package/dist/shell/proxy-policy.js.map +1 -0
- package/dist/shell/proxy.d.ts +47 -0
- package/dist/shell/proxy.js +253 -0
- package/dist/shell/proxy.js.map +1 -0
- package/dist/shell/serve.d.ts +86 -0
- package/dist/shell/serve.js +0 -0
- package/dist/shell/serve.js.map +1 -0
- package/dist/shell/stdio.d.ts +55 -0
- package/dist/shell/stdio.js +63 -0
- package/dist/shell/stdio.js.map +1 -0
- package/dist/storage/registry.d.ts +20 -0
- package/dist/storage/registry.js +38 -0
- package/dist/storage/registry.js.map +1 -0
- package/dist/storage/search-plan.d.ts +93 -0
- package/dist/storage/search-plan.js +15 -0
- package/dist/storage/search-plan.js.map +1 -0
- package/dist/storage/types.d.ts +448 -0
- package/dist/storage/types.js +14 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/versions-since.d.ts +72 -0
- package/dist/storage/versions-since.js +92 -0
- package/dist/storage/versions-since.js.map +1 -0
- package/dist/storage-postgres/adapter.d.ts +17 -0
- package/dist/storage-postgres/adapter.js +782 -0
- package/dist/storage-postgres/adapter.js.map +1 -0
- package/dist/storage-postgres/compile-postgres.d.ts +22 -0
- package/dist/storage-postgres/compile-postgres.js +830 -0
- package/dist/storage-postgres/compile-postgres.js.map +1 -0
- package/dist/storage-postgres/errors.d.ts +34 -0
- package/dist/storage-postgres/errors.js +50 -0
- package/dist/storage-postgres/errors.js.map +1 -0
- package/dist/storage-postgres/migrations/0001_init.sql +113 -0
- package/dist/storage-postgres/migrations/0002_content_hash.sql +7 -0
- package/dist/storage-postgres/migrations/index.d.ts +22 -0
- package/dist/storage-postgres/migrations/index.js +70 -0
- package/dist/storage-postgres/migrations/index.js.map +1 -0
- package/dist/storage-sqlite/adapter.d.ts +2 -0
- package/dist/storage-sqlite/adapter.js +688 -0
- package/dist/storage-sqlite/adapter.js.map +1 -0
- package/dist/storage-sqlite/compile-filter.d.ts +41 -0
- package/dist/storage-sqlite/compile-filter.js +881 -0
- package/dist/storage-sqlite/compile-filter.js.map +1 -0
- package/dist/storage-sqlite/compile-sqlite.d.ts +19 -0
- package/dist/storage-sqlite/compile-sqlite.js +176 -0
- package/dist/storage-sqlite/compile-sqlite.js.map +1 -0
- package/dist/storage-sqlite/migrations/0001_init.sql +123 -0
- package/dist/storage-sqlite/migrations/0002_content_hash.sql +7 -0
- package/dist/storage-sqlite/migrations/index.d.ts +6 -0
- package/dist/storage-sqlite/migrations/index.js +41 -0
- package/dist/storage-sqlite/migrations/index.js.map +1 -0
- package/dist/storage-sqlite/vec.d.ts +40 -0
- package/dist/storage-sqlite/vec.js +62 -0
- package/dist/storage-sqlite/vec.js.map +1 -0
- package/dist/sync/cursor.d.ts +36 -0
- package/dist/sync/cursor.js +66 -0
- package/dist/sync/cursor.js.map +1 -0
- package/dist/sync/daemon.d.ts +40 -0
- package/dist/sync/daemon.js +202 -0
- package/dist/sync/daemon.js.map +1 -0
- package/dist/sync/feed.d.ts +38 -0
- package/dist/sync/feed.js +125 -0
- package/dist/sync/feed.js.map +1 -0
- package/dist/sync/fs-store.d.ts +8 -0
- package/dist/sync/fs-store.js +76 -0
- package/dist/sync/fs-store.js.map +1 -0
- package/dist/sync/intrinsics.d.ts +52 -0
- package/dist/sync/intrinsics.js +76 -0
- package/dist/sync/intrinsics.js.map +1 -0
- package/dist/sync/paths.d.ts +38 -0
- package/dist/sync/paths.js +56 -0
- package/dist/sync/paths.js.map +1 -0
- package/dist/sync/push.d.ts +48 -0
- package/dist/sync/push.js +328 -0
- package/dist/sync/push.js.map +1 -0
- package/dist/sync/reconcile.d.ts +54 -0
- package/dist/sync/reconcile.js +252 -0
- package/dist/sync/reconcile.js.map +1 -0
- package/dist/sync/run.d.ts +27 -0
- package/dist/sync/run.js +46 -0
- package/dist/sync/run.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../../src/kernel/kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path config layering — design §3.5.2.
|
|
3
|
+
*
|
|
4
|
+
* HARDCODED_DEFAULTS → server config → per-repo override
|
|
5
|
+
* (in code) (operator) (repos.path_config JSON)
|
|
6
|
+
*
|
|
7
|
+
* Non-null replaces the *field it sets*, not deep-merged. A repo that
|
|
8
|
+
* sets `hidden_sigils: [".", "_"]` sees exactly that; other fields still
|
|
9
|
+
* inherit from the server. Startup invariants (below) protect operators
|
|
10
|
+
* from configs that would make the system unusable — the server refuses
|
|
11
|
+
* to start if server config violates them, and `repos.set_path_config`
|
|
12
|
+
* rejects a per-repo override the same way.
|
|
13
|
+
*
|
|
14
|
+
* Slugs are validated against server-level config only (§3.5.6) — the
|
|
15
|
+
* per-repo override doesn't apply to slug validation.
|
|
16
|
+
*/
|
|
17
|
+
import { type EffectivePathConfig } from "./validation.js";
|
|
18
|
+
/**
|
|
19
|
+
* Optional per-field override — the shape stored in `repos.path_config`
|
|
20
|
+
* JSON and accepted by `repos.set_path_config`. Omitting a field means
|
|
21
|
+
* "inherit"; setting it means "replace the inherited value wholesale."
|
|
22
|
+
*/
|
|
23
|
+
export type PathConfigOverride = {
|
|
24
|
+
disallowed_chars?: string[];
|
|
25
|
+
system_sigils?: string[];
|
|
26
|
+
hidden_sigils?: string[];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The full config after merging tiers — every field populated. All kernel
|
|
30
|
+
* code that validates paths/slugs takes this shape (see validation.ts).
|
|
31
|
+
*/
|
|
32
|
+
export type PathConfig = EffectivePathConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Hardcoded defaults (design §3.5.2). One constant, source of truth.
|
|
35
|
+
* Obsidian's cross-platform-safe rule minus `/`.
|
|
36
|
+
*/
|
|
37
|
+
export declare const HARDCODED_DEFAULTS: PathConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Replace-not-merge per field (design §3.5.2 tier 3): if override.X is set,
|
|
40
|
+
* result.X = override.X; otherwise result.X inherits from base.
|
|
41
|
+
*/
|
|
42
|
+
export declare function mergeConfig(base: PathConfig, override: PathConfigOverride | null): PathConfig;
|
|
43
|
+
/**
|
|
44
|
+
* Compute the effective config for a repo (design §3.5.2).
|
|
45
|
+
*
|
|
46
|
+
* effective = merge(server, repo_override) where server = merge(defaults, server_override)
|
|
47
|
+
*
|
|
48
|
+
* `serverConfig` is expected to already be validated (see validateConfig
|
|
49
|
+
* called at startup). This function does NOT re-validate — a caller who
|
|
50
|
+
* takes an override from `repos.set_path_config` must validate the
|
|
51
|
+
* resulting merge themselves before persisting.
|
|
52
|
+
*/
|
|
53
|
+
export declare function effectivePathConfig(serverConfig: PathConfig, repoOverride: PathConfigOverride | null): PathConfig;
|
|
54
|
+
/**
|
|
55
|
+
* Parse the JSON text stored in `repos.path_config`. Null → null.
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseRepoOverride(json: string | null): PathConfigOverride | null;
|
|
58
|
+
/**
|
|
59
|
+
* Thrown at startup when server config violates an invariant. Deliberately
|
|
60
|
+
* not a KernelError — this is a configuration error the operator must fix
|
|
61
|
+
* before the server starts, not a runtime error the API returns.
|
|
62
|
+
*/
|
|
63
|
+
export declare class ConfigError extends Error {
|
|
64
|
+
constructor(message: string);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Validate a fully-merged PathConfig against design §3.5.2's invariants:
|
|
68
|
+
*
|
|
69
|
+
* • Every disallowed_chars entry is a single character; every sigil is
|
|
70
|
+
* a non-empty string.
|
|
71
|
+
* • PATH_SEPARATOR appears in no entry of any list.
|
|
72
|
+
* • No sigil is a prefix of any other sigil, across BOTH lists.
|
|
73
|
+
* (With multi-char sigils, plain set-disjointness isn't enough:
|
|
74
|
+
* ":" vs ":h" would classify ":hfoo" both ways. Forbidding prefix
|
|
75
|
+
* relations makes segment classification unambiguous.)
|
|
76
|
+
* • No hidden sigil contains a character from disallowed_chars
|
|
77
|
+
* (users must be able to write the prefixes they use to hide
|
|
78
|
+
* their own folders). System sigils may — users never write those.
|
|
79
|
+
* • Both sigil lists are non-empty (otherwise the kernel has no
|
|
80
|
+
* canonical sigil to emit under).
|
|
81
|
+
*
|
|
82
|
+
* Throws ConfigError on the first violation, with a human-readable message.
|
|
83
|
+
*/
|
|
84
|
+
export declare function validateConfig(config: PathConfig): void;
|
|
85
|
+
/**
|
|
86
|
+
* Validate a PathConfigOverride BEFORE merging — used by
|
|
87
|
+
* `repos.set_path_config`. Fields that are set must merge cleanly against
|
|
88
|
+
* the current server config.
|
|
89
|
+
*/
|
|
90
|
+
export declare function validateRepoOverride(override: PathConfigOverride, serverConfig: PathConfig): void;
|
|
91
|
+
export type PathWarning = {
|
|
92
|
+
version_id: string;
|
|
93
|
+
path: string;
|
|
94
|
+
reason: string;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Convert a validation error thrown during a re-scan into a wire-friendly
|
|
98
|
+
* PathWarning. Used by `repos.set_path_config` to produce the advisory list
|
|
99
|
+
* of currently-live paths that would fail the new config (§3.5.3).
|
|
100
|
+
*/
|
|
101
|
+
export declare function pathWarning(versionId: string, path: string, err: unknown): PathWarning;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path config layering — design §3.5.2.
|
|
3
|
+
*
|
|
4
|
+
* HARDCODED_DEFAULTS → server config → per-repo override
|
|
5
|
+
* (in code) (operator) (repos.path_config JSON)
|
|
6
|
+
*
|
|
7
|
+
* Non-null replaces the *field it sets*, not deep-merged. A repo that
|
|
8
|
+
* sets `hidden_sigils: [".", "_"]` sees exactly that; other fields still
|
|
9
|
+
* inherit from the server. Startup invariants (below) protect operators
|
|
10
|
+
* from configs that would make the system unusable — the server refuses
|
|
11
|
+
* to start if server config violates them, and `repos.set_path_config`
|
|
12
|
+
* rejects a per-repo override the same way.
|
|
13
|
+
*
|
|
14
|
+
* Slugs are validated against server-level config only (§3.5.6) — the
|
|
15
|
+
* per-repo override doesn't apply to slug validation.
|
|
16
|
+
*/
|
|
17
|
+
import { KernelError } from "./errors.js";
|
|
18
|
+
import { PATH_SEPARATOR } from "./validation.js";
|
|
19
|
+
/**
|
|
20
|
+
* Hardcoded defaults (design §3.5.2). One constant, source of truth.
|
|
21
|
+
* Obsidian's cross-platform-safe rule minus `/`.
|
|
22
|
+
*/
|
|
23
|
+
export const HARDCODED_DEFAULTS = {
|
|
24
|
+
disallowed_chars: ["\\", "<", ">", ":", "|", "?", '"'],
|
|
25
|
+
system_sigils: [":"],
|
|
26
|
+
hidden_sigils: ["."],
|
|
27
|
+
};
|
|
28
|
+
// -----------------------------------------------------------------------------
|
|
29
|
+
// Merging.
|
|
30
|
+
// -----------------------------------------------------------------------------
|
|
31
|
+
/**
|
|
32
|
+
* Replace-not-merge per field (design §3.5.2 tier 3): if override.X is set,
|
|
33
|
+
* result.X = override.X; otherwise result.X inherits from base.
|
|
34
|
+
*/
|
|
35
|
+
export function mergeConfig(base, override) {
|
|
36
|
+
if (!override)
|
|
37
|
+
return base;
|
|
38
|
+
return {
|
|
39
|
+
disallowed_chars: override.disallowed_chars ?? base.disallowed_chars,
|
|
40
|
+
system_sigils: override.system_sigils ?? base.system_sigils,
|
|
41
|
+
hidden_sigils: override.hidden_sigils ?? base.hidden_sigils,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Compute the effective config for a repo (design §3.5.2).
|
|
46
|
+
*
|
|
47
|
+
* effective = merge(server, repo_override) where server = merge(defaults, server_override)
|
|
48
|
+
*
|
|
49
|
+
* `serverConfig` is expected to already be validated (see validateConfig
|
|
50
|
+
* called at startup). This function does NOT re-validate — a caller who
|
|
51
|
+
* takes an override from `repos.set_path_config` must validate the
|
|
52
|
+
* resulting merge themselves before persisting.
|
|
53
|
+
*/
|
|
54
|
+
export function effectivePathConfig(serverConfig, repoOverride) {
|
|
55
|
+
return mergeConfig(serverConfig, repoOverride);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse the JSON text stored in `repos.path_config`. Null → null.
|
|
59
|
+
*/
|
|
60
|
+
export function parseRepoOverride(json) {
|
|
61
|
+
if (json === null)
|
|
62
|
+
return null;
|
|
63
|
+
const parsed = JSON.parse(json);
|
|
64
|
+
if (parsed === null || parsed === undefined)
|
|
65
|
+
return null;
|
|
66
|
+
if (typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
67
|
+
throw new Error(`corrupt repos.path_config JSON: expected object, got ${typeof parsed}`);
|
|
68
|
+
}
|
|
69
|
+
return parsed;
|
|
70
|
+
}
|
|
71
|
+
// -----------------------------------------------------------------------------
|
|
72
|
+
// Startup invariants (design §3.5.2).
|
|
73
|
+
// -----------------------------------------------------------------------------
|
|
74
|
+
/**
|
|
75
|
+
* Thrown at startup when server config violates an invariant. Deliberately
|
|
76
|
+
* not a KernelError — this is a configuration error the operator must fix
|
|
77
|
+
* before the server starts, not a runtime error the API returns.
|
|
78
|
+
*/
|
|
79
|
+
export class ConfigError extends Error {
|
|
80
|
+
constructor(message) {
|
|
81
|
+
super(message);
|
|
82
|
+
this.name = "ConfigError";
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Validate a fully-merged PathConfig against design §3.5.2's invariants:
|
|
87
|
+
*
|
|
88
|
+
* • Every disallowed_chars entry is a single character; every sigil is
|
|
89
|
+
* a non-empty string.
|
|
90
|
+
* • PATH_SEPARATOR appears in no entry of any list.
|
|
91
|
+
* • No sigil is a prefix of any other sigil, across BOTH lists.
|
|
92
|
+
* (With multi-char sigils, plain set-disjointness isn't enough:
|
|
93
|
+
* ":" vs ":h" would classify ":hfoo" both ways. Forbidding prefix
|
|
94
|
+
* relations makes segment classification unambiguous.)
|
|
95
|
+
* • No hidden sigil contains a character from disallowed_chars
|
|
96
|
+
* (users must be able to write the prefixes they use to hide
|
|
97
|
+
* their own folders). System sigils may — users never write those.
|
|
98
|
+
* • Both sigil lists are non-empty (otherwise the kernel has no
|
|
99
|
+
* canonical sigil to emit under).
|
|
100
|
+
*
|
|
101
|
+
* Throws ConfigError on the first violation, with a human-readable message.
|
|
102
|
+
*/
|
|
103
|
+
export function validateConfig(config) {
|
|
104
|
+
// 1. Char-vs-string discipline.
|
|
105
|
+
for (const ch of config.disallowed_chars) {
|
|
106
|
+
if (typeof ch !== "string" || Array.from(ch).length !== 1) {
|
|
107
|
+
throw new ConfigError(`disallowed_chars entry must be a single character, got ${JSON.stringify(ch)}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
for (const sigil of [...config.system_sigils, ...config.hidden_sigils]) {
|
|
111
|
+
if (typeof sigil !== "string" || sigil.length === 0) {
|
|
112
|
+
throw new ConfigError(`sigil must be a non-empty string, got ${JSON.stringify(sigil)}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// 2. No PATH_SEPARATOR anywhere.
|
|
116
|
+
for (const list of [config.disallowed_chars, config.system_sigils, config.hidden_sigils]) {
|
|
117
|
+
for (const entry of list) {
|
|
118
|
+
if (entry.includes(PATH_SEPARATOR)) {
|
|
119
|
+
throw new ConfigError(`entries cannot contain the path separator '${PATH_SEPARATOR}': got ${JSON.stringify(entry)}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// 3. No sigil is a prefix of any other sigil, across the union.
|
|
124
|
+
const allSigils = [...config.system_sigils, ...config.hidden_sigils];
|
|
125
|
+
for (let i = 0; i < allSigils.length; i++) {
|
|
126
|
+
for (let j = 0; j < allSigils.length; j++) {
|
|
127
|
+
if (i === j)
|
|
128
|
+
continue;
|
|
129
|
+
const a = allSigils[i];
|
|
130
|
+
const b = allSigils[j];
|
|
131
|
+
if (b.startsWith(a)) {
|
|
132
|
+
throw new ConfigError(`sigil ${JSON.stringify(a)} is a prefix of sigil ${JSON.stringify(b)} — segment classification would be ambiguous`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// 4. No hidden sigil contains a disallowed char.
|
|
137
|
+
for (const sigil of config.hidden_sigils) {
|
|
138
|
+
for (const ch of config.disallowed_chars) {
|
|
139
|
+
if (sigil.includes(ch)) {
|
|
140
|
+
throw new ConfigError(`hidden sigil ${JSON.stringify(sigil)} contains disallowed character ${JSON.stringify(ch)} — users could not write it`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// 5. Both sigil lists non-empty.
|
|
145
|
+
if (config.system_sigils.length === 0) {
|
|
146
|
+
throw new ConfigError("system_sigils must be non-empty");
|
|
147
|
+
}
|
|
148
|
+
if (config.hidden_sigils.length === 0) {
|
|
149
|
+
throw new ConfigError("hidden_sigils must be non-empty");
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validate a PathConfigOverride BEFORE merging — used by
|
|
154
|
+
* `repos.set_path_config`. Fields that are set must merge cleanly against
|
|
155
|
+
* the current server config.
|
|
156
|
+
*/
|
|
157
|
+
export function validateRepoOverride(override, serverConfig) {
|
|
158
|
+
validateConfig(mergeConfig(serverConfig, override));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Convert a validation error thrown during a re-scan into a wire-friendly
|
|
162
|
+
* PathWarning. Used by `repos.set_path_config` to produce the advisory list
|
|
163
|
+
* of currently-live paths that would fail the new config (§3.5.3).
|
|
164
|
+
*/
|
|
165
|
+
export function pathWarning(versionId, path, err) {
|
|
166
|
+
const reason = err instanceof KernelError
|
|
167
|
+
? (err.data.reason ?? err.code)
|
|
168
|
+
: err.message;
|
|
169
|
+
return { version_id: versionId, path, reason };
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=path-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-config.js","sourceRoot":"","sources":["../../src/kernel/path-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrow AST types over @bufbuild/cel's protobuf ParsedExpr, plus small
|
|
3
|
+
* predicates the compiler uses to dispatch on `exprKind.case`.
|
|
4
|
+
*
|
|
5
|
+
* We don't try to re-declare the full CEL AST — @bufbuild/cel-spec exports
|
|
6
|
+
* the generated types. This file is just the seam the compiler imports from,
|
|
7
|
+
* so an eventual parser swap (§7.1) only touches cel-parse.ts.
|
|
8
|
+
*/
|
|
9
|
+
import type { Expr } from "@bufbuild/cel-spec/cel/expr/syntax_pb.js";
|
|
10
|
+
export type CelExpr = Expr;
|
|
11
|
+
export type ExprKind = Expr["exprKind"]["case"];
|
|
12
|
+
/**
|
|
13
|
+
* The CEL constant kinds we compile. Numeric bigints (`int64Value`) become
|
|
14
|
+
* JS numbers when small; uints become bigints only if they exceed Number's
|
|
15
|
+
* safe range.
|
|
16
|
+
*/
|
|
17
|
+
export type ConstantValue = string | number | bigint | boolean | null;
|
|
18
|
+
export declare function unwrapConstant(expr: CelExpr): ConstantValue | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* If the expression is a call to `list(x)`, return x. Used by the `@in`
|
|
21
|
+
* compiler and comprehension compilers to detect the polymorphic-scalar-
|
|
22
|
+
* or-list hint (§5.2).
|
|
23
|
+
*/
|
|
24
|
+
export declare function unwrapListHint(expr: CelExpr): CelExpr | undefined;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrow AST types over @bufbuild/cel's protobuf ParsedExpr, plus small
|
|
3
|
+
* predicates the compiler uses to dispatch on `exprKind.case`.
|
|
4
|
+
*
|
|
5
|
+
* We don't try to re-declare the full CEL AST — @bufbuild/cel-spec exports
|
|
6
|
+
* the generated types. This file is just the seam the compiler imports from,
|
|
7
|
+
* so an eventual parser swap (§7.1) only touches cel-parse.ts.
|
|
8
|
+
*/
|
|
9
|
+
export function unwrapConstant(expr) {
|
|
10
|
+
if (expr.exprKind.case !== "constExpr")
|
|
11
|
+
return undefined;
|
|
12
|
+
const k = expr.exprKind.value.constantKind;
|
|
13
|
+
if (!k)
|
|
14
|
+
return undefined;
|
|
15
|
+
switch (k.case) {
|
|
16
|
+
case "stringValue":
|
|
17
|
+
return k.value;
|
|
18
|
+
case "boolValue":
|
|
19
|
+
return k.value;
|
|
20
|
+
case "int64Value":
|
|
21
|
+
return typeof k.value === "bigint" &&
|
|
22
|
+
k.value <= BigInt(Number.MAX_SAFE_INTEGER) &&
|
|
23
|
+
k.value >= BigInt(Number.MIN_SAFE_INTEGER)
|
|
24
|
+
? Number(k.value)
|
|
25
|
+
: k.value;
|
|
26
|
+
case "uint64Value":
|
|
27
|
+
return typeof k.value === "bigint" && k.value <= BigInt(Number.MAX_SAFE_INTEGER)
|
|
28
|
+
? Number(k.value)
|
|
29
|
+
: k.value;
|
|
30
|
+
case "doubleValue":
|
|
31
|
+
return k.value;
|
|
32
|
+
case "nullValue":
|
|
33
|
+
return null;
|
|
34
|
+
default:
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* If the expression is a call to `list(x)`, return x. Used by the `@in`
|
|
40
|
+
* compiler and comprehension compilers to detect the polymorphic-scalar-
|
|
41
|
+
* or-list hint (§5.2).
|
|
42
|
+
*/
|
|
43
|
+
export function unwrapListHint(expr) {
|
|
44
|
+
if (expr.exprKind.case !== "callExpr")
|
|
45
|
+
return undefined;
|
|
46
|
+
const call = expr.exprKind.value;
|
|
47
|
+
if (call.function === "list" && call.target === undefined && call.args.length === 1) {
|
|
48
|
+
return call.args[0];
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/kernel/query/ast.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,SAAS,CAAC;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;IAC3C,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAChC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC1C,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC1C,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC9E,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACd,KAAK,aAAa;YAChB,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,IAAI,CAAC;QACd;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CEL parser wrapper — design §5.1 / §7.1, superseded by m2-plan §1.
|
|
3
|
+
*
|
|
4
|
+
* The design pinned `cel-go` compiled to WASM. In M2 we use `@bufbuild/cel`
|
|
5
|
+
* (a TS-native CEL parser from the Buf team, spec-conformant) instead. The
|
|
6
|
+
* result of `parse()` is the standard CEL protobuf `ParsedExpr` — the exact
|
|
7
|
+
* same shape `cel-go` emits — so the AST→SQL compiler stays portable across
|
|
8
|
+
* parser choices. If we later need to swap to `cel-go`/WASM for M5 parity,
|
|
9
|
+
* only this file changes; the compiler doesn't.
|
|
10
|
+
*
|
|
11
|
+
* The design's `$`-prefixed intrinsics (`$path`, `$updated_at`, `$body`)
|
|
12
|
+
* are not legal identifiers in standard CEL. Rather than patch the grammar,
|
|
13
|
+
* we preprocess: `$foo` → `__mrplex_i_foo` before parsing, and the storage
|
|
14
|
+
* compilers under storage-sqlite / storage-postgres resolve the mangled
|
|
15
|
+
* names to columns. The preprocessor is string-literal-aware so
|
|
16
|
+
* `contains(body, "$foo")` is untouched.
|
|
17
|
+
*/
|
|
18
|
+
import type { ParsedExpr } from "@bufbuild/cel-spec/cel/expr/syntax_pb.js";
|
|
19
|
+
/**
|
|
20
|
+
* Sentinel prefix for mangled intrinsic identifiers. Deliberately unlikely
|
|
21
|
+
* to collide with real user frontmatter names — mrplex isn't yet exposing
|
|
22
|
+
* `__mrplex_*` to frontmatter, and the AST walker only unmangles idents
|
|
23
|
+
* that pass this exact prefix.
|
|
24
|
+
*/
|
|
25
|
+
export declare const INTRINSIC_PREFIX = "__mrplex_i_";
|
|
26
|
+
/**
|
|
27
|
+
* Preprocess `$identifier` sequences into the mangled form, skipping over
|
|
28
|
+
* CEL string literal content. Both single- and double-quoted strings are
|
|
29
|
+
* respected, including `\`-escaped quote chars inside them.
|
|
30
|
+
*/
|
|
31
|
+
export declare function preprocessDollarIdents(source: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a CEL expression string into a ParsedExpr AST. Preprocesses
|
|
34
|
+
* `$`-prefixed intrinsics and surfaces parser errors as
|
|
35
|
+
* `KernelError("filter_invalid", { source, error })`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseCel(source: string): ParsedExpr;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CEL parser wrapper — design §5.1 / §7.1, superseded by m2-plan §1.
|
|
3
|
+
*
|
|
4
|
+
* The design pinned `cel-go` compiled to WASM. In M2 we use `@bufbuild/cel`
|
|
5
|
+
* (a TS-native CEL parser from the Buf team, spec-conformant) instead. The
|
|
6
|
+
* result of `parse()` is the standard CEL protobuf `ParsedExpr` — the exact
|
|
7
|
+
* same shape `cel-go` emits — so the AST→SQL compiler stays portable across
|
|
8
|
+
* parser choices. If we later need to swap to `cel-go`/WASM for M5 parity,
|
|
9
|
+
* only this file changes; the compiler doesn't.
|
|
10
|
+
*
|
|
11
|
+
* The design's `$`-prefixed intrinsics (`$path`, `$updated_at`, `$body`)
|
|
12
|
+
* are not legal identifiers in standard CEL. Rather than patch the grammar,
|
|
13
|
+
* we preprocess: `$foo` → `__mrplex_i_foo` before parsing, and the storage
|
|
14
|
+
* compilers under storage-sqlite / storage-postgres resolve the mangled
|
|
15
|
+
* names to columns. The preprocessor is string-literal-aware so
|
|
16
|
+
* `contains(body, "$foo")` is untouched.
|
|
17
|
+
*/
|
|
18
|
+
import { parse } from "@bufbuild/cel";
|
|
19
|
+
import { INTRINSIC_SIGIL } from "../constants.js";
|
|
20
|
+
import { KernelError } from "../errors.js";
|
|
21
|
+
/**
|
|
22
|
+
* Sentinel prefix for mangled intrinsic identifiers. Deliberately unlikely
|
|
23
|
+
* to collide with real user frontmatter names — mrplex isn't yet exposing
|
|
24
|
+
* `__mrplex_*` to frontmatter, and the AST walker only unmangles idents
|
|
25
|
+
* that pass this exact prefix.
|
|
26
|
+
*/
|
|
27
|
+
export const INTRINSIC_PREFIX = "__mrplex_i_";
|
|
28
|
+
/**
|
|
29
|
+
* Preprocess `$identifier` sequences into the mangled form, skipping over
|
|
30
|
+
* CEL string literal content. Both single- and double-quoted strings are
|
|
31
|
+
* respected, including `\`-escaped quote chars inside them.
|
|
32
|
+
*/
|
|
33
|
+
export function preprocessDollarIdents(source) {
|
|
34
|
+
let out = "";
|
|
35
|
+
let i = 0;
|
|
36
|
+
let inString = null;
|
|
37
|
+
while (i < source.length) {
|
|
38
|
+
const ch = source[i];
|
|
39
|
+
if (inString !== null) {
|
|
40
|
+
out += ch;
|
|
41
|
+
if (ch === "\\" && i + 1 < source.length) {
|
|
42
|
+
// Preserve the escape sequence verbatim.
|
|
43
|
+
out += source[i + 1];
|
|
44
|
+
i += 2;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (ch === inString)
|
|
48
|
+
inString = null;
|
|
49
|
+
i++;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (ch === '"' || ch === "'") {
|
|
53
|
+
inString = ch;
|
|
54
|
+
out += ch;
|
|
55
|
+
i++;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (ch === INTRINSIC_SIGIL) {
|
|
59
|
+
const match = source.slice(i + 1).match(/^([A-Za-z_][A-Za-z0-9_]*)/);
|
|
60
|
+
if (match?.[1]) {
|
|
61
|
+
out += INTRINSIC_PREFIX + match[1];
|
|
62
|
+
i += 1 + match[1].length;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
out += ch;
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Parse a CEL expression string into a ParsedExpr AST. Preprocesses
|
|
73
|
+
* `$`-prefixed intrinsics and surfaces parser errors as
|
|
74
|
+
* `KernelError("filter_invalid", { source, error })`.
|
|
75
|
+
*/
|
|
76
|
+
export function parseCel(source) {
|
|
77
|
+
const preprocessed = preprocessDollarIdents(source);
|
|
78
|
+
try {
|
|
79
|
+
return parse(preprocessed);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
throw new KernelError("filter_invalid", {
|
|
83
|
+
source,
|
|
84
|
+
error: err.message,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=cel-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cel-parse.js","sourceRoot":"","sources":["../../../src/kernel/query/cel-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,QAAQ,GAAqB,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAW,CAAC;QAC/B,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,GAAG,IAAI,EAAE,CAAC;YACV,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBACzC,yCAAyC;gBACzC,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;gBAC/B,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,QAAQ;gBAAE,QAAQ,GAAG,IAAI,CAAC;YACrC,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC7B,QAAQ,GAAG,EAAE,CAAC;YACd,GAAG,IAAI,EAAE,CAAC;YACV,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACrE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,GAAG,IAAI,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzB,SAAS;YACX,CAAC;QACH,CAAC;QACD,GAAG,IAAI,EAAE,CAAC;QACV,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE;YACtC,MAAM;YACN,KAAK,EAAG,GAAa,CAAC,OAAO;SAC9B,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `$degrees` binding for the graph read surface (docs/graph-plan.md §2.1,
|
|
3
|
+
* decision 5). `$degrees` is a scalar CEL intrinsic legal ONLY inside a
|
|
4
|
+
* `graph` call's `filter`: the minimum hops from the nearest root at which a
|
|
5
|
+
* document was reached.
|
|
6
|
+
*
|
|
7
|
+
* BFS visits every document at its minimal distance first, and the filter can
|
|
8
|
+
* only *prune* (visibility is monotone), so every candidate in round `r`
|
|
9
|
+
* shares `$degrees = r`. We exploit that: compile the filter once per round
|
|
10
|
+
* with `$degrees` inlined as an integer constant, then reuse the existing
|
|
11
|
+
* query-compilation machinery unchanged. This module does the inlining by
|
|
12
|
+
* rewriting the parsed CEL AST — the parser mangles `$degrees` to
|
|
13
|
+
* `__mrplex_i_degrees` (cel-parse.ts), and here we replace that ident with an
|
|
14
|
+
* `int64` constant node. Neither dialect compiler needs to know `$degrees`
|
|
15
|
+
* exists.
|
|
16
|
+
*
|
|
17
|
+
* A `$degrees` reference outside a `graph` filter reaches a dialect compiler
|
|
18
|
+
* as an unknown intrinsic and fails `filter_invalid` there — which is the
|
|
19
|
+
* desired only-in-graph behavior (decision 14).
|
|
20
|
+
*/
|
|
21
|
+
import type { CelExpr } from "./ast.js";
|
|
22
|
+
/** The mangled ident the parser produces for `$degrees`. */
|
|
23
|
+
export declare const DEGREES_MANGLED = "__mrplex_i_degrees";
|
|
24
|
+
/**
|
|
25
|
+
* Return a copy of `ast` with every `$degrees` reference replaced by the
|
|
26
|
+
* integer literal `value`. Pure — the input AST is never mutated, so the
|
|
27
|
+
* per-round callers can re-bind the same parsed filter for each round.
|
|
28
|
+
*/
|
|
29
|
+
export declare function bindDegrees(ast: CelExpr, value: number): CelExpr;
|
|
30
|
+
/** True if the parsed filter references `$degrees` anywhere. */
|
|
31
|
+
export declare function referencesDegrees(expr: CelExpr): boolean;
|